| | @@ -0,0 +1,18982 @@ |
| 1 | +#include <stdlib.h>
|
| 2 | +#include <assert.h>
|
| 3 | +#include <stdio.h>
|
| 4 | +#include "cmark_amalgamation.h"
|
| 5 | +
|
| 6 | +int cmark_version() { return CMARK_VERSION; }
|
| 7 | +
|
| 8 | +/* Generated by re2c 0.16 */
|
| 9 | +bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
|
| 10 | + bufsize_t offset) {
|
| 11 | + bufsize_t res;
|
| 12 | + unsigned char *ptr = (unsigned char *)c->data;
|
| 13 | +
|
| 14 | + if (ptr == NULL || offset > c->len) {
|
| 15 | + return 0;
|
| 16 | + } else {
|
| 17 | + unsigned char lim = ptr[c->len];
|
| 18 | +
|
| 19 | + ptr[c->len] = '\0';
|
| 20 | + res = scanner(ptr + offset);
|
| 21 | + ptr[c->len] = lim;
|
| 22 | + }
|
| 23 | +
|
| 24 | + return res;
|
| 25 | +}
|
| 26 | +
|
| 27 | +// Try to match a scheme including colon.
|
| 28 | +bufsize_t _scan_scheme(const unsigned char *p) {
|
| 29 | + const unsigned char *marker = NULL;
|
| 30 | + const unsigned char *start = p;
|
| 31 | +
|
| 32 | + {
|
| 33 | + unsigned char yych;
|
| 34 | + yych = *p;
|
| 35 | + if (yych <= '@')
|
| 36 | + goto yy2;
|
| 37 | + if (yych <= 'Z')
|
| 38 | + goto yy4;
|
| 39 | + if (yych <= '`')
|
| 40 | + goto yy2;
|
| 41 | + if (yych <= 'z')
|
| 42 | + goto yy4;
|
| 43 | + yy2:
|
| 44 | + ++p;
|
| 45 | + yy3 : { return 0; }
|
| 46 | + yy4:
|
| 47 | + yych = *(marker = ++p);
|
| 48 | + if (yych <= '/') {
|
| 49 | + if (yych <= '+') {
|
| 50 | + if (yych <= '*')
|
| 51 | + goto yy3;
|
| 52 | + } else {
|
| 53 | + if (yych <= ',')
|
| 54 | + goto yy3;
|
| 55 | + if (yych >= '/')
|
| 56 | + goto yy3;
|
| 57 | + }
|
| 58 | + } else {
|
| 59 | + if (yych <= 'Z') {
|
| 60 | + if (yych <= '9')
|
| 61 | + goto yy5;
|
| 62 | + if (yych <= '@')
|
| 63 | + goto yy3;
|
| 64 | + } else {
|
| 65 | + if (yych <= '`')
|
| 66 | + goto yy3;
|
| 67 | + if (yych >= '{')
|
| 68 | + goto yy3;
|
| 69 | + }
|
| 70 | + }
|
| 71 | + yy5:
|
| 72 | + yych = *++p;
|
| 73 | + if (yych <= '9') {
|
| 74 | + if (yych <= ',') {
|
| 75 | + if (yych == '+')
|
| 76 | + goto yy7;
|
| 77 | + } else {
|
| 78 | + if (yych != '/')
|
| 79 | + goto yy7;
|
| 80 | + }
|
| 81 | + } else {
|
| 82 | + if (yych <= 'Z') {
|
| 83 | + if (yych <= ':')
|
| 84 | + goto yy8;
|
| 85 | + if (yych >= 'A')
|
| 86 | + goto yy7;
|
| 87 | + } else {
|
| 88 | + if (yych <= '`')
|
| 89 | + goto yy6;
|
| 90 | + if (yych <= 'z')
|
| 91 | + goto yy7;
|
| 92 | + }
|
| 93 | + }
|
| 94 | + yy6:
|
| 95 | + p = marker;
|
| 96 | + goto yy3;
|
| 97 | + yy7:
|
| 98 | + yych = *++p;
|
| 99 | + if (yych <= '9') {
|
| 100 | + if (yych <= ',') {
|
| 101 | + if (yych == '+')
|
| 102 | + goto yy10;
|
| 103 | + goto yy6;
|
| 104 | + } else {
|
| 105 | + if (yych == '/')
|
| 106 | + goto yy6;
|
| 107 | + goto yy10;
|
| 108 | + }
|
| 109 | + } else {
|
| 110 | + if (yych <= 'Z') {
|
| 111 | + if (yych <= ':')
|
| 112 | + goto yy8;
|
| 113 | + if (yych <= '@')
|
| 114 | + goto yy6;
|
| 115 | + goto yy10;
|
| 116 | + } else {
|
| 117 | + if (yych <= '`')
|
| 118 | + goto yy6;
|
| 119 | + if (yych <= 'z')
|
| 120 | + goto yy10;
|
| 121 | + goto yy6;
|
| 122 | + }
|
| 123 | + }
|
| 124 | + yy8:
|
| 125 | + ++p;
|
| 126 | + { return (bufsize_t)(p - start); }
|
| 127 | + yy10:
|
| 128 | + yych = *++p;
|
| 129 | + if (yych <= '9') {
|
| 130 | + if (yych <= ',') {
|
| 131 | + if (yych != '+')
|
| 132 | + goto yy6;
|
| 133 | + } else {
|
| 134 | + if (yych == '/')
|
| 135 | + goto yy6;
|
| 136 | + }
|
| 137 | + } else {
|
| 138 | + if (yych <= 'Z') {
|
| 139 | + if (yych <= ':')
|
| 140 | + goto yy8;
|
| 141 | + if (yych <= '@')
|
| 142 | + goto yy6;
|
| 143 | + } else {
|
| 144 | + if (yych <= '`')
|
| 145 | + goto yy6;
|
| 146 | + if (yych >= '{')
|
| 147 | + goto yy6;
|
| 148 | + }
|
| 149 | + }
|
| 150 | + yych = *++p;
|
| 151 | + if (yych <= '9') {
|
| 152 | + if (yych <= ',') {
|
| 153 | + if (yych != '+')
|
| 154 | + goto yy6;
|
| 155 | + } else {
|
| 156 | + if (yych == '/')
|
| 157 | + goto yy6;
|
| 158 | + }
|
| 159 | + } else {
|
| 160 | + if (yych <= 'Z') {
|
| 161 | + if (yych <= ':')
|
| 162 | + goto yy8;
|
| 163 | + if (yych <= '@')
|
| 164 | + goto yy6;
|
| 165 | + } else {
|
| 166 | + if (yych <= '`')
|
| 167 | + goto yy6;
|
| 168 | + if (yych >= '{')
|
| 169 | + goto yy6;
|
| 170 | + }
|
| 171 | + }
|
| 172 | + yych = *++p;
|
| 173 | + if (yych <= '9') {
|
| 174 | + if (yych <= ',') {
|
| 175 | + if (yych != '+')
|
| 176 | + goto yy6;
|
| 177 | + } else {
|
| 178 | + if (yych == '/')
|
| 179 | + goto yy6;
|
| 180 | + }
|
| 181 | + } else {
|
| 182 | + if (yych <= 'Z') {
|
| 183 | + if (yych <= ':')
|
| 184 | + goto yy8;
|
| 185 | + if (yych <= '@')
|
| 186 | + goto yy6;
|
| 187 | + } else {
|
| 188 | + if (yych <= '`')
|
| 189 | + goto yy6;
|
| 190 | + if (yych >= '{')
|
| 191 | + goto yy6;
|
| 192 | + }
|
| 193 | + }
|
| 194 | + yych = *++p;
|
| 195 | + if (yych <= '9') {
|
| 196 | + if (yych <= ',') {
|
| 197 | + if (yych != '+')
|
| 198 | + goto yy6;
|
| 199 | + } else {
|
| 200 | + if (yych == '/')
|
| 201 | + goto yy6;
|
| 202 | + }
|
| 203 | + } else {
|
| 204 | + if (yych <= 'Z') {
|
| 205 | + if (yych <= ':')
|
| 206 | + goto yy8;
|
| 207 | + if (yych <= '@')
|
| 208 | + goto yy6;
|
| 209 | + } else {
|
| 210 | + if (yych <= '`')
|
| 211 | + goto yy6;
|
| 212 | + if (yych >= '{')
|
| 213 | + goto yy6;
|
| 214 | + }
|
| 215 | + }
|
| 216 | + yych = *++p;
|
| 217 | + if (yych <= '9') {
|
| 218 | + if (yych <= ',') {
|
| 219 | + if (yych != '+')
|
| 220 | + goto yy6;
|
| 221 | + } else {
|
| 222 | + if (yych == '/')
|
| 223 | + goto yy6;
|
| 224 | + }
|
| 225 | + } else {
|
| 226 | + if (yych <= 'Z') {
|
| 227 | + if (yych <= ':')
|
| 228 | + goto yy8;
|
| 229 | + if (yych <= '@')
|
| 230 | + goto yy6;
|
| 231 | + } else {
|
| 232 | + if (yych <= '`')
|
| 233 | + goto yy6;
|
| 234 | + if (yych >= '{')
|
| 235 | + goto yy6;
|
| 236 | + }
|
| 237 | + }
|
| 238 | + yych = *++p;
|
| 239 | + if (yych <= '9') {
|
| 240 | + if (yych <= ',') {
|
| 241 | + if (yych != '+')
|
| 242 | + goto yy6;
|
| 243 | + } else {
|
| 244 | + if (yych == '/')
|
| 245 | + goto yy6;
|
| 246 | + }
|
| 247 | + } else {
|
| 248 | + if (yych <= 'Z') {
|
| 249 | + if (yych <= ':')
|
| 250 | + goto yy8;
|
| 251 | + if (yych <= '@')
|
| 252 | + goto yy6;
|
| 253 | + } else {
|
| 254 | + if (yych <= '`')
|
| 255 | + goto yy6;
|
| 256 | + if (yych >= '{')
|
| 257 | + goto yy6;
|
| 258 | + }
|
| 259 | + }
|
| 260 | + yych = *++p;
|
| 261 | + if (yych <= '9') {
|
| 262 | + if (yych <= ',') {
|
| 263 | + if (yych != '+')
|
| 264 | + goto yy6;
|
| 265 | + } else {
|
| 266 | + if (yych == '/')
|
| 267 | + goto yy6;
|
| 268 | + }
|
| 269 | + } else {
|
| 270 | + if (yych <= 'Z') {
|
| 271 | + if (yych <= ':')
|
| 272 | + goto yy8;
|
| 273 | + if (yych <= '@')
|
| 274 | + goto yy6;
|
| 275 | + } else {
|
| 276 | + if (yych <= '`')
|
| 277 | + goto yy6;
|
| 278 | + if (yych >= '{')
|
| 279 | + goto yy6;
|
| 280 | + }
|
| 281 | + }
|
| 282 | + yych = *++p;
|
| 283 | + if (yych <= '9') {
|
| 284 | + if (yych <= ',') {
|
| 285 | + if (yych != '+')
|
| 286 | + goto yy6;
|
| 287 | + } else {
|
| 288 | + if (yych == '/')
|
| 289 | + goto yy6;
|
| 290 | + }
|
| 291 | + } else {
|
| 292 | + if (yych <= 'Z') {
|
| 293 | + if (yych <= ':')
|
| 294 | + goto yy8;
|
| 295 | + if (yych <= '@')
|
| 296 | + goto yy6;
|
| 297 | + } else {
|
| 298 | + if (yych <= '`')
|
| 299 | + goto yy6;
|
| 300 | + if (yych >= '{')
|
| 301 | + goto yy6;
|
| 302 | + }
|
| 303 | + }
|
| 304 | + yych = *++p;
|
| 305 | + if (yych <= '9') {
|
| 306 | + if (yych <= ',') {
|
| 307 | + if (yych != '+')
|
| 308 | + goto yy6;
|
| 309 | + } else {
|
| 310 | + if (yych == '/')
|
| 311 | + goto yy6;
|
| 312 | + }
|
| 313 | + } else {
|
| 314 | + if (yych <= 'Z') {
|
| 315 | + if (yych <= ':')
|
| 316 | + goto yy8;
|
| 317 | + if (yych <= '@')
|
| 318 | + goto yy6;
|
| 319 | + } else {
|
| 320 | + if (yych <= '`')
|
| 321 | + goto yy6;
|
| 322 | + if (yych >= '{')
|
| 323 | + goto yy6;
|
| 324 | + }
|
| 325 | + }
|
| 326 | + yych = *++p;
|
| 327 | + if (yych <= '9') {
|
| 328 | + if (yych <= ',') {
|
| 329 | + if (yych != '+')
|
| 330 | + goto yy6;
|
| 331 | + } else {
|
| 332 | + if (yych == '/')
|
| 333 | + goto yy6;
|
| 334 | + }
|
| 335 | + } else {
|
| 336 | + if (yych <= 'Z') {
|
| 337 | + if (yych <= ':')
|
| 338 | + goto yy8;
|
| 339 | + if (yych <= '@')
|
| 340 | + goto yy6;
|
| 341 | + } else {
|
| 342 | + if (yych <= '`')
|
| 343 | + goto yy6;
|
| 344 | + if (yych >= '{')
|
| 345 | + goto yy6;
|
| 346 | + }
|
| 347 | + }
|
| 348 | + yych = *++p;
|
| 349 | + if (yych <= '9') {
|
| 350 | + if (yych <= ',') {
|
| 351 | + if (yych != '+')
|
| 352 | + goto yy6;
|
| 353 | + } else {
|
| 354 | + if (yych == '/')
|
| 355 | + goto yy6;
|
| 356 | + }
|
| 357 | + } else {
|
| 358 | + if (yych <= 'Z') {
|
| 359 | + if (yych <= ':')
|
| 360 | + goto yy8;
|
| 361 | + if (yych <= '@')
|
| 362 | + goto yy6;
|
| 363 | + } else {
|
| 364 | + if (yych <= '`')
|
| 365 | + goto yy6;
|
| 366 | + if (yych >= '{')
|
| 367 | + goto yy6;
|
| 368 | + }
|
| 369 | + }
|
| 370 | + yych = *++p;
|
| 371 | + if (yych <= '9') {
|
| 372 | + if (yych <= ',') {
|
| 373 | + if (yych != '+')
|
| 374 | + goto yy6;
|
| 375 | + } else {
|
| 376 | + if (yych == '/')
|
| 377 | + goto yy6;
|
| 378 | + }
|
| 379 | + } else {
|
| 380 | + if (yych <= 'Z') {
|
| 381 | + if (yych <= ':')
|
| 382 | + goto yy8;
|
| 383 | + if (yych <= '@')
|
| 384 | + goto yy6;
|
| 385 | + } else {
|
| 386 | + if (yych <= '`')
|
| 387 | + goto yy6;
|
| 388 | + if (yych >= '{')
|
| 389 | + goto yy6;
|
| 390 | + }
|
| 391 | + }
|
| 392 | + yych = *++p;
|
| 393 | + if (yych <= '9') {
|
| 394 | + if (yych <= ',') {
|
| 395 | + if (yych != '+')
|
| 396 | + goto yy6;
|
| 397 | + } else {
|
| 398 | + if (yych == '/')
|
| 399 | + goto yy6;
|
| 400 | + }
|
| 401 | + } else {
|
| 402 | + if (yych <= 'Z') {
|
| 403 | + if (yych <= ':')
|
| 404 | + goto yy8;
|
| 405 | + if (yych <= '@')
|
| 406 | + goto yy6;
|
| 407 | + } else {
|
| 408 | + if (yych <= '`')
|
| 409 | + goto yy6;
|
| 410 | + if (yych >= '{')
|
| 411 | + goto yy6;
|
| 412 | + }
|
| 413 | + }
|
| 414 | + yych = *++p;
|
| 415 | + if (yych <= '9') {
|
| 416 | + if (yych <= ',') {
|
| 417 | + if (yych != '+')
|
| 418 | + goto yy6;
|
| 419 | + } else {
|
| 420 | + if (yych == '/')
|
| 421 | + goto yy6;
|
| 422 | + }
|
| 423 | + } else {
|
| 424 | + if (yych <= 'Z') {
|
| 425 | + if (yych <= ':')
|
| 426 | + goto yy8;
|
| 427 | + if (yych <= '@')
|
| 428 | + goto yy6;
|
| 429 | + } else {
|
| 430 | + if (yych <= '`')
|
| 431 | + goto yy6;
|
| 432 | + if (yych >= '{')
|
| 433 | + goto yy6;
|
| 434 | + }
|
| 435 | + }
|
| 436 | + yych = *++p;
|
| 437 | + if (yych <= '9') {
|
| 438 | + if (yych <= ',') {
|
| 439 | + if (yych != '+')
|
| 440 | + goto yy6;
|
| 441 | + } else {
|
| 442 | + if (yych == '/')
|
| 443 | + goto yy6;
|
| 444 | + }
|
| 445 | + } else {
|
| 446 | + if (yych <= 'Z') {
|
| 447 | + if (yych <= ':')
|
| 448 | + goto yy8;
|
| 449 | + if (yych <= '@')
|
| 450 | + goto yy6;
|
| 451 | + } else {
|
| 452 | + if (yych <= '`')
|
| 453 | + goto yy6;
|
| 454 | + if (yych >= '{')
|
| 455 | + goto yy6;
|
| 456 | + }
|
| 457 | + }
|
| 458 | + yych = *++p;
|
| 459 | + if (yych <= '9') {
|
| 460 | + if (yych <= ',') {
|
| 461 | + if (yych != '+')
|
| 462 | + goto yy6;
|
| 463 | + } else {
|
| 464 | + if (yych == '/')
|
| 465 | + goto yy6;
|
| 466 | + }
|
| 467 | + } else {
|
| 468 | + if (yych <= 'Z') {
|
| 469 | + if (yych <= ':')
|
| 470 | + goto yy8;
|
| 471 | + if (yych <= '@')
|
| 472 | + goto yy6;
|
| 473 | + } else {
|
| 474 | + if (yych <= '`')
|
| 475 | + goto yy6;
|
| 476 | + if (yych >= '{')
|
| 477 | + goto yy6;
|
| 478 | + }
|
| 479 | + }
|
| 480 | + yych = *++p;
|
| 481 | + if (yych <= '9') {
|
| 482 | + if (yych <= ',') {
|
| 483 | + if (yych != '+')
|
| 484 | + goto yy6;
|
| 485 | + } else {
|
| 486 | + if (yych == '/')
|
| 487 | + goto yy6;
|
| 488 | + }
|
| 489 | + } else {
|
| 490 | + if (yych <= 'Z') {
|
| 491 | + if (yych <= ':')
|
| 492 | + goto yy8;
|
| 493 | + if (yych <= '@')
|
| 494 | + goto yy6;
|
| 495 | + } else {
|
| 496 | + if (yych <= '`')
|
| 497 | + goto yy6;
|
| 498 | + if (yych >= '{')
|
| 499 | + goto yy6;
|
| 500 | + }
|
| 501 | + }
|
| 502 | + yych = *++p;
|
| 503 | + if (yych <= '9') {
|
| 504 | + if (yych <= ',') {
|
| 505 | + if (yych != '+')
|
| 506 | + goto yy6;
|
| 507 | + } else {
|
| 508 | + if (yych == '/')
|
| 509 | + goto yy6;
|
| 510 | + }
|
| 511 | + } else {
|
| 512 | + if (yych <= 'Z') {
|
| 513 | + if (yych <= ':')
|
| 514 | + goto yy8;
|
| 515 | + if (yych <= '@')
|
| 516 | + goto yy6;
|
| 517 | + } else {
|
| 518 | + if (yych <= '`')
|
| 519 | + goto yy6;
|
| 520 | + if (yych >= '{')
|
| 521 | + goto yy6;
|
| 522 | + }
|
| 523 | + }
|
| 524 | + yych = *++p;
|
| 525 | + if (yych <= '9') {
|
| 526 | + if (yych <= ',') {
|
| 527 | + if (yych != '+')
|
| 528 | + goto yy6;
|
| 529 | + } else {
|
| 530 | + if (yych == '/')
|
| 531 | + goto yy6;
|
| 532 | + }
|
| 533 | + } else {
|
| 534 | + if (yych <= 'Z') {
|
| 535 | + if (yych <= ':')
|
| 536 | + goto yy8;
|
| 537 | + if (yych <= '@')
|
| 538 | + goto yy6;
|
| 539 | + } else {
|
| 540 | + if (yych <= '`')
|
| 541 | + goto yy6;
|
| 542 | + if (yych >= '{')
|
| 543 | + goto yy6;
|
| 544 | + }
|
| 545 | + }
|
| 546 | + yych = *++p;
|
| 547 | + if (yych <= '9') {
|
| 548 | + if (yych <= ',') {
|
| 549 | + if (yych != '+')
|
| 550 | + goto yy6;
|
| 551 | + } else {
|
| 552 | + if (yych == '/')
|
| 553 | + goto yy6;
|
| 554 | + }
|
| 555 | + } else {
|
| 556 | + if (yych <= 'Z') {
|
| 557 | + if (yych <= ':')
|
| 558 | + goto yy8;
|
| 559 | + if (yych <= '@')
|
| 560 | + goto yy6;
|
| 561 | + } else {
|
| 562 | + if (yych <= '`')
|
| 563 | + goto yy6;
|
| 564 | + if (yych >= '{')
|
| 565 | + goto yy6;
|
| 566 | + }
|
| 567 | + }
|
| 568 | + yych = *++p;
|
| 569 | + if (yych <= '9') {
|
| 570 | + if (yych <= ',') {
|
| 571 | + if (yych != '+')
|
| 572 | + goto yy6;
|
| 573 | + } else {
|
| 574 | + if (yych == '/')
|
| 575 | + goto yy6;
|
| 576 | + }
|
| 577 | + } else {
|
| 578 | + if (yych <= 'Z') {
|
| 579 | + if (yych <= ':')
|
| 580 | + goto yy8;
|
| 581 | + if (yych <= '@')
|
| 582 | + goto yy6;
|
| 583 | + } else {
|
| 584 | + if (yych <= '`')
|
| 585 | + goto yy6;
|
| 586 | + if (yych >= '{')
|
| 587 | + goto yy6;
|
| 588 | + }
|
| 589 | + }
|
| 590 | + yych = *++p;
|
| 591 | + if (yych <= '9') {
|
| 592 | + if (yych <= ',') {
|
| 593 | + if (yych != '+')
|
| 594 | + goto yy6;
|
| 595 | + } else {
|
| 596 | + if (yych == '/')
|
| 597 | + goto yy6;
|
| 598 | + }
|
| 599 | + } else {
|
| 600 | + if (yych <= 'Z') {
|
| 601 | + if (yych <= ':')
|
| 602 | + goto yy8;
|
| 603 | + if (yych <= '@')
|
| 604 | + goto yy6;
|
| 605 | + } else {
|
| 606 | + if (yych <= '`')
|
| 607 | + goto yy6;
|
| 608 | + if (yych >= '{')
|
| 609 | + goto yy6;
|
| 610 | + }
|
| 611 | + }
|
| 612 | + yych = *++p;
|
| 613 | + if (yych <= '9') {
|
| 614 | + if (yych <= ',') {
|
| 615 | + if (yych != '+')
|
| 616 | + goto yy6;
|
| 617 | + } else {
|
| 618 | + if (yych == '/')
|
| 619 | + goto yy6;
|
| 620 | + }
|
| 621 | + } else {
|
| 622 | + if (yych <= 'Z') {
|
| 623 | + if (yych <= ':')
|
| 624 | + goto yy8;
|
| 625 | + if (yych <= '@')
|
| 626 | + goto yy6;
|
| 627 | + } else {
|
| 628 | + if (yych <= '`')
|
| 629 | + goto yy6;
|
| 630 | + if (yych >= '{')
|
| 631 | + goto yy6;
|
| 632 | + }
|
| 633 | + }
|
| 634 | + yych = *++p;
|
| 635 | + if (yych <= '9') {
|
| 636 | + if (yych <= ',') {
|
| 637 | + if (yych != '+')
|
| 638 | + goto yy6;
|
| 639 | + } else {
|
| 640 | + if (yych == '/')
|
| 641 | + goto yy6;
|
| 642 | + }
|
| 643 | + } else {
|
| 644 | + if (yych <= 'Z') {
|
| 645 | + if (yych <= ':')
|
| 646 | + goto yy8;
|
| 647 | + if (yych <= '@')
|
| 648 | + goto yy6;
|
| 649 | + } else {
|
| 650 | + if (yych <= '`')
|
| 651 | + goto yy6;
|
| 652 | + if (yych >= '{')
|
| 653 | + goto yy6;
|
| 654 | + }
|
| 655 | + }
|
| 656 | + yych = *++p;
|
| 657 | + if (yych <= '9') {
|
| 658 | + if (yych <= ',') {
|
| 659 | + if (yych != '+')
|
| 660 | + goto yy6;
|
| 661 | + } else {
|
| 662 | + if (yych == '/')
|
| 663 | + goto yy6;
|
| 664 | + }
|
| 665 | + } else {
|
| 666 | + if (yych <= 'Z') {
|
| 667 | + if (yych <= ':')
|
| 668 | + goto yy8;
|
| 669 | + if (yych <= '@')
|
| 670 | + goto yy6;
|
| 671 | + } else {
|
| 672 | + if (yych <= '`')
|
| 673 | + goto yy6;
|
| 674 | + if (yych >= '{')
|
| 675 | + goto yy6;
|
| 676 | + }
|
| 677 | + }
|
| 678 | + yych = *++p;
|
| 679 | + if (yych <= '9') {
|
| 680 | + if (yych <= ',') {
|
| 681 | + if (yych != '+')
|
| 682 | + goto yy6;
|
| 683 | + } else {
|
| 684 | + if (yych == '/')
|
| 685 | + goto yy6;
|
| 686 | + }
|
| 687 | + } else {
|
| 688 | + if (yych <= 'Z') {
|
| 689 | + if (yych <= ':')
|
| 690 | + goto yy8;
|
| 691 | + if (yych <= '@')
|
| 692 | + goto yy6;
|
| 693 | + } else {
|
| 694 | + if (yych <= '`')
|
| 695 | + goto yy6;
|
| 696 | + if (yych >= '{')
|
| 697 | + goto yy6;
|
| 698 | + }
|
| 699 | + }
|
| 700 | + yych = *++p;
|
| 701 | + if (yych <= '9') {
|
| 702 | + if (yych <= ',') {
|
| 703 | + if (yych != '+')
|
| 704 | + goto yy6;
|
| 705 | + } else {
|
| 706 | + if (yych == '/')
|
| 707 | + goto yy6;
|
| 708 | + }
|
| 709 | + } else {
|
| 710 | + if (yych <= 'Z') {
|
| 711 | + if (yych <= ':')
|
| 712 | + goto yy8;
|
| 713 | + if (yych <= '@')
|
| 714 | + goto yy6;
|
| 715 | + } else {
|
| 716 | + if (yych <= '`')
|
| 717 | + goto yy6;
|
| 718 | + if (yych >= '{')
|
| 719 | + goto yy6;
|
| 720 | + }
|
| 721 | + }
|
| 722 | + yych = *++p;
|
| 723 | + if (yych <= '9') {
|
| 724 | + if (yych <= ',') {
|
| 725 | + if (yych != '+')
|
| 726 | + goto yy6;
|
| 727 | + } else {
|
| 728 | + if (yych == '/')
|
| 729 | + goto yy6;
|
| 730 | + }
|
| 731 | + } else {
|
| 732 | + if (yych <= 'Z') {
|
| 733 | + if (yych <= ':')
|
| 734 | + goto yy8;
|
| 735 | + if (yych <= '@')
|
| 736 | + goto yy6;
|
| 737 | + } else {
|
| 738 | + if (yych <= '`')
|
| 739 | + goto yy6;
|
| 740 | + if (yych >= '{')
|
| 741 | + goto yy6;
|
| 742 | + }
|
| 743 | + }
|
| 744 | + ++p;
|
| 745 | + if ((yych = *p) == ':')
|
| 746 | + goto yy8;
|
| 747 | + goto yy6;
|
| 748 | + }
|
| 749 | +}
|
| 750 | +
|
| 751 | +// Try to match URI autolink after first <, returning number of chars matched.
|
| 752 | +bufsize_t _scan_autolink_uri(const unsigned char *p) {
|
| 753 | + const unsigned char *marker = NULL;
|
| 754 | + const unsigned char *start = p;
|
| 755 | +
|
| 756 | + {
|
| 757 | + unsigned char yych;
|
| 758 | + static const unsigned char yybm[] = {
|
| 759 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 760 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 761 | + 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 762 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 763 | + 128, 128, 128, 128, 0, 128, 0, 128, 128, 128, 128, 128, 128, 128,
|
| 764 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 765 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 766 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 767 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 768 | + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 769 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 770 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 771 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 772 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 773 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 774 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 775 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 776 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 777 | + 0, 0, 0, 0,
|
| 778 | + };
|
| 779 | + yych = *p;
|
| 780 | + if (yych <= '@')
|
| 781 | + goto yy41;
|
| 782 | + if (yych <= 'Z')
|
| 783 | + goto yy43;
|
| 784 | + if (yych <= '`')
|
| 785 | + goto yy41;
|
| 786 | + if (yych <= 'z')
|
| 787 | + goto yy43;
|
| 788 | + yy41:
|
| 789 | + ++p;
|
| 790 | + yy42 : { return 0; }
|
| 791 | + yy43:
|
| 792 | + yych = *(marker = ++p);
|
| 793 | + if (yych <= '/') {
|
| 794 | + if (yych <= '+') {
|
| 795 | + if (yych <= '*')
|
| 796 | + goto yy42;
|
| 797 | + } else {
|
| 798 | + if (yych <= ',')
|
| 799 | + goto yy42;
|
| 800 | + if (yych >= '/')
|
| 801 | + goto yy42;
|
| 802 | + }
|
| 803 | + } else {
|
| 804 | + if (yych <= 'Z') {
|
| 805 | + if (yych <= '9')
|
| 806 | + goto yy44;
|
| 807 | + if (yych <= '@')
|
| 808 | + goto yy42;
|
| 809 | + } else {
|
| 810 | + if (yych <= '`')
|
| 811 | + goto yy42;
|
| 812 | + if (yych >= '{')
|
| 813 | + goto yy42;
|
| 814 | + }
|
| 815 | + }
|
| 816 | + yy44:
|
| 817 | + yych = *++p;
|
| 818 | + if (yych <= '9') {
|
| 819 | + if (yych <= ',') {
|
| 820 | + if (yych == '+')
|
| 821 | + goto yy46;
|
| 822 | + } else {
|
| 823 | + if (yych != '/')
|
| 824 | + goto yy46;
|
| 825 | + }
|
| 826 | + } else {
|
| 827 | + if (yych <= 'Z') {
|
| 828 | + if (yych <= ':')
|
| 829 | + goto yy47;
|
| 830 | + if (yych >= 'A')
|
| 831 | + goto yy46;
|
| 832 | + } else {
|
| 833 | + if (yych <= '`')
|
| 834 | + goto yy45;
|
| 835 | + if (yych <= 'z')
|
| 836 | + goto yy46;
|
| 837 | + }
|
| 838 | + }
|
| 839 | + yy45:
|
| 840 | + p = marker;
|
| 841 | + goto yy42;
|
| 842 | + yy46:
|
| 843 | + yych = *++p;
|
| 844 | + if (yych <= '9') {
|
| 845 | + if (yych <= ',') {
|
| 846 | + if (yych == '+')
|
| 847 | + goto yy49;
|
| 848 | + goto yy45;
|
| 849 | + } else {
|
| 850 | + if (yych == '/')
|
| 851 | + goto yy45;
|
| 852 | + goto yy49;
|
| 853 | + }
|
| 854 | + } else {
|
| 855 | + if (yych <= 'Z') {
|
| 856 | + if (yych <= ':')
|
| 857 | + goto yy47;
|
| 858 | + if (yych <= '@')
|
| 859 | + goto yy45;
|
| 860 | + goto yy49;
|
| 861 | + } else {
|
| 862 | + if (yych <= '`')
|
| 863 | + goto yy45;
|
| 864 | + if (yych <= 'z')
|
| 865 | + goto yy49;
|
| 866 | + goto yy45;
|
| 867 | + }
|
| 868 | + }
|
| 869 | + yy47:
|
| 870 | + ++p;
|
| 871 | + yych = *p;
|
| 872 | + if (yybm[0 + yych] & 128) {
|
| 873 | + goto yy47;
|
| 874 | + }
|
| 875 | + if (yych <= 0xEC) {
|
| 876 | + if (yych <= 0xC1) {
|
| 877 | + if (yych <= '<')
|
| 878 | + goto yy45;
|
| 879 | + if (yych <= '>')
|
| 880 | + goto yy50;
|
| 881 | + goto yy45;
|
| 882 | + } else {
|
| 883 | + if (yych <= 0xDF)
|
| 884 | + goto yy52;
|
| 885 | + if (yych <= 0xE0)
|
| 886 | + goto yy53;
|
| 887 | + goto yy54;
|
| 888 | + }
|
| 889 | + } else {
|
| 890 | + if (yych <= 0xF0) {
|
| 891 | + if (yych <= 0xED)
|
| 892 | + goto yy55;
|
| 893 | + if (yych <= 0xEF)
|
| 894 | + goto yy54;
|
| 895 | + goto yy56;
|
| 896 | + } else {
|
| 897 | + if (yych <= 0xF3)
|
| 898 | + goto yy57;
|
| 899 | + if (yych <= 0xF4)
|
| 900 | + goto yy58;
|
| 901 | + goto yy45;
|
| 902 | + }
|
| 903 | + }
|
| 904 | + yy49:
|
| 905 | + yych = *++p;
|
| 906 | + if (yych <= '9') {
|
| 907 | + if (yych <= ',') {
|
| 908 | + if (yych == '+')
|
| 909 | + goto yy59;
|
| 910 | + goto yy45;
|
| 911 | + } else {
|
| 912 | + if (yych == '/')
|
| 913 | + goto yy45;
|
| 914 | + goto yy59;
|
| 915 | + }
|
| 916 | + } else {
|
| 917 | + if (yych <= 'Z') {
|
| 918 | + if (yych <= ':')
|
| 919 | + goto yy47;
|
| 920 | + if (yych <= '@')
|
| 921 | + goto yy45;
|
| 922 | + goto yy59;
|
| 923 | + } else {
|
| 924 | + if (yych <= '`')
|
| 925 | + goto yy45;
|
| 926 | + if (yych <= 'z')
|
| 927 | + goto yy59;
|
| 928 | + goto yy45;
|
| 929 | + }
|
| 930 | + }
|
| 931 | + yy50:
|
| 932 | + ++p;
|
| 933 | + { return (bufsize_t)(p - start); }
|
| 934 | + yy52:
|
| 935 | + ++p;
|
| 936 | + yych = *p;
|
| 937 | + if (yych <= 0x7F)
|
| 938 | + goto yy45;
|
| 939 | + if (yych <= 0xBF)
|
| 940 | + goto yy47;
|
| 941 | + goto yy45;
|
| 942 | + yy53:
|
| 943 | + ++p;
|
| 944 | + yych = *p;
|
| 945 | + if (yych <= 0x9F)
|
| 946 | + goto yy45;
|
| 947 | + if (yych <= 0xBF)
|
| 948 | + goto yy52;
|
| 949 | + goto yy45;
|
| 950 | + yy54:
|
| 951 | + ++p;
|
| 952 | + yych = *p;
|
| 953 | + if (yych <= 0x7F)
|
| 954 | + goto yy45;
|
| 955 | + if (yych <= 0xBF)
|
| 956 | + goto yy52;
|
| 957 | + goto yy45;
|
| 958 | + yy55:
|
| 959 | + ++p;
|
| 960 | + yych = *p;
|
| 961 | + if (yych <= 0x7F)
|
| 962 | + goto yy45;
|
| 963 | + if (yych <= 0x9F)
|
| 964 | + goto yy52;
|
| 965 | + goto yy45;
|
| 966 | + yy56:
|
| 967 | + ++p;
|
| 968 | + yych = *p;
|
| 969 | + if (yych <= 0x8F)
|
| 970 | + goto yy45;
|
| 971 | + if (yych <= 0xBF)
|
| 972 | + goto yy54;
|
| 973 | + goto yy45;
|
| 974 | + yy57:
|
| 975 | + ++p;
|
| 976 | + yych = *p;
|
| 977 | + if (yych <= 0x7F)
|
| 978 | + goto yy45;
|
| 979 | + if (yych <= 0xBF)
|
| 980 | + goto yy54;
|
| 981 | + goto yy45;
|
| 982 | + yy58:
|
| 983 | + ++p;
|
| 984 | + yych = *p;
|
| 985 | + if (yych <= 0x7F)
|
| 986 | + goto yy45;
|
| 987 | + if (yych <= 0x8F)
|
| 988 | + goto yy54;
|
| 989 | + goto yy45;
|
| 990 | + yy59:
|
| 991 | + yych = *++p;
|
| 992 | + if (yych <= '9') {
|
| 993 | + if (yych <= ',') {
|
| 994 | + if (yych != '+')
|
| 995 | + goto yy45;
|
| 996 | + } else {
|
| 997 | + if (yych == '/')
|
| 998 | + goto yy45;
|
| 999 | + }
|
| 1000 | + } else {
|
| 1001 | + if (yych <= 'Z') {
|
| 1002 | + if (yych <= ':')
|
| 1003 | + goto yy47;
|
| 1004 | + if (yych <= '@')
|
| 1005 | + goto yy45;
|
| 1006 | + } else {
|
| 1007 | + if (yych <= '`')
|
| 1008 | + goto yy45;
|
| 1009 | + if (yych >= '{')
|
| 1010 | + goto yy45;
|
| 1011 | + }
|
| 1012 | + }
|
| 1013 | + yych = *++p;
|
| 1014 | + if (yych <= '9') {
|
| 1015 | + if (yych <= ',') {
|
| 1016 | + if (yych != '+')
|
| 1017 | + goto yy45;
|
| 1018 | + } else {
|
| 1019 | + if (yych == '/')
|
| 1020 | + goto yy45;
|
| 1021 | + }
|
| 1022 | + } else {
|
| 1023 | + if (yych <= 'Z') {
|
| 1024 | + if (yych <= ':')
|
| 1025 | + goto yy47;
|
| 1026 | + if (yych <= '@')
|
| 1027 | + goto yy45;
|
| 1028 | + } else {
|
| 1029 | + if (yych <= '`')
|
| 1030 | + goto yy45;
|
| 1031 | + if (yych >= '{')
|
| 1032 | + goto yy45;
|
| 1033 | + }
|
| 1034 | + }
|
| 1035 | + yych = *++p;
|
| 1036 | + if (yych <= '9') {
|
| 1037 | + if (yych <= ',') {
|
| 1038 | + if (yych != '+')
|
| 1039 | + goto yy45;
|
| 1040 | + } else {
|
| 1041 | + if (yych == '/')
|
| 1042 | + goto yy45;
|
| 1043 | + }
|
| 1044 | + } else {
|
| 1045 | + if (yych <= 'Z') {
|
| 1046 | + if (yych <= ':')
|
| 1047 | + goto yy47;
|
| 1048 | + if (yych <= '@')
|
| 1049 | + goto yy45;
|
| 1050 | + } else {
|
| 1051 | + if (yych <= '`')
|
| 1052 | + goto yy45;
|
| 1053 | + if (yych >= '{')
|
| 1054 | + goto yy45;
|
| 1055 | + }
|
| 1056 | + }
|
| 1057 | + yych = *++p;
|
| 1058 | + if (yych <= '9') {
|
| 1059 | + if (yych <= ',') {
|
| 1060 | + if (yych != '+')
|
| 1061 | + goto yy45;
|
| 1062 | + } else {
|
| 1063 | + if (yych == '/')
|
| 1064 | + goto yy45;
|
| 1065 | + }
|
| 1066 | + } else {
|
| 1067 | + if (yych <= 'Z') {
|
| 1068 | + if (yych <= ':')
|
| 1069 | + goto yy47;
|
| 1070 | + if (yych <= '@')
|
| 1071 | + goto yy45;
|
| 1072 | + } else {
|
| 1073 | + if (yych <= '`')
|
| 1074 | + goto yy45;
|
| 1075 | + if (yych >= '{')
|
| 1076 | + goto yy45;
|
| 1077 | + }
|
| 1078 | + }
|
| 1079 | + yych = *++p;
|
| 1080 | + if (yych <= '9') {
|
| 1081 | + if (yych <= ',') {
|
| 1082 | + if (yych != '+')
|
| 1083 | + goto yy45;
|
| 1084 | + } else {
|
| 1085 | + if (yych == '/')
|
| 1086 | + goto yy45;
|
| 1087 | + }
|
| 1088 | + } else {
|
| 1089 | + if (yych <= 'Z') {
|
| 1090 | + if (yych <= ':')
|
| 1091 | + goto yy47;
|
| 1092 | + if (yych <= '@')
|
| 1093 | + goto yy45;
|
| 1094 | + } else {
|
| 1095 | + if (yych <= '`')
|
| 1096 | + goto yy45;
|
| 1097 | + if (yych >= '{')
|
| 1098 | + goto yy45;
|
| 1099 | + }
|
| 1100 | + }
|
| 1101 | + yych = *++p;
|
| 1102 | + if (yych <= '9') {
|
| 1103 | + if (yych <= ',') {
|
| 1104 | + if (yych != '+')
|
| 1105 | + goto yy45;
|
| 1106 | + } else {
|
| 1107 | + if (yych == '/')
|
| 1108 | + goto yy45;
|
| 1109 | + }
|
| 1110 | + } else {
|
| 1111 | + if (yych <= 'Z') {
|
| 1112 | + if (yych <= ':')
|
| 1113 | + goto yy47;
|
| 1114 | + if (yych <= '@')
|
| 1115 | + goto yy45;
|
| 1116 | + } else {
|
| 1117 | + if (yych <= '`')
|
| 1118 | + goto yy45;
|
| 1119 | + if (yych >= '{')
|
| 1120 | + goto yy45;
|
| 1121 | + }
|
| 1122 | + }
|
| 1123 | + yych = *++p;
|
| 1124 | + if (yych <= '9') {
|
| 1125 | + if (yych <= ',') {
|
| 1126 | + if (yych != '+')
|
| 1127 | + goto yy45;
|
| 1128 | + } else {
|
| 1129 | + if (yych == '/')
|
| 1130 | + goto yy45;
|
| 1131 | + }
|
| 1132 | + } else {
|
| 1133 | + if (yych <= 'Z') {
|
| 1134 | + if (yych <= ':')
|
| 1135 | + goto yy47;
|
| 1136 | + if (yych <= '@')
|
| 1137 | + goto yy45;
|
| 1138 | + } else {
|
| 1139 | + if (yych <= '`')
|
| 1140 | + goto yy45;
|
| 1141 | + if (yych >= '{')
|
| 1142 | + goto yy45;
|
| 1143 | + }
|
| 1144 | + }
|
| 1145 | + yych = *++p;
|
| 1146 | + if (yych <= '9') {
|
| 1147 | + if (yych <= ',') {
|
| 1148 | + if (yych != '+')
|
| 1149 | + goto yy45;
|
| 1150 | + } else {
|
| 1151 | + if (yych == '/')
|
| 1152 | + goto yy45;
|
| 1153 | + }
|
| 1154 | + } else {
|
| 1155 | + if (yych <= 'Z') {
|
| 1156 | + if (yych <= ':')
|
| 1157 | + goto yy47;
|
| 1158 | + if (yych <= '@')
|
| 1159 | + goto yy45;
|
| 1160 | + } else {
|
| 1161 | + if (yych <= '`')
|
| 1162 | + goto yy45;
|
| 1163 | + if (yych >= '{')
|
| 1164 | + goto yy45;
|
| 1165 | + }
|
| 1166 | + }
|
| 1167 | + yych = *++p;
|
| 1168 | + if (yych <= '9') {
|
| 1169 | + if (yych <= ',') {
|
| 1170 | + if (yych != '+')
|
| 1171 | + goto yy45;
|
| 1172 | + } else {
|
| 1173 | + if (yych == '/')
|
| 1174 | + goto yy45;
|
| 1175 | + }
|
| 1176 | + } else {
|
| 1177 | + if (yych <= 'Z') {
|
| 1178 | + if (yych <= ':')
|
| 1179 | + goto yy47;
|
| 1180 | + if (yych <= '@')
|
| 1181 | + goto yy45;
|
| 1182 | + } else {
|
| 1183 | + if (yych <= '`')
|
| 1184 | + goto yy45;
|
| 1185 | + if (yych >= '{')
|
| 1186 | + goto yy45;
|
| 1187 | + }
|
| 1188 | + }
|
| 1189 | + yych = *++p;
|
| 1190 | + if (yych <= '9') {
|
| 1191 | + if (yych <= ',') {
|
| 1192 | + if (yych != '+')
|
| 1193 | + goto yy45;
|
| 1194 | + } else {
|
| 1195 | + if (yych == '/')
|
| 1196 | + goto yy45;
|
| 1197 | + }
|
| 1198 | + } else {
|
| 1199 | + if (yych <= 'Z') {
|
| 1200 | + if (yych <= ':')
|
| 1201 | + goto yy47;
|
| 1202 | + if (yych <= '@')
|
| 1203 | + goto yy45;
|
| 1204 | + } else {
|
| 1205 | + if (yych <= '`')
|
| 1206 | + goto yy45;
|
| 1207 | + if (yych >= '{')
|
| 1208 | + goto yy45;
|
| 1209 | + }
|
| 1210 | + }
|
| 1211 | + yych = *++p;
|
| 1212 | + if (yych <= '9') {
|
| 1213 | + if (yych <= ',') {
|
| 1214 | + if (yych != '+')
|
| 1215 | + goto yy45;
|
| 1216 | + } else {
|
| 1217 | + if (yych == '/')
|
| 1218 | + goto yy45;
|
| 1219 | + }
|
| 1220 | + } else {
|
| 1221 | + if (yych <= 'Z') {
|
| 1222 | + if (yych <= ':')
|
| 1223 | + goto yy47;
|
| 1224 | + if (yych <= '@')
|
| 1225 | + goto yy45;
|
| 1226 | + } else {
|
| 1227 | + if (yych <= '`')
|
| 1228 | + goto yy45;
|
| 1229 | + if (yych >= '{')
|
| 1230 | + goto yy45;
|
| 1231 | + }
|
| 1232 | + }
|
| 1233 | + yych = *++p;
|
| 1234 | + if (yych <= '9') {
|
| 1235 | + if (yych <= ',') {
|
| 1236 | + if (yych != '+')
|
| 1237 | + goto yy45;
|
| 1238 | + } else {
|
| 1239 | + if (yych == '/')
|
| 1240 | + goto yy45;
|
| 1241 | + }
|
| 1242 | + } else {
|
| 1243 | + if (yych <= 'Z') {
|
| 1244 | + if (yych <= ':')
|
| 1245 | + goto yy47;
|
| 1246 | + if (yych <= '@')
|
| 1247 | + goto yy45;
|
| 1248 | + } else {
|
| 1249 | + if (yych <= '`')
|
| 1250 | + goto yy45;
|
| 1251 | + if (yych >= '{')
|
| 1252 | + goto yy45;
|
| 1253 | + }
|
| 1254 | + }
|
| 1255 | + yych = *++p;
|
| 1256 | + if (yych <= '9') {
|
| 1257 | + if (yych <= ',') {
|
| 1258 | + if (yych != '+')
|
| 1259 | + goto yy45;
|
| 1260 | + } else {
|
| 1261 | + if (yych == '/')
|
| 1262 | + goto yy45;
|
| 1263 | + }
|
| 1264 | + } else {
|
| 1265 | + if (yych <= 'Z') {
|
| 1266 | + if (yych <= ':')
|
| 1267 | + goto yy47;
|
| 1268 | + if (yych <= '@')
|
| 1269 | + goto yy45;
|
| 1270 | + } else {
|
| 1271 | + if (yych <= '`')
|
| 1272 | + goto yy45;
|
| 1273 | + if (yych >= '{')
|
| 1274 | + goto yy45;
|
| 1275 | + }
|
| 1276 | + }
|
| 1277 | + yych = *++p;
|
| 1278 | + if (yych <= '9') {
|
| 1279 | + if (yych <= ',') {
|
| 1280 | + if (yych != '+')
|
| 1281 | + goto yy45;
|
| 1282 | + } else {
|
| 1283 | + if (yych == '/')
|
| 1284 | + goto yy45;
|
| 1285 | + }
|
| 1286 | + } else {
|
| 1287 | + if (yych <= 'Z') {
|
| 1288 | + if (yych <= ':')
|
| 1289 | + goto yy47;
|
| 1290 | + if (yych <= '@')
|
| 1291 | + goto yy45;
|
| 1292 | + } else {
|
| 1293 | + if (yych <= '`')
|
| 1294 | + goto yy45;
|
| 1295 | + if (yych >= '{')
|
| 1296 | + goto yy45;
|
| 1297 | + }
|
| 1298 | + }
|
| 1299 | + yych = *++p;
|
| 1300 | + if (yych <= '9') {
|
| 1301 | + if (yych <= ',') {
|
| 1302 | + if (yych != '+')
|
| 1303 | + goto yy45;
|
| 1304 | + } else {
|
| 1305 | + if (yych == '/')
|
| 1306 | + goto yy45;
|
| 1307 | + }
|
| 1308 | + } else {
|
| 1309 | + if (yych <= 'Z') {
|
| 1310 | + if (yych <= ':')
|
| 1311 | + goto yy47;
|
| 1312 | + if (yych <= '@')
|
| 1313 | + goto yy45;
|
| 1314 | + } else {
|
| 1315 | + if (yych <= '`')
|
| 1316 | + goto yy45;
|
| 1317 | + if (yych >= '{')
|
| 1318 | + goto yy45;
|
| 1319 | + }
|
| 1320 | + }
|
| 1321 | + yych = *++p;
|
| 1322 | + if (yych <= '9') {
|
| 1323 | + if (yych <= ',') {
|
| 1324 | + if (yych != '+')
|
| 1325 | + goto yy45;
|
| 1326 | + } else {
|
| 1327 | + if (yych == '/')
|
| 1328 | + goto yy45;
|
| 1329 | + }
|
| 1330 | + } else {
|
| 1331 | + if (yych <= 'Z') {
|
| 1332 | + if (yych <= ':')
|
| 1333 | + goto yy47;
|
| 1334 | + if (yych <= '@')
|
| 1335 | + goto yy45;
|
| 1336 | + } else {
|
| 1337 | + if (yych <= '`')
|
| 1338 | + goto yy45;
|
| 1339 | + if (yych >= '{')
|
| 1340 | + goto yy45;
|
| 1341 | + }
|
| 1342 | + }
|
| 1343 | + yych = *++p;
|
| 1344 | + if (yych <= '9') {
|
| 1345 | + if (yych <= ',') {
|
| 1346 | + if (yych != '+')
|
| 1347 | + goto yy45;
|
| 1348 | + } else {
|
| 1349 | + if (yych == '/')
|
| 1350 | + goto yy45;
|
| 1351 | + }
|
| 1352 | + } else {
|
| 1353 | + if (yych <= 'Z') {
|
| 1354 | + if (yych <= ':')
|
| 1355 | + goto yy47;
|
| 1356 | + if (yych <= '@')
|
| 1357 | + goto yy45;
|
| 1358 | + } else {
|
| 1359 | + if (yych <= '`')
|
| 1360 | + goto yy45;
|
| 1361 | + if (yych >= '{')
|
| 1362 | + goto yy45;
|
| 1363 | + }
|
| 1364 | + }
|
| 1365 | + yych = *++p;
|
| 1366 | + if (yych <= '9') {
|
| 1367 | + if (yych <= ',') {
|
| 1368 | + if (yych != '+')
|
| 1369 | + goto yy45;
|
| 1370 | + } else {
|
| 1371 | + if (yych == '/')
|
| 1372 | + goto yy45;
|
| 1373 | + }
|
| 1374 | + } else {
|
| 1375 | + if (yych <= 'Z') {
|
| 1376 | + if (yych <= ':')
|
| 1377 | + goto yy47;
|
| 1378 | + if (yych <= '@')
|
| 1379 | + goto yy45;
|
| 1380 | + } else {
|
| 1381 | + if (yych <= '`')
|
| 1382 | + goto yy45;
|
| 1383 | + if (yych >= '{')
|
| 1384 | + goto yy45;
|
| 1385 | + }
|
| 1386 | + }
|
| 1387 | + yych = *++p;
|
| 1388 | + if (yych <= '9') {
|
| 1389 | + if (yych <= ',') {
|
| 1390 | + if (yych != '+')
|
| 1391 | + goto yy45;
|
| 1392 | + } else {
|
| 1393 | + if (yych == '/')
|
| 1394 | + goto yy45;
|
| 1395 | + }
|
| 1396 | + } else {
|
| 1397 | + if (yych <= 'Z') {
|
| 1398 | + if (yych <= ':')
|
| 1399 | + goto yy47;
|
| 1400 | + if (yych <= '@')
|
| 1401 | + goto yy45;
|
| 1402 | + } else {
|
| 1403 | + if (yych <= '`')
|
| 1404 | + goto yy45;
|
| 1405 | + if (yych >= '{')
|
| 1406 | + goto yy45;
|
| 1407 | + }
|
| 1408 | + }
|
| 1409 | + yych = *++p;
|
| 1410 | + if (yych <= '9') {
|
| 1411 | + if (yych <= ',') {
|
| 1412 | + if (yych != '+')
|
| 1413 | + goto yy45;
|
| 1414 | + } else {
|
| 1415 | + if (yych == '/')
|
| 1416 | + goto yy45;
|
| 1417 | + }
|
| 1418 | + } else {
|
| 1419 | + if (yych <= 'Z') {
|
| 1420 | + if (yych <= ':')
|
| 1421 | + goto yy47;
|
| 1422 | + if (yych <= '@')
|
| 1423 | + goto yy45;
|
| 1424 | + } else {
|
| 1425 | + if (yych <= '`')
|
| 1426 | + goto yy45;
|
| 1427 | + if (yych >= '{')
|
| 1428 | + goto yy45;
|
| 1429 | + }
|
| 1430 | + }
|
| 1431 | + yych = *++p;
|
| 1432 | + if (yych <= '9') {
|
| 1433 | + if (yych <= ',') {
|
| 1434 | + if (yych != '+')
|
| 1435 | + goto yy45;
|
| 1436 | + } else {
|
| 1437 | + if (yych == '/')
|
| 1438 | + goto yy45;
|
| 1439 | + }
|
| 1440 | + } else {
|
| 1441 | + if (yych <= 'Z') {
|
| 1442 | + if (yych <= ':')
|
| 1443 | + goto yy47;
|
| 1444 | + if (yych <= '@')
|
| 1445 | + goto yy45;
|
| 1446 | + } else {
|
| 1447 | + if (yych <= '`')
|
| 1448 | + goto yy45;
|
| 1449 | + if (yych >= '{')
|
| 1450 | + goto yy45;
|
| 1451 | + }
|
| 1452 | + }
|
| 1453 | + yych = *++p;
|
| 1454 | + if (yych <= '9') {
|
| 1455 | + if (yych <= ',') {
|
| 1456 | + if (yych != '+')
|
| 1457 | + goto yy45;
|
| 1458 | + } else {
|
| 1459 | + if (yych == '/')
|
| 1460 | + goto yy45;
|
| 1461 | + }
|
| 1462 | + } else {
|
| 1463 | + if (yych <= 'Z') {
|
| 1464 | + if (yych <= ':')
|
| 1465 | + goto yy47;
|
| 1466 | + if (yych <= '@')
|
| 1467 | + goto yy45;
|
| 1468 | + } else {
|
| 1469 | + if (yych <= '`')
|
| 1470 | + goto yy45;
|
| 1471 | + if (yych >= '{')
|
| 1472 | + goto yy45;
|
| 1473 | + }
|
| 1474 | + }
|
| 1475 | + yych = *++p;
|
| 1476 | + if (yych <= '9') {
|
| 1477 | + if (yych <= ',') {
|
| 1478 | + if (yych != '+')
|
| 1479 | + goto yy45;
|
| 1480 | + } else {
|
| 1481 | + if (yych == '/')
|
| 1482 | + goto yy45;
|
| 1483 | + }
|
| 1484 | + } else {
|
| 1485 | + if (yych <= 'Z') {
|
| 1486 | + if (yych <= ':')
|
| 1487 | + goto yy47;
|
| 1488 | + if (yych <= '@')
|
| 1489 | + goto yy45;
|
| 1490 | + } else {
|
| 1491 | + if (yych <= '`')
|
| 1492 | + goto yy45;
|
| 1493 | + if (yych >= '{')
|
| 1494 | + goto yy45;
|
| 1495 | + }
|
| 1496 | + }
|
| 1497 | + yych = *++p;
|
| 1498 | + if (yych <= '9') {
|
| 1499 | + if (yych <= ',') {
|
| 1500 | + if (yych != '+')
|
| 1501 | + goto yy45;
|
| 1502 | + } else {
|
| 1503 | + if (yych == '/')
|
| 1504 | + goto yy45;
|
| 1505 | + }
|
| 1506 | + } else {
|
| 1507 | + if (yych <= 'Z') {
|
| 1508 | + if (yych <= ':')
|
| 1509 | + goto yy47;
|
| 1510 | + if (yych <= '@')
|
| 1511 | + goto yy45;
|
| 1512 | + } else {
|
| 1513 | + if (yych <= '`')
|
| 1514 | + goto yy45;
|
| 1515 | + if (yych >= '{')
|
| 1516 | + goto yy45;
|
| 1517 | + }
|
| 1518 | + }
|
| 1519 | + yych = *++p;
|
| 1520 | + if (yych <= '9') {
|
| 1521 | + if (yych <= ',') {
|
| 1522 | + if (yych != '+')
|
| 1523 | + goto yy45;
|
| 1524 | + } else {
|
| 1525 | + if (yych == '/')
|
| 1526 | + goto yy45;
|
| 1527 | + }
|
| 1528 | + } else {
|
| 1529 | + if (yych <= 'Z') {
|
| 1530 | + if (yych <= ':')
|
| 1531 | + goto yy47;
|
| 1532 | + if (yych <= '@')
|
| 1533 | + goto yy45;
|
| 1534 | + } else {
|
| 1535 | + if (yych <= '`')
|
| 1536 | + goto yy45;
|
| 1537 | + if (yych >= '{')
|
| 1538 | + goto yy45;
|
| 1539 | + }
|
| 1540 | + }
|
| 1541 | + yych = *++p;
|
| 1542 | + if (yych <= '9') {
|
| 1543 | + if (yych <= ',') {
|
| 1544 | + if (yych != '+')
|
| 1545 | + goto yy45;
|
| 1546 | + } else {
|
| 1547 | + if (yych == '/')
|
| 1548 | + goto yy45;
|
| 1549 | + }
|
| 1550 | + } else {
|
| 1551 | + if (yych <= 'Z') {
|
| 1552 | + if (yych <= ':')
|
| 1553 | + goto yy47;
|
| 1554 | + if (yych <= '@')
|
| 1555 | + goto yy45;
|
| 1556 | + } else {
|
| 1557 | + if (yych <= '`')
|
| 1558 | + goto yy45;
|
| 1559 | + if (yych >= '{')
|
| 1560 | + goto yy45;
|
| 1561 | + }
|
| 1562 | + }
|
| 1563 | + yych = *++p;
|
| 1564 | + if (yych <= '9') {
|
| 1565 | + if (yych <= ',') {
|
| 1566 | + if (yych != '+')
|
| 1567 | + goto yy45;
|
| 1568 | + } else {
|
| 1569 | + if (yych == '/')
|
| 1570 | + goto yy45;
|
| 1571 | + }
|
| 1572 | + } else {
|
| 1573 | + if (yych <= 'Z') {
|
| 1574 | + if (yych <= ':')
|
| 1575 | + goto yy47;
|
| 1576 | + if (yych <= '@')
|
| 1577 | + goto yy45;
|
| 1578 | + } else {
|
| 1579 | + if (yych <= '`')
|
| 1580 | + goto yy45;
|
| 1581 | + if (yych >= '{')
|
| 1582 | + goto yy45;
|
| 1583 | + }
|
| 1584 | + }
|
| 1585 | + ++p;
|
| 1586 | + if ((yych = *p) == ':')
|
| 1587 | + goto yy47;
|
| 1588 | + goto yy45;
|
| 1589 | + }
|
| 1590 | +}
|
| 1591 | +
|
| 1592 | +// Try to match email autolink after first <, returning num of chars matched.
|
| 1593 | +bufsize_t _scan_autolink_email(const unsigned char *p) {
|
| 1594 | + const unsigned char *marker = NULL;
|
| 1595 | + const unsigned char *start = p;
|
| 1596 | +
|
| 1597 | + {
|
| 1598 | + unsigned char yych;
|
| 1599 | + static const unsigned char yybm[] = {
|
| 1600 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1601 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1602 | + 0, 0, 0, 0, 0, 128, 0, 128, 128, 128, 128, 128, 0, 0,
|
| 1603 | + 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 1604 | + 128, 128, 0, 0, 0, 128, 0, 128, 0, 128, 128, 128, 128, 128,
|
| 1605 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 1606 | + 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 128, 128, 128, 128,
|
| 1607 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 1608 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 1609 | + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1610 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1611 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1612 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1613 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1614 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1615 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1616 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1617 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 1618 | + 0, 0, 0, 0,
|
| 1619 | + };
|
| 1620 | + yych = *p;
|
| 1621 | + if (yych <= '9') {
|
| 1622 | + if (yych <= '\'') {
|
| 1623 | + if (yych == '!')
|
| 1624 | + goto yy91;
|
| 1625 | + if (yych >= '#')
|
| 1626 | + goto yy91;
|
| 1627 | + } else {
|
| 1628 | + if (yych <= ')')
|
| 1629 | + goto yy89;
|
| 1630 | + if (yych != ',')
|
| 1631 | + goto yy91;
|
| 1632 | + }
|
| 1633 | + } else {
|
| 1634 | + if (yych <= '?') {
|
| 1635 | + if (yych == '=')
|
| 1636 | + goto yy91;
|
| 1637 | + if (yych >= '?')
|
| 1638 | + goto yy91;
|
| 1639 | + } else {
|
| 1640 | + if (yych <= 'Z') {
|
| 1641 | + if (yych >= 'A')
|
| 1642 | + goto yy91;
|
| 1643 | + } else {
|
| 1644 | + if (yych <= ']')
|
| 1645 | + goto yy89;
|
| 1646 | + if (yych <= '~')
|
| 1647 | + goto yy91;
|
| 1648 | + }
|
| 1649 | + }
|
| 1650 | + }
|
| 1651 | + yy89:
|
| 1652 | + ++p;
|
| 1653 | + yy90 : { return 0; }
|
| 1654 | + yy91:
|
| 1655 | + yych = *(marker = ++p);
|
| 1656 | + if (yych <= ',') {
|
| 1657 | + if (yych <= '"') {
|
| 1658 | + if (yych == '!')
|
| 1659 | + goto yy93;
|
| 1660 | + goto yy90;
|
| 1661 | + } else {
|
| 1662 | + if (yych <= '\'')
|
| 1663 | + goto yy93;
|
| 1664 | + if (yych <= ')')
|
| 1665 | + goto yy90;
|
| 1666 | + if (yych <= '+')
|
| 1667 | + goto yy93;
|
| 1668 | + goto yy90;
|
| 1669 | + }
|
| 1670 | + } else {
|
| 1671 | + if (yych <= '>') {
|
| 1672 | + if (yych <= '9')
|
| 1673 | + goto yy93;
|
| 1674 | + if (yych == '=')
|
| 1675 | + goto yy93;
|
| 1676 | + goto yy90;
|
| 1677 | + } else {
|
| 1678 | + if (yych <= 'Z')
|
| 1679 | + goto yy93;
|
| 1680 | + if (yych <= ']')
|
| 1681 | + goto yy90;
|
| 1682 | + if (yych <= '~')
|
| 1683 | + goto yy93;
|
| 1684 | + goto yy90;
|
| 1685 | + }
|
| 1686 | + }
|
| 1687 | + yy92:
|
| 1688 | + ++p;
|
| 1689 | + yych = *p;
|
| 1690 | + yy93:
|
| 1691 | + if (yybm[0 + yych] & 128) {
|
| 1692 | + goto yy92;
|
| 1693 | + }
|
| 1694 | + if (yych <= '>')
|
| 1695 | + goto yy94;
|
| 1696 | + if (yych <= '@')
|
| 1697 | + goto yy95;
|
| 1698 | + yy94:
|
| 1699 | + p = marker;
|
| 1700 | + goto yy90;
|
| 1701 | + yy95:
|
| 1702 | + ++p;
|
| 1703 | + yych = *p;
|
| 1704 | + if (yych <= '@') {
|
| 1705 | + if (yych <= '/')
|
| 1706 | + goto yy94;
|
| 1707 | + if (yych >= ':')
|
| 1708 | + goto yy94;
|
| 1709 | + } else {
|
| 1710 | + if (yych <= 'Z')
|
| 1711 | + goto yy96;
|
| 1712 | + if (yych <= '`')
|
| 1713 | + goto yy94;
|
| 1714 | + if (yych >= '{')
|
| 1715 | + goto yy94;
|
| 1716 | + }
|
| 1717 | + yy96:
|
| 1718 | + ++p;
|
| 1719 | + yych = *p;
|
| 1720 | + if (yych <= '=') {
|
| 1721 | + if (yych <= '.') {
|
| 1722 | + if (yych <= ',')
|
| 1723 | + goto yy94;
|
| 1724 | + if (yych >= '.')
|
| 1725 | + goto yy95;
|
| 1726 | + } else {
|
| 1727 | + if (yych <= '/')
|
| 1728 | + goto yy94;
|
| 1729 | + if (yych <= '9')
|
| 1730 | + goto yy98;
|
| 1731 | + goto yy94;
|
| 1732 | + }
|
| 1733 | + } else {
|
| 1734 | + if (yych <= 'Z') {
|
| 1735 | + if (yych <= '>')
|
| 1736 | + goto yy99;
|
| 1737 | + if (yych <= '@')
|
| 1738 | + goto yy94;
|
| 1739 | + goto yy98;
|
| 1740 | + } else {
|
| 1741 | + if (yych <= '`')
|
| 1742 | + goto yy94;
|
| 1743 | + if (yych <= 'z')
|
| 1744 | + goto yy98;
|
| 1745 | + goto yy94;
|
| 1746 | + }
|
| 1747 | + }
|
| 1748 | + ++p;
|
| 1749 | + yych = *p;
|
| 1750 | + if (yych <= '9') {
|
| 1751 | + if (yych == '-')
|
| 1752 | + goto yy101;
|
| 1753 | + if (yych <= '/')
|
| 1754 | + goto yy94;
|
| 1755 | + goto yy102;
|
| 1756 | + } else {
|
| 1757 | + if (yych <= 'Z') {
|
| 1758 | + if (yych <= '@')
|
| 1759 | + goto yy94;
|
| 1760 | + goto yy102;
|
| 1761 | + } else {
|
| 1762 | + if (yych <= '`')
|
| 1763 | + goto yy94;
|
| 1764 | + if (yych <= 'z')
|
| 1765 | + goto yy102;
|
| 1766 | + goto yy94;
|
| 1767 | + }
|
| 1768 | + }
|
| 1769 | + yy98:
|
| 1770 | + ++p;
|
| 1771 | + yych = *p;
|
| 1772 | + if (yych <= '=') {
|
| 1773 | + if (yych <= '.') {
|
| 1774 | + if (yych <= ',')
|
| 1775 | + goto yy94;
|
| 1776 | + if (yych <= '-')
|
| 1777 | + goto yy101;
|
| 1778 | + goto yy95;
|
| 1779 | + } else {
|
| 1780 | + if (yych <= '/')
|
| 1781 | + goto yy94;
|
| 1782 | + if (yych <= '9')
|
| 1783 | + goto yy102;
|
| 1784 | + goto yy94;
|
| 1785 | + }
|
| 1786 | + } else {
|
| 1787 | + if (yych <= 'Z') {
|
| 1788 | + if (yych <= '>')
|
| 1789 | + goto yy99;
|
| 1790 | + if (yych <= '@')
|
| 1791 | + goto yy94;
|
| 1792 | + goto yy102;
|
| 1793 | + } else {
|
| 1794 | + if (yych <= '`')
|
| 1795 | + goto yy94;
|
| 1796 | + if (yych <= 'z')
|
| 1797 | + goto yy102;
|
| 1798 | + goto yy94;
|
| 1799 | + }
|
| 1800 | + }
|
| 1801 | + yy99:
|
| 1802 | + ++p;
|
| 1803 | + { return (bufsize_t)(p - start); }
|
| 1804 | + yy101:
|
| 1805 | + ++p;
|
| 1806 | + yych = *p;
|
| 1807 | + if (yych <= '9') {
|
| 1808 | + if (yych == '-')
|
| 1809 | + goto yy103;
|
| 1810 | + if (yych <= '/')
|
| 1811 | + goto yy94;
|
| 1812 | + goto yy104;
|
| 1813 | + } else {
|
| 1814 | + if (yych <= 'Z') {
|
| 1815 | + if (yych <= '@')
|
| 1816 | + goto yy94;
|
| 1817 | + goto yy104;
|
| 1818 | + } else {
|
| 1819 | + if (yych <= '`')
|
| 1820 | + goto yy94;
|
| 1821 | + if (yych <= 'z')
|
| 1822 | + goto yy104;
|
| 1823 | + goto yy94;
|
| 1824 | + }
|
| 1825 | + }
|
| 1826 | + yy102:
|
| 1827 | + ++p;
|
| 1828 | + yych = *p;
|
| 1829 | + if (yych <= '=') {
|
| 1830 | + if (yych <= '.') {
|
| 1831 | + if (yych <= ',')
|
| 1832 | + goto yy94;
|
| 1833 | + if (yych >= '.')
|
| 1834 | + goto yy95;
|
| 1835 | + } else {
|
| 1836 | + if (yych <= '/')
|
| 1837 | + goto yy94;
|
| 1838 | + if (yych <= '9')
|
| 1839 | + goto yy104;
|
| 1840 | + goto yy94;
|
| 1841 | + }
|
| 1842 | + } else {
|
| 1843 | + if (yych <= 'Z') {
|
| 1844 | + if (yych <= '>')
|
| 1845 | + goto yy99;
|
| 1846 | + if (yych <= '@')
|
| 1847 | + goto yy94;
|
| 1848 | + goto yy104;
|
| 1849 | + } else {
|
| 1850 | + if (yych <= '`')
|
| 1851 | + goto yy94;
|
| 1852 | + if (yych <= 'z')
|
| 1853 | + goto yy104;
|
| 1854 | + goto yy94;
|
| 1855 | + }
|
| 1856 | + }
|
| 1857 | + yy103:
|
| 1858 | + ++p;
|
| 1859 | + yych = *p;
|
| 1860 | + if (yych <= '9') {
|
| 1861 | + if (yych == '-')
|
| 1862 | + goto yy105;
|
| 1863 | + if (yych <= '/')
|
| 1864 | + goto yy94;
|
| 1865 | + goto yy106;
|
| 1866 | + } else {
|
| 1867 | + if (yych <= 'Z') {
|
| 1868 | + if (yych <= '@')
|
| 1869 | + goto yy94;
|
| 1870 | + goto yy106;
|
| 1871 | + } else {
|
| 1872 | + if (yych <= '`')
|
| 1873 | + goto yy94;
|
| 1874 | + if (yych <= 'z')
|
| 1875 | + goto yy106;
|
| 1876 | + goto yy94;
|
| 1877 | + }
|
| 1878 | + }
|
| 1879 | + yy104:
|
| 1880 | + ++p;
|
| 1881 | + yych = *p;
|
| 1882 | + if (yych <= '=') {
|
| 1883 | + if (yych <= '.') {
|
| 1884 | + if (yych <= ',')
|
| 1885 | + goto yy94;
|
| 1886 | + if (yych >= '.')
|
| 1887 | + goto yy95;
|
| 1888 | + } else {
|
| 1889 | + if (yych <= '/')
|
| 1890 | + goto yy94;
|
| 1891 | + if (yych <= '9')
|
| 1892 | + goto yy106;
|
| 1893 | + goto yy94;
|
| 1894 | + }
|
| 1895 | + } else {
|
| 1896 | + if (yych <= 'Z') {
|
| 1897 | + if (yych <= '>')
|
| 1898 | + goto yy99;
|
| 1899 | + if (yych <= '@')
|
| 1900 | + goto yy94;
|
| 1901 | + goto yy106;
|
| 1902 | + } else {
|
| 1903 | + if (yych <= '`')
|
| 1904 | + goto yy94;
|
| 1905 | + if (yych <= 'z')
|
| 1906 | + goto yy106;
|
| 1907 | + goto yy94;
|
| 1908 | + }
|
| 1909 | + }
|
| 1910 | + yy105:
|
| 1911 | + ++p;
|
| 1912 | + yych = *p;
|
| 1913 | + if (yych <= '9') {
|
| 1914 | + if (yych == '-')
|
| 1915 | + goto yy107;
|
| 1916 | + if (yych <= '/')
|
| 1917 | + goto yy94;
|
| 1918 | + goto yy108;
|
| 1919 | + } else {
|
| 1920 | + if (yych <= 'Z') {
|
| 1921 | + if (yych <= '@')
|
| 1922 | + goto yy94;
|
| 1923 | + goto yy108;
|
| 1924 | + } else {
|
| 1925 | + if (yych <= '`')
|
| 1926 | + goto yy94;
|
| 1927 | + if (yych <= 'z')
|
| 1928 | + goto yy108;
|
| 1929 | + goto yy94;
|
| 1930 | + }
|
| 1931 | + }
|
| 1932 | + yy106:
|
| 1933 | + ++p;
|
| 1934 | + yych = *p;
|
| 1935 | + if (yych <= '=') {
|
| 1936 | + if (yych <= '.') {
|
| 1937 | + if (yych <= ',')
|
| 1938 | + goto yy94;
|
| 1939 | + if (yych >= '.')
|
| 1940 | + goto yy95;
|
| 1941 | + } else {
|
| 1942 | + if (yych <= '/')
|
| 1943 | + goto yy94;
|
| 1944 | + if (yych <= '9')
|
| 1945 | + goto yy108;
|
| 1946 | + goto yy94;
|
| 1947 | + }
|
| 1948 | + } else {
|
| 1949 | + if (yych <= 'Z') {
|
| 1950 | + if (yych <= '>')
|
| 1951 | + goto yy99;
|
| 1952 | + if (yych <= '@')
|
| 1953 | + goto yy94;
|
| 1954 | + goto yy108;
|
| 1955 | + } else {
|
| 1956 | + if (yych <= '`')
|
| 1957 | + goto yy94;
|
| 1958 | + if (yych <= 'z')
|
| 1959 | + goto yy108;
|
| 1960 | + goto yy94;
|
| 1961 | + }
|
| 1962 | + }
|
| 1963 | + yy107:
|
| 1964 | + ++p;
|
| 1965 | + yych = *p;
|
| 1966 | + if (yych <= '9') {
|
| 1967 | + if (yych == '-')
|
| 1968 | + goto yy109;
|
| 1969 | + if (yych <= '/')
|
| 1970 | + goto yy94;
|
| 1971 | + goto yy110;
|
| 1972 | + } else {
|
| 1973 | + if (yych <= 'Z') {
|
| 1974 | + if (yych <= '@')
|
| 1975 | + goto yy94;
|
| 1976 | + goto yy110;
|
| 1977 | + } else {
|
| 1978 | + if (yych <= '`')
|
| 1979 | + goto yy94;
|
| 1980 | + if (yych <= 'z')
|
| 1981 | + goto yy110;
|
| 1982 | + goto yy94;
|
| 1983 | + }
|
| 1984 | + }
|
| 1985 | + yy108:
|
| 1986 | + ++p;
|
| 1987 | + yych = *p;
|
| 1988 | + if (yych <= '=') {
|
| 1989 | + if (yych <= '.') {
|
| 1990 | + if (yych <= ',')
|
| 1991 | + goto yy94;
|
| 1992 | + if (yych >= '.')
|
| 1993 | + goto yy95;
|
| 1994 | + } else {
|
| 1995 | + if (yych <= '/')
|
| 1996 | + goto yy94;
|
| 1997 | + if (yych <= '9')
|
| 1998 | + goto yy110;
|
| 1999 | + goto yy94;
|
| 2000 | + }
|
| 2001 | + } else {
|
| 2002 | + if (yych <= 'Z') {
|
| 2003 | + if (yych <= '>')
|
| 2004 | + goto yy99;
|
| 2005 | + if (yych <= '@')
|
| 2006 | + goto yy94;
|
| 2007 | + goto yy110;
|
| 2008 | + } else {
|
| 2009 | + if (yych <= '`')
|
| 2010 | + goto yy94;
|
| 2011 | + if (yych <= 'z')
|
| 2012 | + goto yy110;
|
| 2013 | + goto yy94;
|
| 2014 | + }
|
| 2015 | + }
|
| 2016 | + yy109:
|
| 2017 | + ++p;
|
| 2018 | + yych = *p;
|
| 2019 | + if (yych <= '9') {
|
| 2020 | + if (yych == '-')
|
| 2021 | + goto yy111;
|
| 2022 | + if (yych <= '/')
|
| 2023 | + goto yy94;
|
| 2024 | + goto yy112;
|
| 2025 | + } else {
|
| 2026 | + if (yych <= 'Z') {
|
| 2027 | + if (yych <= '@')
|
| 2028 | + goto yy94;
|
| 2029 | + goto yy112;
|
| 2030 | + } else {
|
| 2031 | + if (yych <= '`')
|
| 2032 | + goto yy94;
|
| 2033 | + if (yych <= 'z')
|
| 2034 | + goto yy112;
|
| 2035 | + goto yy94;
|
| 2036 | + }
|
| 2037 | + }
|
| 2038 | + yy110:
|
| 2039 | + ++p;
|
| 2040 | + yych = *p;
|
| 2041 | + if (yych <= '=') {
|
| 2042 | + if (yych <= '.') {
|
| 2043 | + if (yych <= ',')
|
| 2044 | + goto yy94;
|
| 2045 | + if (yych >= '.')
|
| 2046 | + goto yy95;
|
| 2047 | + } else {
|
| 2048 | + if (yych <= '/')
|
| 2049 | + goto yy94;
|
| 2050 | + if (yych <= '9')
|
| 2051 | + goto yy112;
|
| 2052 | + goto yy94;
|
| 2053 | + }
|
| 2054 | + } else {
|
| 2055 | + if (yych <= 'Z') {
|
| 2056 | + if (yych <= '>')
|
| 2057 | + goto yy99;
|
| 2058 | + if (yych <= '@')
|
| 2059 | + goto yy94;
|
| 2060 | + goto yy112;
|
| 2061 | + } else {
|
| 2062 | + if (yych <= '`')
|
| 2063 | + goto yy94;
|
| 2064 | + if (yych <= 'z')
|
| 2065 | + goto yy112;
|
| 2066 | + goto yy94;
|
| 2067 | + }
|
| 2068 | + }
|
| 2069 | + yy111:
|
| 2070 | + ++p;
|
| 2071 | + yych = *p;
|
| 2072 | + if (yych <= '9') {
|
| 2073 | + if (yych == '-')
|
| 2074 | + goto yy113;
|
| 2075 | + if (yych <= '/')
|
| 2076 | + goto yy94;
|
| 2077 | + goto yy114;
|
| 2078 | + } else {
|
| 2079 | + if (yych <= 'Z') {
|
| 2080 | + if (yych <= '@')
|
| 2081 | + goto yy94;
|
| 2082 | + goto yy114;
|
| 2083 | + } else {
|
| 2084 | + if (yych <= '`')
|
| 2085 | + goto yy94;
|
| 2086 | + if (yych <= 'z')
|
| 2087 | + goto yy114;
|
| 2088 | + goto yy94;
|
| 2089 | + }
|
| 2090 | + }
|
| 2091 | + yy112:
|
| 2092 | + ++p;
|
| 2093 | + yych = *p;
|
| 2094 | + if (yych <= '=') {
|
| 2095 | + if (yych <= '.') {
|
| 2096 | + if (yych <= ',')
|
| 2097 | + goto yy94;
|
| 2098 | + if (yych >= '.')
|
| 2099 | + goto yy95;
|
| 2100 | + } else {
|
| 2101 | + if (yych <= '/')
|
| 2102 | + goto yy94;
|
| 2103 | + if (yych <= '9')
|
| 2104 | + goto yy114;
|
| 2105 | + goto yy94;
|
| 2106 | + }
|
| 2107 | + } else {
|
| 2108 | + if (yych <= 'Z') {
|
| 2109 | + if (yych <= '>')
|
| 2110 | + goto yy99;
|
| 2111 | + if (yych <= '@')
|
| 2112 | + goto yy94;
|
| 2113 | + goto yy114;
|
| 2114 | + } else {
|
| 2115 | + if (yych <= '`')
|
| 2116 | + goto yy94;
|
| 2117 | + if (yych <= 'z')
|
| 2118 | + goto yy114;
|
| 2119 | + goto yy94;
|
| 2120 | + }
|
| 2121 | + }
|
| 2122 | + yy113:
|
| 2123 | + ++p;
|
| 2124 | + yych = *p;
|
| 2125 | + if (yych <= '9') {
|
| 2126 | + if (yych == '-')
|
| 2127 | + goto yy115;
|
| 2128 | + if (yych <= '/')
|
| 2129 | + goto yy94;
|
| 2130 | + goto yy116;
|
| 2131 | + } else {
|
| 2132 | + if (yych <= 'Z') {
|
| 2133 | + if (yych <= '@')
|
| 2134 | + goto yy94;
|
| 2135 | + goto yy116;
|
| 2136 | + } else {
|
| 2137 | + if (yych <= '`')
|
| 2138 | + goto yy94;
|
| 2139 | + if (yych <= 'z')
|
| 2140 | + goto yy116;
|
| 2141 | + goto yy94;
|
| 2142 | + }
|
| 2143 | + }
|
| 2144 | + yy114:
|
| 2145 | + ++p;
|
| 2146 | + yych = *p;
|
| 2147 | + if (yych <= '=') {
|
| 2148 | + if (yych <= '.') {
|
| 2149 | + if (yych <= ',')
|
| 2150 | + goto yy94;
|
| 2151 | + if (yych >= '.')
|
| 2152 | + goto yy95;
|
| 2153 | + } else {
|
| 2154 | + if (yych <= '/')
|
| 2155 | + goto yy94;
|
| 2156 | + if (yych <= '9')
|
| 2157 | + goto yy116;
|
| 2158 | + goto yy94;
|
| 2159 | + }
|
| 2160 | + } else {
|
| 2161 | + if (yych <= 'Z') {
|
| 2162 | + if (yych <= '>')
|
| 2163 | + goto yy99;
|
| 2164 | + if (yych <= '@')
|
| 2165 | + goto yy94;
|
| 2166 | + goto yy116;
|
| 2167 | + } else {
|
| 2168 | + if (yych <= '`')
|
| 2169 | + goto yy94;
|
| 2170 | + if (yych <= 'z')
|
| 2171 | + goto yy116;
|
| 2172 | + goto yy94;
|
| 2173 | + }
|
| 2174 | + }
|
| 2175 | + yy115:
|
| 2176 | + ++p;
|
| 2177 | + yych = *p;
|
| 2178 | + if (yych <= '9') {
|
| 2179 | + if (yych == '-')
|
| 2180 | + goto yy117;
|
| 2181 | + if (yych <= '/')
|
| 2182 | + goto yy94;
|
| 2183 | + goto yy118;
|
| 2184 | + } else {
|
| 2185 | + if (yych <= 'Z') {
|
| 2186 | + if (yych <= '@')
|
| 2187 | + goto yy94;
|
| 2188 | + goto yy118;
|
| 2189 | + } else {
|
| 2190 | + if (yych <= '`')
|
| 2191 | + goto yy94;
|
| 2192 | + if (yych <= 'z')
|
| 2193 | + goto yy118;
|
| 2194 | + goto yy94;
|
| 2195 | + }
|
| 2196 | + }
|
| 2197 | + yy116:
|
| 2198 | + ++p;
|
| 2199 | + yych = *p;
|
| 2200 | + if (yych <= '=') {
|
| 2201 | + if (yych <= '.') {
|
| 2202 | + if (yych <= ',')
|
| 2203 | + goto yy94;
|
| 2204 | + if (yych >= '.')
|
| 2205 | + goto yy95;
|
| 2206 | + } else {
|
| 2207 | + if (yych <= '/')
|
| 2208 | + goto yy94;
|
| 2209 | + if (yych <= '9')
|
| 2210 | + goto yy118;
|
| 2211 | + goto yy94;
|
| 2212 | + }
|
| 2213 | + } else {
|
| 2214 | + if (yych <= 'Z') {
|
| 2215 | + if (yych <= '>')
|
| 2216 | + goto yy99;
|
| 2217 | + if (yych <= '@')
|
| 2218 | + goto yy94;
|
| 2219 | + goto yy118;
|
| 2220 | + } else {
|
| 2221 | + if (yych <= '`')
|
| 2222 | + goto yy94;
|
| 2223 | + if (yych <= 'z')
|
| 2224 | + goto yy118;
|
| 2225 | + goto yy94;
|
| 2226 | + }
|
| 2227 | + }
|
| 2228 | + yy117:
|
| 2229 | + ++p;
|
| 2230 | + yych = *p;
|
| 2231 | + if (yych <= '9') {
|
| 2232 | + if (yych == '-')
|
| 2233 | + goto yy119;
|
| 2234 | + if (yych <= '/')
|
| 2235 | + goto yy94;
|
| 2236 | + goto yy120;
|
| 2237 | + } else {
|
| 2238 | + if (yych <= 'Z') {
|
| 2239 | + if (yych <= '@')
|
| 2240 | + goto yy94;
|
| 2241 | + goto yy120;
|
| 2242 | + } else {
|
| 2243 | + if (yych <= '`')
|
| 2244 | + goto yy94;
|
| 2245 | + if (yych <= 'z')
|
| 2246 | + goto yy120;
|
| 2247 | + goto yy94;
|
| 2248 | + }
|
| 2249 | + }
|
| 2250 | + yy118:
|
| 2251 | + ++p;
|
| 2252 | + yych = *p;
|
| 2253 | + if (yych <= '=') {
|
| 2254 | + if (yych <= '.') {
|
| 2255 | + if (yych <= ',')
|
| 2256 | + goto yy94;
|
| 2257 | + if (yych >= '.')
|
| 2258 | + goto yy95;
|
| 2259 | + } else {
|
| 2260 | + if (yych <= '/')
|
| 2261 | + goto yy94;
|
| 2262 | + if (yych <= '9')
|
| 2263 | + goto yy120;
|
| 2264 | + goto yy94;
|
| 2265 | + }
|
| 2266 | + } else {
|
| 2267 | + if (yych <= 'Z') {
|
| 2268 | + if (yych <= '>')
|
| 2269 | + goto yy99;
|
| 2270 | + if (yych <= '@')
|
| 2271 | + goto yy94;
|
| 2272 | + goto yy120;
|
| 2273 | + } else {
|
| 2274 | + if (yych <= '`')
|
| 2275 | + goto yy94;
|
| 2276 | + if (yych <= 'z')
|
| 2277 | + goto yy120;
|
| 2278 | + goto yy94;
|
| 2279 | + }
|
| 2280 | + }
|
| 2281 | + yy119:
|
| 2282 | + ++p;
|
| 2283 | + yych = *p;
|
| 2284 | + if (yych <= '9') {
|
| 2285 | + if (yych == '-')
|
| 2286 | + goto yy121;
|
| 2287 | + if (yych <= '/')
|
| 2288 | + goto yy94;
|
| 2289 | + goto yy122;
|
| 2290 | + } else {
|
| 2291 | + if (yych <= 'Z') {
|
| 2292 | + if (yych <= '@')
|
| 2293 | + goto yy94;
|
| 2294 | + goto yy122;
|
| 2295 | + } else {
|
| 2296 | + if (yych <= '`')
|
| 2297 | + goto yy94;
|
| 2298 | + if (yych <= 'z')
|
| 2299 | + goto yy122;
|
| 2300 | + goto yy94;
|
| 2301 | + }
|
| 2302 | + }
|
| 2303 | + yy120:
|
| 2304 | + ++p;
|
| 2305 | + yych = *p;
|
| 2306 | + if (yych <= '=') {
|
| 2307 | + if (yych <= '.') {
|
| 2308 | + if (yych <= ',')
|
| 2309 | + goto yy94;
|
| 2310 | + if (yych >= '.')
|
| 2311 | + goto yy95;
|
| 2312 | + } else {
|
| 2313 | + if (yych <= '/')
|
| 2314 | + goto yy94;
|
| 2315 | + if (yych <= '9')
|
| 2316 | + goto yy122;
|
| 2317 | + goto yy94;
|
| 2318 | + }
|
| 2319 | + } else {
|
| 2320 | + if (yych <= 'Z') {
|
| 2321 | + if (yych <= '>')
|
| 2322 | + goto yy99;
|
| 2323 | + if (yych <= '@')
|
| 2324 | + goto yy94;
|
| 2325 | + goto yy122;
|
| 2326 | + } else {
|
| 2327 | + if (yych <= '`')
|
| 2328 | + goto yy94;
|
| 2329 | + if (yych <= 'z')
|
| 2330 | + goto yy122;
|
| 2331 | + goto yy94;
|
| 2332 | + }
|
| 2333 | + }
|
| 2334 | + yy121:
|
| 2335 | + ++p;
|
| 2336 | + yych = *p;
|
| 2337 | + if (yych <= '9') {
|
| 2338 | + if (yych == '-')
|
| 2339 | + goto yy123;
|
| 2340 | + if (yych <= '/')
|
| 2341 | + goto yy94;
|
| 2342 | + goto yy124;
|
| 2343 | + } else {
|
| 2344 | + if (yych <= 'Z') {
|
| 2345 | + if (yych <= '@')
|
| 2346 | + goto yy94;
|
| 2347 | + goto yy124;
|
| 2348 | + } else {
|
| 2349 | + if (yych <= '`')
|
| 2350 | + goto yy94;
|
| 2351 | + if (yych <= 'z')
|
| 2352 | + goto yy124;
|
| 2353 | + goto yy94;
|
| 2354 | + }
|
| 2355 | + }
|
| 2356 | + yy122:
|
| 2357 | + ++p;
|
| 2358 | + yych = *p;
|
| 2359 | + if (yych <= '=') {
|
| 2360 | + if (yych <= '.') {
|
| 2361 | + if (yych <= ',')
|
| 2362 | + goto yy94;
|
| 2363 | + if (yych >= '.')
|
| 2364 | + goto yy95;
|
| 2365 | + } else {
|
| 2366 | + if (yych <= '/')
|
| 2367 | + goto yy94;
|
| 2368 | + if (yych <= '9')
|
| 2369 | + goto yy124;
|
| 2370 | + goto yy94;
|
| 2371 | + }
|
| 2372 | + } else {
|
| 2373 | + if (yych <= 'Z') {
|
| 2374 | + if (yych <= '>')
|
| 2375 | + goto yy99;
|
| 2376 | + if (yych <= '@')
|
| 2377 | + goto yy94;
|
| 2378 | + goto yy124;
|
| 2379 | + } else {
|
| 2380 | + if (yych <= '`')
|
| 2381 | + goto yy94;
|
| 2382 | + if (yych <= 'z')
|
| 2383 | + goto yy124;
|
| 2384 | + goto yy94;
|
| 2385 | + }
|
| 2386 | + }
|
| 2387 | + yy123:
|
| 2388 | + ++p;
|
| 2389 | + yych = *p;
|
| 2390 | + if (yych <= '9') {
|
| 2391 | + if (yych == '-')
|
| 2392 | + goto yy125;
|
| 2393 | + if (yych <= '/')
|
| 2394 | + goto yy94;
|
| 2395 | + goto yy126;
|
| 2396 | + } else {
|
| 2397 | + if (yych <= 'Z') {
|
| 2398 | + if (yych <= '@')
|
| 2399 | + goto yy94;
|
| 2400 | + goto yy126;
|
| 2401 | + } else {
|
| 2402 | + if (yych <= '`')
|
| 2403 | + goto yy94;
|
| 2404 | + if (yych <= 'z')
|
| 2405 | + goto yy126;
|
| 2406 | + goto yy94;
|
| 2407 | + }
|
| 2408 | + }
|
| 2409 | + yy124:
|
| 2410 | + ++p;
|
| 2411 | + yych = *p;
|
| 2412 | + if (yych <= '=') {
|
| 2413 | + if (yych <= '.') {
|
| 2414 | + if (yych <= ',')
|
| 2415 | + goto yy94;
|
| 2416 | + if (yych >= '.')
|
| 2417 | + goto yy95;
|
| 2418 | + } else {
|
| 2419 | + if (yych <= '/')
|
| 2420 | + goto yy94;
|
| 2421 | + if (yych <= '9')
|
| 2422 | + goto yy126;
|
| 2423 | + goto yy94;
|
| 2424 | + }
|
| 2425 | + } else {
|
| 2426 | + if (yych <= 'Z') {
|
| 2427 | + if (yych <= '>')
|
| 2428 | + goto yy99;
|
| 2429 | + if (yych <= '@')
|
| 2430 | + goto yy94;
|
| 2431 | + goto yy126;
|
| 2432 | + } else {
|
| 2433 | + if (yych <= '`')
|
| 2434 | + goto yy94;
|
| 2435 | + if (yych <= 'z')
|
| 2436 | + goto yy126;
|
| 2437 | + goto yy94;
|
| 2438 | + }
|
| 2439 | + }
|
| 2440 | + yy125:
|
| 2441 | + ++p;
|
| 2442 | + yych = *p;
|
| 2443 | + if (yych <= '9') {
|
| 2444 | + if (yych == '-')
|
| 2445 | + goto yy127;
|
| 2446 | + if (yych <= '/')
|
| 2447 | + goto yy94;
|
| 2448 | + goto yy128;
|
| 2449 | + } else {
|
| 2450 | + if (yych <= 'Z') {
|
| 2451 | + if (yych <= '@')
|
| 2452 | + goto yy94;
|
| 2453 | + goto yy128;
|
| 2454 | + } else {
|
| 2455 | + if (yych <= '`')
|
| 2456 | + goto yy94;
|
| 2457 | + if (yych <= 'z')
|
| 2458 | + goto yy128;
|
| 2459 | + goto yy94;
|
| 2460 | + }
|
| 2461 | + }
|
| 2462 | + yy126:
|
| 2463 | + ++p;
|
| 2464 | + yych = *p;
|
| 2465 | + if (yych <= '=') {
|
| 2466 | + if (yych <= '.') {
|
| 2467 | + if (yych <= ',')
|
| 2468 | + goto yy94;
|
| 2469 | + if (yych >= '.')
|
| 2470 | + goto yy95;
|
| 2471 | + } else {
|
| 2472 | + if (yych <= '/')
|
| 2473 | + goto yy94;
|
| 2474 | + if (yych <= '9')
|
| 2475 | + goto yy128;
|
| 2476 | + goto yy94;
|
| 2477 | + }
|
| 2478 | + } else {
|
| 2479 | + if (yych <= 'Z') {
|
| 2480 | + if (yych <= '>')
|
| 2481 | + goto yy99;
|
| 2482 | + if (yych <= '@')
|
| 2483 | + goto yy94;
|
| 2484 | + goto yy128;
|
| 2485 | + } else {
|
| 2486 | + if (yych <= '`')
|
| 2487 | + goto yy94;
|
| 2488 | + if (yych <= 'z')
|
| 2489 | + goto yy128;
|
| 2490 | + goto yy94;
|
| 2491 | + }
|
| 2492 | + }
|
| 2493 | + yy127:
|
| 2494 | + ++p;
|
| 2495 | + yych = *p;
|
| 2496 | + if (yych <= '9') {
|
| 2497 | + if (yych == '-')
|
| 2498 | + goto yy129;
|
| 2499 | + if (yych <= '/')
|
| 2500 | + goto yy94;
|
| 2501 | + goto yy130;
|
| 2502 | + } else {
|
| 2503 | + if (yych <= 'Z') {
|
| 2504 | + if (yych <= '@')
|
| 2505 | + goto yy94;
|
| 2506 | + goto yy130;
|
| 2507 | + } else {
|
| 2508 | + if (yych <= '`')
|
| 2509 | + goto yy94;
|
| 2510 | + if (yych <= 'z')
|
| 2511 | + goto yy130;
|
| 2512 | + goto yy94;
|
| 2513 | + }
|
| 2514 | + }
|
| 2515 | + yy128:
|
| 2516 | + ++p;
|
| 2517 | + yych = *p;
|
| 2518 | + if (yych <= '=') {
|
| 2519 | + if (yych <= '.') {
|
| 2520 | + if (yych <= ',')
|
| 2521 | + goto yy94;
|
| 2522 | + if (yych >= '.')
|
| 2523 | + goto yy95;
|
| 2524 | + } else {
|
| 2525 | + if (yych <= '/')
|
| 2526 | + goto yy94;
|
| 2527 | + if (yych <= '9')
|
| 2528 | + goto yy130;
|
| 2529 | + goto yy94;
|
| 2530 | + }
|
| 2531 | + } else {
|
| 2532 | + if (yych <= 'Z') {
|
| 2533 | + if (yych <= '>')
|
| 2534 | + goto yy99;
|
| 2535 | + if (yych <= '@')
|
| 2536 | + goto yy94;
|
| 2537 | + goto yy130;
|
| 2538 | + } else {
|
| 2539 | + if (yych <= '`')
|
| 2540 | + goto yy94;
|
| 2541 | + if (yych <= 'z')
|
| 2542 | + goto yy130;
|
| 2543 | + goto yy94;
|
| 2544 | + }
|
| 2545 | + }
|
| 2546 | + yy129:
|
| 2547 | + ++p;
|
| 2548 | + yych = *p;
|
| 2549 | + if (yych <= '9') {
|
| 2550 | + if (yych == '-')
|
| 2551 | + goto yy131;
|
| 2552 | + if (yych <= '/')
|
| 2553 | + goto yy94;
|
| 2554 | + goto yy132;
|
| 2555 | + } else {
|
| 2556 | + if (yych <= 'Z') {
|
| 2557 | + if (yych <= '@')
|
| 2558 | + goto yy94;
|
| 2559 | + goto yy132;
|
| 2560 | + } else {
|
| 2561 | + if (yych <= '`')
|
| 2562 | + goto yy94;
|
| 2563 | + if (yych <= 'z')
|
| 2564 | + goto yy132;
|
| 2565 | + goto yy94;
|
| 2566 | + }
|
| 2567 | + }
|
| 2568 | + yy130:
|
| 2569 | + ++p;
|
| 2570 | + yych = *p;
|
| 2571 | + if (yych <= '=') {
|
| 2572 | + if (yych <= '.') {
|
| 2573 | + if (yych <= ',')
|
| 2574 | + goto yy94;
|
| 2575 | + if (yych >= '.')
|
| 2576 | + goto yy95;
|
| 2577 | + } else {
|
| 2578 | + if (yych <= '/')
|
| 2579 | + goto yy94;
|
| 2580 | + if (yych <= '9')
|
| 2581 | + goto yy132;
|
| 2582 | + goto yy94;
|
| 2583 | + }
|
| 2584 | + } else {
|
| 2585 | + if (yych <= 'Z') {
|
| 2586 | + if (yych <= '>')
|
| 2587 | + goto yy99;
|
| 2588 | + if (yych <= '@')
|
| 2589 | + goto yy94;
|
| 2590 | + goto yy132;
|
| 2591 | + } else {
|
| 2592 | + if (yych <= '`')
|
| 2593 | + goto yy94;
|
| 2594 | + if (yych <= 'z')
|
| 2595 | + goto yy132;
|
| 2596 | + goto yy94;
|
| 2597 | + }
|
| 2598 | + }
|
| 2599 | + yy131:
|
| 2600 | + ++p;
|
| 2601 | + yych = *p;
|
| 2602 | + if (yych <= '9') {
|
| 2603 | + if (yych == '-')
|
| 2604 | + goto yy133;
|
| 2605 | + if (yych <= '/')
|
| 2606 | + goto yy94;
|
| 2607 | + goto yy134;
|
| 2608 | + } else {
|
| 2609 | + if (yych <= 'Z') {
|
| 2610 | + if (yych <= '@')
|
| 2611 | + goto yy94;
|
| 2612 | + goto yy134;
|
| 2613 | + } else {
|
| 2614 | + if (yych <= '`')
|
| 2615 | + goto yy94;
|
| 2616 | + if (yych <= 'z')
|
| 2617 | + goto yy134;
|
| 2618 | + goto yy94;
|
| 2619 | + }
|
| 2620 | + }
|
| 2621 | + yy132:
|
| 2622 | + ++p;
|
| 2623 | + yych = *p;
|
| 2624 | + if (yych <= '=') {
|
| 2625 | + if (yych <= '.') {
|
| 2626 | + if (yych <= ',')
|
| 2627 | + goto yy94;
|
| 2628 | + if (yych >= '.')
|
| 2629 | + goto yy95;
|
| 2630 | + } else {
|
| 2631 | + if (yych <= '/')
|
| 2632 | + goto yy94;
|
| 2633 | + if (yych <= '9')
|
| 2634 | + goto yy134;
|
| 2635 | + goto yy94;
|
| 2636 | + }
|
| 2637 | + } else {
|
| 2638 | + if (yych <= 'Z') {
|
| 2639 | + if (yych <= '>')
|
| 2640 | + goto yy99;
|
| 2641 | + if (yych <= '@')
|
| 2642 | + goto yy94;
|
| 2643 | + goto yy134;
|
| 2644 | + } else {
|
| 2645 | + if (yych <= '`')
|
| 2646 | + goto yy94;
|
| 2647 | + if (yych <= 'z')
|
| 2648 | + goto yy134;
|
| 2649 | + goto yy94;
|
| 2650 | + }
|
| 2651 | + }
|
| 2652 | + yy133:
|
| 2653 | + ++p;
|
| 2654 | + yych = *p;
|
| 2655 | + if (yych <= '9') {
|
| 2656 | + if (yych == '-')
|
| 2657 | + goto yy135;
|
| 2658 | + if (yych <= '/')
|
| 2659 | + goto yy94;
|
| 2660 | + goto yy136;
|
| 2661 | + } else {
|
| 2662 | + if (yych <= 'Z') {
|
| 2663 | + if (yych <= '@')
|
| 2664 | + goto yy94;
|
| 2665 | + goto yy136;
|
| 2666 | + } else {
|
| 2667 | + if (yych <= '`')
|
| 2668 | + goto yy94;
|
| 2669 | + if (yych <= 'z')
|
| 2670 | + goto yy136;
|
| 2671 | + goto yy94;
|
| 2672 | + }
|
| 2673 | + }
|
| 2674 | + yy134:
|
| 2675 | + ++p;
|
| 2676 | + yych = *p;
|
| 2677 | + if (yych <= '=') {
|
| 2678 | + if (yych <= '.') {
|
| 2679 | + if (yych <= ',')
|
| 2680 | + goto yy94;
|
| 2681 | + if (yych >= '.')
|
| 2682 | + goto yy95;
|
| 2683 | + } else {
|
| 2684 | + if (yych <= '/')
|
| 2685 | + goto yy94;
|
| 2686 | + if (yych <= '9')
|
| 2687 | + goto yy136;
|
| 2688 | + goto yy94;
|
| 2689 | + }
|
| 2690 | + } else {
|
| 2691 | + if (yych <= 'Z') {
|
| 2692 | + if (yych <= '>')
|
| 2693 | + goto yy99;
|
| 2694 | + if (yych <= '@')
|
| 2695 | + goto yy94;
|
| 2696 | + goto yy136;
|
| 2697 | + } else {
|
| 2698 | + if (yych <= '`')
|
| 2699 | + goto yy94;
|
| 2700 | + if (yych <= 'z')
|
| 2701 | + goto yy136;
|
| 2702 | + goto yy94;
|
| 2703 | + }
|
| 2704 | + }
|
| 2705 | + yy135:
|
| 2706 | + ++p;
|
| 2707 | + yych = *p;
|
| 2708 | + if (yych <= '9') {
|
| 2709 | + if (yych == '-')
|
| 2710 | + goto yy137;
|
| 2711 | + if (yych <= '/')
|
| 2712 | + goto yy94;
|
| 2713 | + goto yy138;
|
| 2714 | + } else {
|
| 2715 | + if (yych <= 'Z') {
|
| 2716 | + if (yych <= '@')
|
| 2717 | + goto yy94;
|
| 2718 | + goto yy138;
|
| 2719 | + } else {
|
| 2720 | + if (yych <= '`')
|
| 2721 | + goto yy94;
|
| 2722 | + if (yych <= 'z')
|
| 2723 | + goto yy138;
|
| 2724 | + goto yy94;
|
| 2725 | + }
|
| 2726 | + }
|
| 2727 | + yy136:
|
| 2728 | + ++p;
|
| 2729 | + yych = *p;
|
| 2730 | + if (yych <= '=') {
|
| 2731 | + if (yych <= '.') {
|
| 2732 | + if (yych <= ',')
|
| 2733 | + goto yy94;
|
| 2734 | + if (yych >= '.')
|
| 2735 | + goto yy95;
|
| 2736 | + } else {
|
| 2737 | + if (yych <= '/')
|
| 2738 | + goto yy94;
|
| 2739 | + if (yych <= '9')
|
| 2740 | + goto yy138;
|
| 2741 | + goto yy94;
|
| 2742 | + }
|
| 2743 | + } else {
|
| 2744 | + if (yych <= 'Z') {
|
| 2745 | + if (yych <= '>')
|
| 2746 | + goto yy99;
|
| 2747 | + if (yych <= '@')
|
| 2748 | + goto yy94;
|
| 2749 | + goto yy138;
|
| 2750 | + } else {
|
| 2751 | + if (yych <= '`')
|
| 2752 | + goto yy94;
|
| 2753 | + if (yych <= 'z')
|
| 2754 | + goto yy138;
|
| 2755 | + goto yy94;
|
| 2756 | + }
|
| 2757 | + }
|
| 2758 | + yy137:
|
| 2759 | + ++p;
|
| 2760 | + yych = *p;
|
| 2761 | + if (yych <= '9') {
|
| 2762 | + if (yych == '-')
|
| 2763 | + goto yy139;
|
| 2764 | + if (yych <= '/')
|
| 2765 | + goto yy94;
|
| 2766 | + goto yy140;
|
| 2767 | + } else {
|
| 2768 | + if (yych <= 'Z') {
|
| 2769 | + if (yych <= '@')
|
| 2770 | + goto yy94;
|
| 2771 | + goto yy140;
|
| 2772 | + } else {
|
| 2773 | + if (yych <= '`')
|
| 2774 | + goto yy94;
|
| 2775 | + if (yych <= 'z')
|
| 2776 | + goto yy140;
|
| 2777 | + goto yy94;
|
| 2778 | + }
|
| 2779 | + }
|
| 2780 | + yy138:
|
| 2781 | + ++p;
|
| 2782 | + yych = *p;
|
| 2783 | + if (yych <= '=') {
|
| 2784 | + if (yych <= '.') {
|
| 2785 | + if (yych <= ',')
|
| 2786 | + goto yy94;
|
| 2787 | + if (yych >= '.')
|
| 2788 | + goto yy95;
|
| 2789 | + } else {
|
| 2790 | + if (yych <= '/')
|
| 2791 | + goto yy94;
|
| 2792 | + if (yych <= '9')
|
| 2793 | + goto yy140;
|
| 2794 | + goto yy94;
|
| 2795 | + }
|
| 2796 | + } else {
|
| 2797 | + if (yych <= 'Z') {
|
| 2798 | + if (yych <= '>')
|
| 2799 | + goto yy99;
|
| 2800 | + if (yych <= '@')
|
| 2801 | + goto yy94;
|
| 2802 | + goto yy140;
|
| 2803 | + } else {
|
| 2804 | + if (yych <= '`')
|
| 2805 | + goto yy94;
|
| 2806 | + if (yych <= 'z')
|
| 2807 | + goto yy140;
|
| 2808 | + goto yy94;
|
| 2809 | + }
|
| 2810 | + }
|
| 2811 | + yy139:
|
| 2812 | + ++p;
|
| 2813 | + yych = *p;
|
| 2814 | + if (yych <= '9') {
|
| 2815 | + if (yych == '-')
|
| 2816 | + goto yy141;
|
| 2817 | + if (yych <= '/')
|
| 2818 | + goto yy94;
|
| 2819 | + goto yy142;
|
| 2820 | + } else {
|
| 2821 | + if (yych <= 'Z') {
|
| 2822 | + if (yych <= '@')
|
| 2823 | + goto yy94;
|
| 2824 | + goto yy142;
|
| 2825 | + } else {
|
| 2826 | + if (yych <= '`')
|
| 2827 | + goto yy94;
|
| 2828 | + if (yych <= 'z')
|
| 2829 | + goto yy142;
|
| 2830 | + goto yy94;
|
| 2831 | + }
|
| 2832 | + }
|
| 2833 | + yy140:
|
| 2834 | + ++p;
|
| 2835 | + yych = *p;
|
| 2836 | + if (yych <= '=') {
|
| 2837 | + if (yych <= '.') {
|
| 2838 | + if (yych <= ',')
|
| 2839 | + goto yy94;
|
| 2840 | + if (yych >= '.')
|
| 2841 | + goto yy95;
|
| 2842 | + } else {
|
| 2843 | + if (yych <= '/')
|
| 2844 | + goto yy94;
|
| 2845 | + if (yych <= '9')
|
| 2846 | + goto yy142;
|
| 2847 | + goto yy94;
|
| 2848 | + }
|
| 2849 | + } else {
|
| 2850 | + if (yych <= 'Z') {
|
| 2851 | + if (yych <= '>')
|
| 2852 | + goto yy99;
|
| 2853 | + if (yych <= '@')
|
| 2854 | + goto yy94;
|
| 2855 | + goto yy142;
|
| 2856 | + } else {
|
| 2857 | + if (yych <= '`')
|
| 2858 | + goto yy94;
|
| 2859 | + if (yych <= 'z')
|
| 2860 | + goto yy142;
|
| 2861 | + goto yy94;
|
| 2862 | + }
|
| 2863 | + }
|
| 2864 | + yy141:
|
| 2865 | + ++p;
|
| 2866 | + yych = *p;
|
| 2867 | + if (yych <= '9') {
|
| 2868 | + if (yych == '-')
|
| 2869 | + goto yy143;
|
| 2870 | + if (yych <= '/')
|
| 2871 | + goto yy94;
|
| 2872 | + goto yy144;
|
| 2873 | + } else {
|
| 2874 | + if (yych <= 'Z') {
|
| 2875 | + if (yych <= '@')
|
| 2876 | + goto yy94;
|
| 2877 | + goto yy144;
|
| 2878 | + } else {
|
| 2879 | + if (yych <= '`')
|
| 2880 | + goto yy94;
|
| 2881 | + if (yych <= 'z')
|
| 2882 | + goto yy144;
|
| 2883 | + goto yy94;
|
| 2884 | + }
|
| 2885 | + }
|
| 2886 | + yy142:
|
| 2887 | + ++p;
|
| 2888 | + yych = *p;
|
| 2889 | + if (yych <= '=') {
|
| 2890 | + if (yych <= '.') {
|
| 2891 | + if (yych <= ',')
|
| 2892 | + goto yy94;
|
| 2893 | + if (yych >= '.')
|
| 2894 | + goto yy95;
|
| 2895 | + } else {
|
| 2896 | + if (yych <= '/')
|
| 2897 | + goto yy94;
|
| 2898 | + if (yych <= '9')
|
| 2899 | + goto yy144;
|
| 2900 | + goto yy94;
|
| 2901 | + }
|
| 2902 | + } else {
|
| 2903 | + if (yych <= 'Z') {
|
| 2904 | + if (yych <= '>')
|
| 2905 | + goto yy99;
|
| 2906 | + if (yych <= '@')
|
| 2907 | + goto yy94;
|
| 2908 | + goto yy144;
|
| 2909 | + } else {
|
| 2910 | + if (yych <= '`')
|
| 2911 | + goto yy94;
|
| 2912 | + if (yych <= 'z')
|
| 2913 | + goto yy144;
|
| 2914 | + goto yy94;
|
| 2915 | + }
|
| 2916 | + }
|
| 2917 | + yy143:
|
| 2918 | + ++p;
|
| 2919 | + yych = *p;
|
| 2920 | + if (yych <= '9') {
|
| 2921 | + if (yych == '-')
|
| 2922 | + goto yy145;
|
| 2923 | + if (yych <= '/')
|
| 2924 | + goto yy94;
|
| 2925 | + goto yy146;
|
| 2926 | + } else {
|
| 2927 | + if (yych <= 'Z') {
|
| 2928 | + if (yych <= '@')
|
| 2929 | + goto yy94;
|
| 2930 | + goto yy146;
|
| 2931 | + } else {
|
| 2932 | + if (yych <= '`')
|
| 2933 | + goto yy94;
|
| 2934 | + if (yych <= 'z')
|
| 2935 | + goto yy146;
|
| 2936 | + goto yy94;
|
| 2937 | + }
|
| 2938 | + }
|
| 2939 | + yy144:
|
| 2940 | + ++p;
|
| 2941 | + yych = *p;
|
| 2942 | + if (yych <= '=') {
|
| 2943 | + if (yych <= '.') {
|
| 2944 | + if (yych <= ',')
|
| 2945 | + goto yy94;
|
| 2946 | + if (yych >= '.')
|
| 2947 | + goto yy95;
|
| 2948 | + } else {
|
| 2949 | + if (yych <= '/')
|
| 2950 | + goto yy94;
|
| 2951 | + if (yych <= '9')
|
| 2952 | + goto yy146;
|
| 2953 | + goto yy94;
|
| 2954 | + }
|
| 2955 | + } else {
|
| 2956 | + if (yych <= 'Z') {
|
| 2957 | + if (yych <= '>')
|
| 2958 | + goto yy99;
|
| 2959 | + if (yych <= '@')
|
| 2960 | + goto yy94;
|
| 2961 | + goto yy146;
|
| 2962 | + } else {
|
| 2963 | + if (yych <= '`')
|
| 2964 | + goto yy94;
|
| 2965 | + if (yych <= 'z')
|
| 2966 | + goto yy146;
|
| 2967 | + goto yy94;
|
| 2968 | + }
|
| 2969 | + }
|
| 2970 | + yy145:
|
| 2971 | + ++p;
|
| 2972 | + yych = *p;
|
| 2973 | + if (yych <= '9') {
|
| 2974 | + if (yych == '-')
|
| 2975 | + goto yy147;
|
| 2976 | + if (yych <= '/')
|
| 2977 | + goto yy94;
|
| 2978 | + goto yy148;
|
| 2979 | + } else {
|
| 2980 | + if (yych <= 'Z') {
|
| 2981 | + if (yych <= '@')
|
| 2982 | + goto yy94;
|
| 2983 | + goto yy148;
|
| 2984 | + } else {
|
| 2985 | + if (yych <= '`')
|
| 2986 | + goto yy94;
|
| 2987 | + if (yych <= 'z')
|
| 2988 | + goto yy148;
|
| 2989 | + goto yy94;
|
| 2990 | + }
|
| 2991 | + }
|
| 2992 | + yy146:
|
| 2993 | + ++p;
|
| 2994 | + yych = *p;
|
| 2995 | + if (yych <= '=') {
|
| 2996 | + if (yych <= '.') {
|
| 2997 | + if (yych <= ',')
|
| 2998 | + goto yy94;
|
| 2999 | + if (yych >= '.')
|
| 3000 | + goto yy95;
|
| 3001 | + } else {
|
| 3002 | + if (yych <= '/')
|
| 3003 | + goto yy94;
|
| 3004 | + if (yych <= '9')
|
| 3005 | + goto yy148;
|
| 3006 | + goto yy94;
|
| 3007 | + }
|
| 3008 | + } else {
|
| 3009 | + if (yych <= 'Z') {
|
| 3010 | + if (yych <= '>')
|
| 3011 | + goto yy99;
|
| 3012 | + if (yych <= '@')
|
| 3013 | + goto yy94;
|
| 3014 | + goto yy148;
|
| 3015 | + } else {
|
| 3016 | + if (yych <= '`')
|
| 3017 | + goto yy94;
|
| 3018 | + if (yych <= 'z')
|
| 3019 | + goto yy148;
|
| 3020 | + goto yy94;
|
| 3021 | + }
|
| 3022 | + }
|
| 3023 | + yy147:
|
| 3024 | + ++p;
|
| 3025 | + yych = *p;
|
| 3026 | + if (yych <= '9') {
|
| 3027 | + if (yych == '-')
|
| 3028 | + goto yy149;
|
| 3029 | + if (yych <= '/')
|
| 3030 | + goto yy94;
|
| 3031 | + goto yy150;
|
| 3032 | + } else {
|
| 3033 | + if (yych <= 'Z') {
|
| 3034 | + if (yych <= '@')
|
| 3035 | + goto yy94;
|
| 3036 | + goto yy150;
|
| 3037 | + } else {
|
| 3038 | + if (yych <= '`')
|
| 3039 | + goto yy94;
|
| 3040 | + if (yych <= 'z')
|
| 3041 | + goto yy150;
|
| 3042 | + goto yy94;
|
| 3043 | + }
|
| 3044 | + }
|
| 3045 | + yy148:
|
| 3046 | + ++p;
|
| 3047 | + yych = *p;
|
| 3048 | + if (yych <= '=') {
|
| 3049 | + if (yych <= '.') {
|
| 3050 | + if (yych <= ',')
|
| 3051 | + goto yy94;
|
| 3052 | + if (yych >= '.')
|
| 3053 | + goto yy95;
|
| 3054 | + } else {
|
| 3055 | + if (yych <= '/')
|
| 3056 | + goto yy94;
|
| 3057 | + if (yych <= '9')
|
| 3058 | + goto yy150;
|
| 3059 | + goto yy94;
|
| 3060 | + }
|
| 3061 | + } else {
|
| 3062 | + if (yych <= 'Z') {
|
| 3063 | + if (yych <= '>')
|
| 3064 | + goto yy99;
|
| 3065 | + if (yych <= '@')
|
| 3066 | + goto yy94;
|
| 3067 | + goto yy150;
|
| 3068 | + } else {
|
| 3069 | + if (yych <= '`')
|
| 3070 | + goto yy94;
|
| 3071 | + if (yych <= 'z')
|
| 3072 | + goto yy150;
|
| 3073 | + goto yy94;
|
| 3074 | + }
|
| 3075 | + }
|
| 3076 | + yy149:
|
| 3077 | + ++p;
|
| 3078 | + yych = *p;
|
| 3079 | + if (yych <= '9') {
|
| 3080 | + if (yych == '-')
|
| 3081 | + goto yy151;
|
| 3082 | + if (yych <= '/')
|
| 3083 | + goto yy94;
|
| 3084 | + goto yy152;
|
| 3085 | + } else {
|
| 3086 | + if (yych <= 'Z') {
|
| 3087 | + if (yych <= '@')
|
| 3088 | + goto yy94;
|
| 3089 | + goto yy152;
|
| 3090 | + } else {
|
| 3091 | + if (yych <= '`')
|
| 3092 | + goto yy94;
|
| 3093 | + if (yych <= 'z')
|
| 3094 | + goto yy152;
|
| 3095 | + goto yy94;
|
| 3096 | + }
|
| 3097 | + }
|
| 3098 | + yy150:
|
| 3099 | + ++p;
|
| 3100 | + yych = *p;
|
| 3101 | + if (yych <= '=') {
|
| 3102 | + if (yych <= '.') {
|
| 3103 | + if (yych <= ',')
|
| 3104 | + goto yy94;
|
| 3105 | + if (yych >= '.')
|
| 3106 | + goto yy95;
|
| 3107 | + } else {
|
| 3108 | + if (yych <= '/')
|
| 3109 | + goto yy94;
|
| 3110 | + if (yych <= '9')
|
| 3111 | + goto yy152;
|
| 3112 | + goto yy94;
|
| 3113 | + }
|
| 3114 | + } else {
|
| 3115 | + if (yych <= 'Z') {
|
| 3116 | + if (yych <= '>')
|
| 3117 | + goto yy99;
|
| 3118 | + if (yych <= '@')
|
| 3119 | + goto yy94;
|
| 3120 | + goto yy152;
|
| 3121 | + } else {
|
| 3122 | + if (yych <= '`')
|
| 3123 | + goto yy94;
|
| 3124 | + if (yych <= 'z')
|
| 3125 | + goto yy152;
|
| 3126 | + goto yy94;
|
| 3127 | + }
|
| 3128 | + }
|
| 3129 | + yy151:
|
| 3130 | + ++p;
|
| 3131 | + yych = *p;
|
| 3132 | + if (yych <= '9') {
|
| 3133 | + if (yych == '-')
|
| 3134 | + goto yy153;
|
| 3135 | + if (yych <= '/')
|
| 3136 | + goto yy94;
|
| 3137 | + goto yy154;
|
| 3138 | + } else {
|
| 3139 | + if (yych <= 'Z') {
|
| 3140 | + if (yych <= '@')
|
| 3141 | + goto yy94;
|
| 3142 | + goto yy154;
|
| 3143 | + } else {
|
| 3144 | + if (yych <= '`')
|
| 3145 | + goto yy94;
|
| 3146 | + if (yych <= 'z')
|
| 3147 | + goto yy154;
|
| 3148 | + goto yy94;
|
| 3149 | + }
|
| 3150 | + }
|
| 3151 | + yy152:
|
| 3152 | + ++p;
|
| 3153 | + yych = *p;
|
| 3154 | + if (yych <= '=') {
|
| 3155 | + if (yych <= '.') {
|
| 3156 | + if (yych <= ',')
|
| 3157 | + goto yy94;
|
| 3158 | + if (yych >= '.')
|
| 3159 | + goto yy95;
|
| 3160 | + } else {
|
| 3161 | + if (yych <= '/')
|
| 3162 | + goto yy94;
|
| 3163 | + if (yych <= '9')
|
| 3164 | + goto yy154;
|
| 3165 | + goto yy94;
|
| 3166 | + }
|
| 3167 | + } else {
|
| 3168 | + if (yych <= 'Z') {
|
| 3169 | + if (yych <= '>')
|
| 3170 | + goto yy99;
|
| 3171 | + if (yych <= '@')
|
| 3172 | + goto yy94;
|
| 3173 | + goto yy154;
|
| 3174 | + } else {
|
| 3175 | + if (yych <= '`')
|
| 3176 | + goto yy94;
|
| 3177 | + if (yych <= 'z')
|
| 3178 | + goto yy154;
|
| 3179 | + goto yy94;
|
| 3180 | + }
|
| 3181 | + }
|
| 3182 | + yy153:
|
| 3183 | + ++p;
|
| 3184 | + yych = *p;
|
| 3185 | + if (yych <= '9') {
|
| 3186 | + if (yych == '-')
|
| 3187 | + goto yy155;
|
| 3188 | + if (yych <= '/')
|
| 3189 | + goto yy94;
|
| 3190 | + goto yy156;
|
| 3191 | + } else {
|
| 3192 | + if (yych <= 'Z') {
|
| 3193 | + if (yych <= '@')
|
| 3194 | + goto yy94;
|
| 3195 | + goto yy156;
|
| 3196 | + } else {
|
| 3197 | + if (yych <= '`')
|
| 3198 | + goto yy94;
|
| 3199 | + if (yych <= 'z')
|
| 3200 | + goto yy156;
|
| 3201 | + goto yy94;
|
| 3202 | + }
|
| 3203 | + }
|
| 3204 | + yy154:
|
| 3205 | + ++p;
|
| 3206 | + yych = *p;
|
| 3207 | + if (yych <= '=') {
|
| 3208 | + if (yych <= '.') {
|
| 3209 | + if (yych <= ',')
|
| 3210 | + goto yy94;
|
| 3211 | + if (yych >= '.')
|
| 3212 | + goto yy95;
|
| 3213 | + } else {
|
| 3214 | + if (yych <= '/')
|
| 3215 | + goto yy94;
|
| 3216 | + if (yych <= '9')
|
| 3217 | + goto yy156;
|
| 3218 | + goto yy94;
|
| 3219 | + }
|
| 3220 | + } else {
|
| 3221 | + if (yych <= 'Z') {
|
| 3222 | + if (yych <= '>')
|
| 3223 | + goto yy99;
|
| 3224 | + if (yych <= '@')
|
| 3225 | + goto yy94;
|
| 3226 | + goto yy156;
|
| 3227 | + } else {
|
| 3228 | + if (yych <= '`')
|
| 3229 | + goto yy94;
|
| 3230 | + if (yych <= 'z')
|
| 3231 | + goto yy156;
|
| 3232 | + goto yy94;
|
| 3233 | + }
|
| 3234 | + }
|
| 3235 | + yy155:
|
| 3236 | + ++p;
|
| 3237 | + yych = *p;
|
| 3238 | + if (yych <= '9') {
|
| 3239 | + if (yych == '-')
|
| 3240 | + goto yy157;
|
| 3241 | + if (yych <= '/')
|
| 3242 | + goto yy94;
|
| 3243 | + goto yy158;
|
| 3244 | + } else {
|
| 3245 | + if (yych <= 'Z') {
|
| 3246 | + if (yych <= '@')
|
| 3247 | + goto yy94;
|
| 3248 | + goto yy158;
|
| 3249 | + } else {
|
| 3250 | + if (yych <= '`')
|
| 3251 | + goto yy94;
|
| 3252 | + if (yych <= 'z')
|
| 3253 | + goto yy158;
|
| 3254 | + goto yy94;
|
| 3255 | + }
|
| 3256 | + }
|
| 3257 | + yy156:
|
| 3258 | + ++p;
|
| 3259 | + yych = *p;
|
| 3260 | + if (yych <= '=') {
|
| 3261 | + if (yych <= '.') {
|
| 3262 | + if (yych <= ',')
|
| 3263 | + goto yy94;
|
| 3264 | + if (yych >= '.')
|
| 3265 | + goto yy95;
|
| 3266 | + } else {
|
| 3267 | + if (yych <= '/')
|
| 3268 | + goto yy94;
|
| 3269 | + if (yych <= '9')
|
| 3270 | + goto yy158;
|
| 3271 | + goto yy94;
|
| 3272 | + }
|
| 3273 | + } else {
|
| 3274 | + if (yych <= 'Z') {
|
| 3275 | + if (yych <= '>')
|
| 3276 | + goto yy99;
|
| 3277 | + if (yych <= '@')
|
| 3278 | + goto yy94;
|
| 3279 | + goto yy158;
|
| 3280 | + } else {
|
| 3281 | + if (yych <= '`')
|
| 3282 | + goto yy94;
|
| 3283 | + if (yych <= 'z')
|
| 3284 | + goto yy158;
|
| 3285 | + goto yy94;
|
| 3286 | + }
|
| 3287 | + }
|
| 3288 | + yy157:
|
| 3289 | + ++p;
|
| 3290 | + yych = *p;
|
| 3291 | + if (yych <= '9') {
|
| 3292 | + if (yych == '-')
|
| 3293 | + goto yy159;
|
| 3294 | + if (yych <= '/')
|
| 3295 | + goto yy94;
|
| 3296 | + goto yy160;
|
| 3297 | + } else {
|
| 3298 | + if (yych <= 'Z') {
|
| 3299 | + if (yych <= '@')
|
| 3300 | + goto yy94;
|
| 3301 | + goto yy160;
|
| 3302 | + } else {
|
| 3303 | + if (yych <= '`')
|
| 3304 | + goto yy94;
|
| 3305 | + if (yych <= 'z')
|
| 3306 | + goto yy160;
|
| 3307 | + goto yy94;
|
| 3308 | + }
|
| 3309 | + }
|
| 3310 | + yy158:
|
| 3311 | + ++p;
|
| 3312 | + yych = *p;
|
| 3313 | + if (yych <= '=') {
|
| 3314 | + if (yych <= '.') {
|
| 3315 | + if (yych <= ',')
|
| 3316 | + goto yy94;
|
| 3317 | + if (yych >= '.')
|
| 3318 | + goto yy95;
|
| 3319 | + } else {
|
| 3320 | + if (yych <= '/')
|
| 3321 | + goto yy94;
|
| 3322 | + if (yych <= '9')
|
| 3323 | + goto yy160;
|
| 3324 | + goto yy94;
|
| 3325 | + }
|
| 3326 | + } else {
|
| 3327 | + if (yych <= 'Z') {
|
| 3328 | + if (yych <= '>')
|
| 3329 | + goto yy99;
|
| 3330 | + if (yych <= '@')
|
| 3331 | + goto yy94;
|
| 3332 | + goto yy160;
|
| 3333 | + } else {
|
| 3334 | + if (yych <= '`')
|
| 3335 | + goto yy94;
|
| 3336 | + if (yych <= 'z')
|
| 3337 | + goto yy160;
|
| 3338 | + goto yy94;
|
| 3339 | + }
|
| 3340 | + }
|
| 3341 | + yy159:
|
| 3342 | + ++p;
|
| 3343 | + yych = *p;
|
| 3344 | + if (yych <= '9') {
|
| 3345 | + if (yych == '-')
|
| 3346 | + goto yy161;
|
| 3347 | + if (yych <= '/')
|
| 3348 | + goto yy94;
|
| 3349 | + goto yy162;
|
| 3350 | + } else {
|
| 3351 | + if (yych <= 'Z') {
|
| 3352 | + if (yych <= '@')
|
| 3353 | + goto yy94;
|
| 3354 | + goto yy162;
|
| 3355 | + } else {
|
| 3356 | + if (yych <= '`')
|
| 3357 | + goto yy94;
|
| 3358 | + if (yych <= 'z')
|
| 3359 | + goto yy162;
|
| 3360 | + goto yy94;
|
| 3361 | + }
|
| 3362 | + }
|
| 3363 | + yy160:
|
| 3364 | + ++p;
|
| 3365 | + yych = *p;
|
| 3366 | + if (yych <= '=') {
|
| 3367 | + if (yych <= '.') {
|
| 3368 | + if (yych <= ',')
|
| 3369 | + goto yy94;
|
| 3370 | + if (yych >= '.')
|
| 3371 | + goto yy95;
|
| 3372 | + } else {
|
| 3373 | + if (yych <= '/')
|
| 3374 | + goto yy94;
|
| 3375 | + if (yych <= '9')
|
| 3376 | + goto yy162;
|
| 3377 | + goto yy94;
|
| 3378 | + }
|
| 3379 | + } else {
|
| 3380 | + if (yych <= 'Z') {
|
| 3381 | + if (yych <= '>')
|
| 3382 | + goto yy99;
|
| 3383 | + if (yych <= '@')
|
| 3384 | + goto yy94;
|
| 3385 | + goto yy162;
|
| 3386 | + } else {
|
| 3387 | + if (yych <= '`')
|
| 3388 | + goto yy94;
|
| 3389 | + if (yych <= 'z')
|
| 3390 | + goto yy162;
|
| 3391 | + goto yy94;
|
| 3392 | + }
|
| 3393 | + }
|
| 3394 | + yy161:
|
| 3395 | + ++p;
|
| 3396 | + yych = *p;
|
| 3397 | + if (yych <= '9') {
|
| 3398 | + if (yych == '-')
|
| 3399 | + goto yy163;
|
| 3400 | + if (yych <= '/')
|
| 3401 | + goto yy94;
|
| 3402 | + goto yy164;
|
| 3403 | + } else {
|
| 3404 | + if (yych <= 'Z') {
|
| 3405 | + if (yych <= '@')
|
| 3406 | + goto yy94;
|
| 3407 | + goto yy164;
|
| 3408 | + } else {
|
| 3409 | + if (yych <= '`')
|
| 3410 | + goto yy94;
|
| 3411 | + if (yych <= 'z')
|
| 3412 | + goto yy164;
|
| 3413 | + goto yy94;
|
| 3414 | + }
|
| 3415 | + }
|
| 3416 | + yy162:
|
| 3417 | + ++p;
|
| 3418 | + yych = *p;
|
| 3419 | + if (yych <= '=') {
|
| 3420 | + if (yych <= '.') {
|
| 3421 | + if (yych <= ',')
|
| 3422 | + goto yy94;
|
| 3423 | + if (yych >= '.')
|
| 3424 | + goto yy95;
|
| 3425 | + } else {
|
| 3426 | + if (yych <= '/')
|
| 3427 | + goto yy94;
|
| 3428 | + if (yych <= '9')
|
| 3429 | + goto yy164;
|
| 3430 | + goto yy94;
|
| 3431 | + }
|
| 3432 | + } else {
|
| 3433 | + if (yych <= 'Z') {
|
| 3434 | + if (yych <= '>')
|
| 3435 | + goto yy99;
|
| 3436 | + if (yych <= '@')
|
| 3437 | + goto yy94;
|
| 3438 | + goto yy164;
|
| 3439 | + } else {
|
| 3440 | + if (yych <= '`')
|
| 3441 | + goto yy94;
|
| 3442 | + if (yych <= 'z')
|
| 3443 | + goto yy164;
|
| 3444 | + goto yy94;
|
| 3445 | + }
|
| 3446 | + }
|
| 3447 | + yy163:
|
| 3448 | + ++p;
|
| 3449 | + yych = *p;
|
| 3450 | + if (yych <= '9') {
|
| 3451 | + if (yych == '-')
|
| 3452 | + goto yy165;
|
| 3453 | + if (yych <= '/')
|
| 3454 | + goto yy94;
|
| 3455 | + goto yy166;
|
| 3456 | + } else {
|
| 3457 | + if (yych <= 'Z') {
|
| 3458 | + if (yych <= '@')
|
| 3459 | + goto yy94;
|
| 3460 | + goto yy166;
|
| 3461 | + } else {
|
| 3462 | + if (yych <= '`')
|
| 3463 | + goto yy94;
|
| 3464 | + if (yych <= 'z')
|
| 3465 | + goto yy166;
|
| 3466 | + goto yy94;
|
| 3467 | + }
|
| 3468 | + }
|
| 3469 | + yy164:
|
| 3470 | + ++p;
|
| 3471 | + yych = *p;
|
| 3472 | + if (yych <= '=') {
|
| 3473 | + if (yych <= '.') {
|
| 3474 | + if (yych <= ',')
|
| 3475 | + goto yy94;
|
| 3476 | + if (yych >= '.')
|
| 3477 | + goto yy95;
|
| 3478 | + } else {
|
| 3479 | + if (yych <= '/')
|
| 3480 | + goto yy94;
|
| 3481 | + if (yych <= '9')
|
| 3482 | + goto yy166;
|
| 3483 | + goto yy94;
|
| 3484 | + }
|
| 3485 | + } else {
|
| 3486 | + if (yych <= 'Z') {
|
| 3487 | + if (yych <= '>')
|
| 3488 | + goto yy99;
|
| 3489 | + if (yych <= '@')
|
| 3490 | + goto yy94;
|
| 3491 | + goto yy166;
|
| 3492 | + } else {
|
| 3493 | + if (yych <= '`')
|
| 3494 | + goto yy94;
|
| 3495 | + if (yych <= 'z')
|
| 3496 | + goto yy166;
|
| 3497 | + goto yy94;
|
| 3498 | + }
|
| 3499 | + }
|
| 3500 | + yy165:
|
| 3501 | + ++p;
|
| 3502 | + yych = *p;
|
| 3503 | + if (yych <= '9') {
|
| 3504 | + if (yych == '-')
|
| 3505 | + goto yy167;
|
| 3506 | + if (yych <= '/')
|
| 3507 | + goto yy94;
|
| 3508 | + goto yy168;
|
| 3509 | + } else {
|
| 3510 | + if (yych <= 'Z') {
|
| 3511 | + if (yych <= '@')
|
| 3512 | + goto yy94;
|
| 3513 | + goto yy168;
|
| 3514 | + } else {
|
| 3515 | + if (yych <= '`')
|
| 3516 | + goto yy94;
|
| 3517 | + if (yych <= 'z')
|
| 3518 | + goto yy168;
|
| 3519 | + goto yy94;
|
| 3520 | + }
|
| 3521 | + }
|
| 3522 | + yy166:
|
| 3523 | + ++p;
|
| 3524 | + yych = *p;
|
| 3525 | + if (yych <= '=') {
|
| 3526 | + if (yych <= '.') {
|
| 3527 | + if (yych <= ',')
|
| 3528 | + goto yy94;
|
| 3529 | + if (yych >= '.')
|
| 3530 | + goto yy95;
|
| 3531 | + } else {
|
| 3532 | + if (yych <= '/')
|
| 3533 | + goto yy94;
|
| 3534 | + if (yych <= '9')
|
| 3535 | + goto yy168;
|
| 3536 | + goto yy94;
|
| 3537 | + }
|
| 3538 | + } else {
|
| 3539 | + if (yych <= 'Z') {
|
| 3540 | + if (yych <= '>')
|
| 3541 | + goto yy99;
|
| 3542 | + if (yych <= '@')
|
| 3543 | + goto yy94;
|
| 3544 | + goto yy168;
|
| 3545 | + } else {
|
| 3546 | + if (yych <= '`')
|
| 3547 | + goto yy94;
|
| 3548 | + if (yych <= 'z')
|
| 3549 | + goto yy168;
|
| 3550 | + goto yy94;
|
| 3551 | + }
|
| 3552 | + }
|
| 3553 | + yy167:
|
| 3554 | + ++p;
|
| 3555 | + yych = *p;
|
| 3556 | + if (yych <= '9') {
|
| 3557 | + if (yych == '-')
|
| 3558 | + goto yy169;
|
| 3559 | + if (yych <= '/')
|
| 3560 | + goto yy94;
|
| 3561 | + goto yy170;
|
| 3562 | + } else {
|
| 3563 | + if (yych <= 'Z') {
|
| 3564 | + if (yych <= '@')
|
| 3565 | + goto yy94;
|
| 3566 | + goto yy170;
|
| 3567 | + } else {
|
| 3568 | + if (yych <= '`')
|
| 3569 | + goto yy94;
|
| 3570 | + if (yych <= 'z')
|
| 3571 | + goto yy170;
|
| 3572 | + goto yy94;
|
| 3573 | + }
|
| 3574 | + }
|
| 3575 | + yy168:
|
| 3576 | + ++p;
|
| 3577 | + yych = *p;
|
| 3578 | + if (yych <= '=') {
|
| 3579 | + if (yych <= '.') {
|
| 3580 | + if (yych <= ',')
|
| 3581 | + goto yy94;
|
| 3582 | + if (yych >= '.')
|
| 3583 | + goto yy95;
|
| 3584 | + } else {
|
| 3585 | + if (yych <= '/')
|
| 3586 | + goto yy94;
|
| 3587 | + if (yych <= '9')
|
| 3588 | + goto yy170;
|
| 3589 | + goto yy94;
|
| 3590 | + }
|
| 3591 | + } else {
|
| 3592 | + if (yych <= 'Z') {
|
| 3593 | + if (yych <= '>')
|
| 3594 | + goto yy99;
|
| 3595 | + if (yych <= '@')
|
| 3596 | + goto yy94;
|
| 3597 | + goto yy170;
|
| 3598 | + } else {
|
| 3599 | + if (yych <= '`')
|
| 3600 | + goto yy94;
|
| 3601 | + if (yych <= 'z')
|
| 3602 | + goto yy170;
|
| 3603 | + goto yy94;
|
| 3604 | + }
|
| 3605 | + }
|
| 3606 | + yy169:
|
| 3607 | + ++p;
|
| 3608 | + yych = *p;
|
| 3609 | + if (yych <= '9') {
|
| 3610 | + if (yych == '-')
|
| 3611 | + goto yy171;
|
| 3612 | + if (yych <= '/')
|
| 3613 | + goto yy94;
|
| 3614 | + goto yy172;
|
| 3615 | + } else {
|
| 3616 | + if (yych <= 'Z') {
|
| 3617 | + if (yych <= '@')
|
| 3618 | + goto yy94;
|
| 3619 | + goto yy172;
|
| 3620 | + } else {
|
| 3621 | + if (yych <= '`')
|
| 3622 | + goto yy94;
|
| 3623 | + if (yych <= 'z')
|
| 3624 | + goto yy172;
|
| 3625 | + goto yy94;
|
| 3626 | + }
|
| 3627 | + }
|
| 3628 | + yy170:
|
| 3629 | + ++p;
|
| 3630 | + yych = *p;
|
| 3631 | + if (yych <= '=') {
|
| 3632 | + if (yych <= '.') {
|
| 3633 | + if (yych <= ',')
|
| 3634 | + goto yy94;
|
| 3635 | + if (yych >= '.')
|
| 3636 | + goto yy95;
|
| 3637 | + } else {
|
| 3638 | + if (yych <= '/')
|
| 3639 | + goto yy94;
|
| 3640 | + if (yych <= '9')
|
| 3641 | + goto yy172;
|
| 3642 | + goto yy94;
|
| 3643 | + }
|
| 3644 | + } else {
|
| 3645 | + if (yych <= 'Z') {
|
| 3646 | + if (yych <= '>')
|
| 3647 | + goto yy99;
|
| 3648 | + if (yych <= '@')
|
| 3649 | + goto yy94;
|
| 3650 | + goto yy172;
|
| 3651 | + } else {
|
| 3652 | + if (yych <= '`')
|
| 3653 | + goto yy94;
|
| 3654 | + if (yych <= 'z')
|
| 3655 | + goto yy172;
|
| 3656 | + goto yy94;
|
| 3657 | + }
|
| 3658 | + }
|
| 3659 | + yy171:
|
| 3660 | + ++p;
|
| 3661 | + yych = *p;
|
| 3662 | + if (yych <= '9') {
|
| 3663 | + if (yych == '-')
|
| 3664 | + goto yy173;
|
| 3665 | + if (yych <= '/')
|
| 3666 | + goto yy94;
|
| 3667 | + goto yy174;
|
| 3668 | + } else {
|
| 3669 | + if (yych <= 'Z') {
|
| 3670 | + if (yych <= '@')
|
| 3671 | + goto yy94;
|
| 3672 | + goto yy174;
|
| 3673 | + } else {
|
| 3674 | + if (yych <= '`')
|
| 3675 | + goto yy94;
|
| 3676 | + if (yych <= 'z')
|
| 3677 | + goto yy174;
|
| 3678 | + goto yy94;
|
| 3679 | + }
|
| 3680 | + }
|
| 3681 | + yy172:
|
| 3682 | + ++p;
|
| 3683 | + yych = *p;
|
| 3684 | + if (yych <= '=') {
|
| 3685 | + if (yych <= '.') {
|
| 3686 | + if (yych <= ',')
|
| 3687 | + goto yy94;
|
| 3688 | + if (yych >= '.')
|
| 3689 | + goto yy95;
|
| 3690 | + } else {
|
| 3691 | + if (yych <= '/')
|
| 3692 | + goto yy94;
|
| 3693 | + if (yych <= '9')
|
| 3694 | + goto yy174;
|
| 3695 | + goto yy94;
|
| 3696 | + }
|
| 3697 | + } else {
|
| 3698 | + if (yych <= 'Z') {
|
| 3699 | + if (yych <= '>')
|
| 3700 | + goto yy99;
|
| 3701 | + if (yych <= '@')
|
| 3702 | + goto yy94;
|
| 3703 | + goto yy174;
|
| 3704 | + } else {
|
| 3705 | + if (yych <= '`')
|
| 3706 | + goto yy94;
|
| 3707 | + if (yych <= 'z')
|
| 3708 | + goto yy174;
|
| 3709 | + goto yy94;
|
| 3710 | + }
|
| 3711 | + }
|
| 3712 | + yy173:
|
| 3713 | + ++p;
|
| 3714 | + yych = *p;
|
| 3715 | + if (yych <= '9') {
|
| 3716 | + if (yych == '-')
|
| 3717 | + goto yy175;
|
| 3718 | + if (yych <= '/')
|
| 3719 | + goto yy94;
|
| 3720 | + goto yy176;
|
| 3721 | + } else {
|
| 3722 | + if (yych <= 'Z') {
|
| 3723 | + if (yych <= '@')
|
| 3724 | + goto yy94;
|
| 3725 | + goto yy176;
|
| 3726 | + } else {
|
| 3727 | + if (yych <= '`')
|
| 3728 | + goto yy94;
|
| 3729 | + if (yych <= 'z')
|
| 3730 | + goto yy176;
|
| 3731 | + goto yy94;
|
| 3732 | + }
|
| 3733 | + }
|
| 3734 | + yy174:
|
| 3735 | + ++p;
|
| 3736 | + yych = *p;
|
| 3737 | + if (yych <= '=') {
|
| 3738 | + if (yych <= '.') {
|
| 3739 | + if (yych <= ',')
|
| 3740 | + goto yy94;
|
| 3741 | + if (yych >= '.')
|
| 3742 | + goto yy95;
|
| 3743 | + } else {
|
| 3744 | + if (yych <= '/')
|
| 3745 | + goto yy94;
|
| 3746 | + if (yych <= '9')
|
| 3747 | + goto yy176;
|
| 3748 | + goto yy94;
|
| 3749 | + }
|
| 3750 | + } else {
|
| 3751 | + if (yych <= 'Z') {
|
| 3752 | + if (yych <= '>')
|
| 3753 | + goto yy99;
|
| 3754 | + if (yych <= '@')
|
| 3755 | + goto yy94;
|
| 3756 | + goto yy176;
|
| 3757 | + } else {
|
| 3758 | + if (yych <= '`')
|
| 3759 | + goto yy94;
|
| 3760 | + if (yych <= 'z')
|
| 3761 | + goto yy176;
|
| 3762 | + goto yy94;
|
| 3763 | + }
|
| 3764 | + }
|
| 3765 | + yy175:
|
| 3766 | + ++p;
|
| 3767 | + yych = *p;
|
| 3768 | + if (yych <= '9') {
|
| 3769 | + if (yych == '-')
|
| 3770 | + goto yy177;
|
| 3771 | + if (yych <= '/')
|
| 3772 | + goto yy94;
|
| 3773 | + goto yy178;
|
| 3774 | + } else {
|
| 3775 | + if (yych <= 'Z') {
|
| 3776 | + if (yych <= '@')
|
| 3777 | + goto yy94;
|
| 3778 | + goto yy178;
|
| 3779 | + } else {
|
| 3780 | + if (yych <= '`')
|
| 3781 | + goto yy94;
|
| 3782 | + if (yych <= 'z')
|
| 3783 | + goto yy178;
|
| 3784 | + goto yy94;
|
| 3785 | + }
|
| 3786 | + }
|
| 3787 | + yy176:
|
| 3788 | + ++p;
|
| 3789 | + yych = *p;
|
| 3790 | + if (yych <= '=') {
|
| 3791 | + if (yych <= '.') {
|
| 3792 | + if (yych <= ',')
|
| 3793 | + goto yy94;
|
| 3794 | + if (yych >= '.')
|
| 3795 | + goto yy95;
|
| 3796 | + } else {
|
| 3797 | + if (yych <= '/')
|
| 3798 | + goto yy94;
|
| 3799 | + if (yych <= '9')
|
| 3800 | + goto yy178;
|
| 3801 | + goto yy94;
|
| 3802 | + }
|
| 3803 | + } else {
|
| 3804 | + if (yych <= 'Z') {
|
| 3805 | + if (yych <= '>')
|
| 3806 | + goto yy99;
|
| 3807 | + if (yych <= '@')
|
| 3808 | + goto yy94;
|
| 3809 | + goto yy178;
|
| 3810 | + } else {
|
| 3811 | + if (yych <= '`')
|
| 3812 | + goto yy94;
|
| 3813 | + if (yych <= 'z')
|
| 3814 | + goto yy178;
|
| 3815 | + goto yy94;
|
| 3816 | + }
|
| 3817 | + }
|
| 3818 | + yy177:
|
| 3819 | + ++p;
|
| 3820 | + yych = *p;
|
| 3821 | + if (yych <= '9') {
|
| 3822 | + if (yych == '-')
|
| 3823 | + goto yy179;
|
| 3824 | + if (yych <= '/')
|
| 3825 | + goto yy94;
|
| 3826 | + goto yy180;
|
| 3827 | + } else {
|
| 3828 | + if (yych <= 'Z') {
|
| 3829 | + if (yych <= '@')
|
| 3830 | + goto yy94;
|
| 3831 | + goto yy180;
|
| 3832 | + } else {
|
| 3833 | + if (yych <= '`')
|
| 3834 | + goto yy94;
|
| 3835 | + if (yych <= 'z')
|
| 3836 | + goto yy180;
|
| 3837 | + goto yy94;
|
| 3838 | + }
|
| 3839 | + }
|
| 3840 | + yy178:
|
| 3841 | + ++p;
|
| 3842 | + yych = *p;
|
| 3843 | + if (yych <= '=') {
|
| 3844 | + if (yych <= '.') {
|
| 3845 | + if (yych <= ',')
|
| 3846 | + goto yy94;
|
| 3847 | + if (yych >= '.')
|
| 3848 | + goto yy95;
|
| 3849 | + } else {
|
| 3850 | + if (yych <= '/')
|
| 3851 | + goto yy94;
|
| 3852 | + if (yych <= '9')
|
| 3853 | + goto yy180;
|
| 3854 | + goto yy94;
|
| 3855 | + }
|
| 3856 | + } else {
|
| 3857 | + if (yych <= 'Z') {
|
| 3858 | + if (yych <= '>')
|
| 3859 | + goto yy99;
|
| 3860 | + if (yych <= '@')
|
| 3861 | + goto yy94;
|
| 3862 | + goto yy180;
|
| 3863 | + } else {
|
| 3864 | + if (yych <= '`')
|
| 3865 | + goto yy94;
|
| 3866 | + if (yych <= 'z')
|
| 3867 | + goto yy180;
|
| 3868 | + goto yy94;
|
| 3869 | + }
|
| 3870 | + }
|
| 3871 | + yy179:
|
| 3872 | + ++p;
|
| 3873 | + yych = *p;
|
| 3874 | + if (yych <= '9') {
|
| 3875 | + if (yych == '-')
|
| 3876 | + goto yy181;
|
| 3877 | + if (yych <= '/')
|
| 3878 | + goto yy94;
|
| 3879 | + goto yy182;
|
| 3880 | + } else {
|
| 3881 | + if (yych <= 'Z') {
|
| 3882 | + if (yych <= '@')
|
| 3883 | + goto yy94;
|
| 3884 | + goto yy182;
|
| 3885 | + } else {
|
| 3886 | + if (yych <= '`')
|
| 3887 | + goto yy94;
|
| 3888 | + if (yych <= 'z')
|
| 3889 | + goto yy182;
|
| 3890 | + goto yy94;
|
| 3891 | + }
|
| 3892 | + }
|
| 3893 | + yy180:
|
| 3894 | + ++p;
|
| 3895 | + yych = *p;
|
| 3896 | + if (yych <= '=') {
|
| 3897 | + if (yych <= '.') {
|
| 3898 | + if (yych <= ',')
|
| 3899 | + goto yy94;
|
| 3900 | + if (yych >= '.')
|
| 3901 | + goto yy95;
|
| 3902 | + } else {
|
| 3903 | + if (yych <= '/')
|
| 3904 | + goto yy94;
|
| 3905 | + if (yych <= '9')
|
| 3906 | + goto yy182;
|
| 3907 | + goto yy94;
|
| 3908 | + }
|
| 3909 | + } else {
|
| 3910 | + if (yych <= 'Z') {
|
| 3911 | + if (yych <= '>')
|
| 3912 | + goto yy99;
|
| 3913 | + if (yych <= '@')
|
| 3914 | + goto yy94;
|
| 3915 | + goto yy182;
|
| 3916 | + } else {
|
| 3917 | + if (yych <= '`')
|
| 3918 | + goto yy94;
|
| 3919 | + if (yych <= 'z')
|
| 3920 | + goto yy182;
|
| 3921 | + goto yy94;
|
| 3922 | + }
|
| 3923 | + }
|
| 3924 | + yy181:
|
| 3925 | + ++p;
|
| 3926 | + yych = *p;
|
| 3927 | + if (yych <= '9') {
|
| 3928 | + if (yych == '-')
|
| 3929 | + goto yy183;
|
| 3930 | + if (yych <= '/')
|
| 3931 | + goto yy94;
|
| 3932 | + goto yy184;
|
| 3933 | + } else {
|
| 3934 | + if (yych <= 'Z') {
|
| 3935 | + if (yych <= '@')
|
| 3936 | + goto yy94;
|
| 3937 | + goto yy184;
|
| 3938 | + } else {
|
| 3939 | + if (yych <= '`')
|
| 3940 | + goto yy94;
|
| 3941 | + if (yych <= 'z')
|
| 3942 | + goto yy184;
|
| 3943 | + goto yy94;
|
| 3944 | + }
|
| 3945 | + }
|
| 3946 | + yy182:
|
| 3947 | + ++p;
|
| 3948 | + yych = *p;
|
| 3949 | + if (yych <= '=') {
|
| 3950 | + if (yych <= '.') {
|
| 3951 | + if (yych <= ',')
|
| 3952 | + goto yy94;
|
| 3953 | + if (yych >= '.')
|
| 3954 | + goto yy95;
|
| 3955 | + } else {
|
| 3956 | + if (yych <= '/')
|
| 3957 | + goto yy94;
|
| 3958 | + if (yych <= '9')
|
| 3959 | + goto yy184;
|
| 3960 | + goto yy94;
|
| 3961 | + }
|
| 3962 | + } else {
|
| 3963 | + if (yych <= 'Z') {
|
| 3964 | + if (yych <= '>')
|
| 3965 | + goto yy99;
|
| 3966 | + if (yych <= '@')
|
| 3967 | + goto yy94;
|
| 3968 | + goto yy184;
|
| 3969 | + } else {
|
| 3970 | + if (yych <= '`')
|
| 3971 | + goto yy94;
|
| 3972 | + if (yych <= 'z')
|
| 3973 | + goto yy184;
|
| 3974 | + goto yy94;
|
| 3975 | + }
|
| 3976 | + }
|
| 3977 | + yy183:
|
| 3978 | + ++p;
|
| 3979 | + yych = *p;
|
| 3980 | + if (yych <= '9') {
|
| 3981 | + if (yych == '-')
|
| 3982 | + goto yy185;
|
| 3983 | + if (yych <= '/')
|
| 3984 | + goto yy94;
|
| 3985 | + goto yy186;
|
| 3986 | + } else {
|
| 3987 | + if (yych <= 'Z') {
|
| 3988 | + if (yych <= '@')
|
| 3989 | + goto yy94;
|
| 3990 | + goto yy186;
|
| 3991 | + } else {
|
| 3992 | + if (yych <= '`')
|
| 3993 | + goto yy94;
|
| 3994 | + if (yych <= 'z')
|
| 3995 | + goto yy186;
|
| 3996 | + goto yy94;
|
| 3997 | + }
|
| 3998 | + }
|
| 3999 | + yy184:
|
| 4000 | + ++p;
|
| 4001 | + yych = *p;
|
| 4002 | + if (yych <= '=') {
|
| 4003 | + if (yych <= '.') {
|
| 4004 | + if (yych <= ',')
|
| 4005 | + goto yy94;
|
| 4006 | + if (yych >= '.')
|
| 4007 | + goto yy95;
|
| 4008 | + } else {
|
| 4009 | + if (yych <= '/')
|
| 4010 | + goto yy94;
|
| 4011 | + if (yych <= '9')
|
| 4012 | + goto yy186;
|
| 4013 | + goto yy94;
|
| 4014 | + }
|
| 4015 | + } else {
|
| 4016 | + if (yych <= 'Z') {
|
| 4017 | + if (yych <= '>')
|
| 4018 | + goto yy99;
|
| 4019 | + if (yych <= '@')
|
| 4020 | + goto yy94;
|
| 4021 | + goto yy186;
|
| 4022 | + } else {
|
| 4023 | + if (yych <= '`')
|
| 4024 | + goto yy94;
|
| 4025 | + if (yych <= 'z')
|
| 4026 | + goto yy186;
|
| 4027 | + goto yy94;
|
| 4028 | + }
|
| 4029 | + }
|
| 4030 | + yy185:
|
| 4031 | + ++p;
|
| 4032 | + yych = *p;
|
| 4033 | + if (yych <= '9') {
|
| 4034 | + if (yych == '-')
|
| 4035 | + goto yy187;
|
| 4036 | + if (yych <= '/')
|
| 4037 | + goto yy94;
|
| 4038 | + goto yy188;
|
| 4039 | + } else {
|
| 4040 | + if (yych <= 'Z') {
|
| 4041 | + if (yych <= '@')
|
| 4042 | + goto yy94;
|
| 4043 | + goto yy188;
|
| 4044 | + } else {
|
| 4045 | + if (yych <= '`')
|
| 4046 | + goto yy94;
|
| 4047 | + if (yych <= 'z')
|
| 4048 | + goto yy188;
|
| 4049 | + goto yy94;
|
| 4050 | + }
|
| 4051 | + }
|
| 4052 | + yy186:
|
| 4053 | + ++p;
|
| 4054 | + yych = *p;
|
| 4055 | + if (yych <= '=') {
|
| 4056 | + if (yych <= '.') {
|
| 4057 | + if (yych <= ',')
|
| 4058 | + goto yy94;
|
| 4059 | + if (yych >= '.')
|
| 4060 | + goto yy95;
|
| 4061 | + } else {
|
| 4062 | + if (yych <= '/')
|
| 4063 | + goto yy94;
|
| 4064 | + if (yych <= '9')
|
| 4065 | + goto yy188;
|
| 4066 | + goto yy94;
|
| 4067 | + }
|
| 4068 | + } else {
|
| 4069 | + if (yych <= 'Z') {
|
| 4070 | + if (yych <= '>')
|
| 4071 | + goto yy99;
|
| 4072 | + if (yych <= '@')
|
| 4073 | + goto yy94;
|
| 4074 | + goto yy188;
|
| 4075 | + } else {
|
| 4076 | + if (yych <= '`')
|
| 4077 | + goto yy94;
|
| 4078 | + if (yych <= 'z')
|
| 4079 | + goto yy188;
|
| 4080 | + goto yy94;
|
| 4081 | + }
|
| 4082 | + }
|
| 4083 | + yy187:
|
| 4084 | + ++p;
|
| 4085 | + yych = *p;
|
| 4086 | + if (yych <= '9') {
|
| 4087 | + if (yych == '-')
|
| 4088 | + goto yy189;
|
| 4089 | + if (yych <= '/')
|
| 4090 | + goto yy94;
|
| 4091 | + goto yy190;
|
| 4092 | + } else {
|
| 4093 | + if (yych <= 'Z') {
|
| 4094 | + if (yych <= '@')
|
| 4095 | + goto yy94;
|
| 4096 | + goto yy190;
|
| 4097 | + } else {
|
| 4098 | + if (yych <= '`')
|
| 4099 | + goto yy94;
|
| 4100 | + if (yych <= 'z')
|
| 4101 | + goto yy190;
|
| 4102 | + goto yy94;
|
| 4103 | + }
|
| 4104 | + }
|
| 4105 | + yy188:
|
| 4106 | + ++p;
|
| 4107 | + yych = *p;
|
| 4108 | + if (yych <= '=') {
|
| 4109 | + if (yych <= '.') {
|
| 4110 | + if (yych <= ',')
|
| 4111 | + goto yy94;
|
| 4112 | + if (yych >= '.')
|
| 4113 | + goto yy95;
|
| 4114 | + } else {
|
| 4115 | + if (yych <= '/')
|
| 4116 | + goto yy94;
|
| 4117 | + if (yych <= '9')
|
| 4118 | + goto yy190;
|
| 4119 | + goto yy94;
|
| 4120 | + }
|
| 4121 | + } else {
|
| 4122 | + if (yych <= 'Z') {
|
| 4123 | + if (yych <= '>')
|
| 4124 | + goto yy99;
|
| 4125 | + if (yych <= '@')
|
| 4126 | + goto yy94;
|
| 4127 | + goto yy190;
|
| 4128 | + } else {
|
| 4129 | + if (yych <= '`')
|
| 4130 | + goto yy94;
|
| 4131 | + if (yych <= 'z')
|
| 4132 | + goto yy190;
|
| 4133 | + goto yy94;
|
| 4134 | + }
|
| 4135 | + }
|
| 4136 | + yy189:
|
| 4137 | + ++p;
|
| 4138 | + yych = *p;
|
| 4139 | + if (yych <= '9') {
|
| 4140 | + if (yych == '-')
|
| 4141 | + goto yy191;
|
| 4142 | + if (yych <= '/')
|
| 4143 | + goto yy94;
|
| 4144 | + goto yy192;
|
| 4145 | + } else {
|
| 4146 | + if (yych <= 'Z') {
|
| 4147 | + if (yych <= '@')
|
| 4148 | + goto yy94;
|
| 4149 | + goto yy192;
|
| 4150 | + } else {
|
| 4151 | + if (yych <= '`')
|
| 4152 | + goto yy94;
|
| 4153 | + if (yych <= 'z')
|
| 4154 | + goto yy192;
|
| 4155 | + goto yy94;
|
| 4156 | + }
|
| 4157 | + }
|
| 4158 | + yy190:
|
| 4159 | + ++p;
|
| 4160 | + yych = *p;
|
| 4161 | + if (yych <= '=') {
|
| 4162 | + if (yych <= '.') {
|
| 4163 | + if (yych <= ',')
|
| 4164 | + goto yy94;
|
| 4165 | + if (yych >= '.')
|
| 4166 | + goto yy95;
|
| 4167 | + } else {
|
| 4168 | + if (yych <= '/')
|
| 4169 | + goto yy94;
|
| 4170 | + if (yych <= '9')
|
| 4171 | + goto yy192;
|
| 4172 | + goto yy94;
|
| 4173 | + }
|
| 4174 | + } else {
|
| 4175 | + if (yych <= 'Z') {
|
| 4176 | + if (yych <= '>')
|
| 4177 | + goto yy99;
|
| 4178 | + if (yych <= '@')
|
| 4179 | + goto yy94;
|
| 4180 | + goto yy192;
|
| 4181 | + } else {
|
| 4182 | + if (yych <= '`')
|
| 4183 | + goto yy94;
|
| 4184 | + if (yych <= 'z')
|
| 4185 | + goto yy192;
|
| 4186 | + goto yy94;
|
| 4187 | + }
|
| 4188 | + }
|
| 4189 | + yy191:
|
| 4190 | + ++p;
|
| 4191 | + yych = *p;
|
| 4192 | + if (yych <= '9') {
|
| 4193 | + if (yych == '-')
|
| 4194 | + goto yy193;
|
| 4195 | + if (yych <= '/')
|
| 4196 | + goto yy94;
|
| 4197 | + goto yy194;
|
| 4198 | + } else {
|
| 4199 | + if (yych <= 'Z') {
|
| 4200 | + if (yych <= '@')
|
| 4201 | + goto yy94;
|
| 4202 | + goto yy194;
|
| 4203 | + } else {
|
| 4204 | + if (yych <= '`')
|
| 4205 | + goto yy94;
|
| 4206 | + if (yych <= 'z')
|
| 4207 | + goto yy194;
|
| 4208 | + goto yy94;
|
| 4209 | + }
|
| 4210 | + }
|
| 4211 | + yy192:
|
| 4212 | + ++p;
|
| 4213 | + yych = *p;
|
| 4214 | + if (yych <= '=') {
|
| 4215 | + if (yych <= '.') {
|
| 4216 | + if (yych <= ',')
|
| 4217 | + goto yy94;
|
| 4218 | + if (yych >= '.')
|
| 4219 | + goto yy95;
|
| 4220 | + } else {
|
| 4221 | + if (yych <= '/')
|
| 4222 | + goto yy94;
|
| 4223 | + if (yych <= '9')
|
| 4224 | + goto yy194;
|
| 4225 | + goto yy94;
|
| 4226 | + }
|
| 4227 | + } else {
|
| 4228 | + if (yych <= 'Z') {
|
| 4229 | + if (yych <= '>')
|
| 4230 | + goto yy99;
|
| 4231 | + if (yych <= '@')
|
| 4232 | + goto yy94;
|
| 4233 | + goto yy194;
|
| 4234 | + } else {
|
| 4235 | + if (yych <= '`')
|
| 4236 | + goto yy94;
|
| 4237 | + if (yych <= 'z')
|
| 4238 | + goto yy194;
|
| 4239 | + goto yy94;
|
| 4240 | + }
|
| 4241 | + }
|
| 4242 | + yy193:
|
| 4243 | + ++p;
|
| 4244 | + yych = *p;
|
| 4245 | + if (yych <= '9') {
|
| 4246 | + if (yych == '-')
|
| 4247 | + goto yy195;
|
| 4248 | + if (yych <= '/')
|
| 4249 | + goto yy94;
|
| 4250 | + goto yy196;
|
| 4251 | + } else {
|
| 4252 | + if (yych <= 'Z') {
|
| 4253 | + if (yych <= '@')
|
| 4254 | + goto yy94;
|
| 4255 | + goto yy196;
|
| 4256 | + } else {
|
| 4257 | + if (yych <= '`')
|
| 4258 | + goto yy94;
|
| 4259 | + if (yych <= 'z')
|
| 4260 | + goto yy196;
|
| 4261 | + goto yy94;
|
| 4262 | + }
|
| 4263 | + }
|
| 4264 | + yy194:
|
| 4265 | + ++p;
|
| 4266 | + yych = *p;
|
| 4267 | + if (yych <= '=') {
|
| 4268 | + if (yych <= '.') {
|
| 4269 | + if (yych <= ',')
|
| 4270 | + goto yy94;
|
| 4271 | + if (yych >= '.')
|
| 4272 | + goto yy95;
|
| 4273 | + } else {
|
| 4274 | + if (yych <= '/')
|
| 4275 | + goto yy94;
|
| 4276 | + if (yych <= '9')
|
| 4277 | + goto yy196;
|
| 4278 | + goto yy94;
|
| 4279 | + }
|
| 4280 | + } else {
|
| 4281 | + if (yych <= 'Z') {
|
| 4282 | + if (yych <= '>')
|
| 4283 | + goto yy99;
|
| 4284 | + if (yych <= '@')
|
| 4285 | + goto yy94;
|
| 4286 | + goto yy196;
|
| 4287 | + } else {
|
| 4288 | + if (yych <= '`')
|
| 4289 | + goto yy94;
|
| 4290 | + if (yych <= 'z')
|
| 4291 | + goto yy196;
|
| 4292 | + goto yy94;
|
| 4293 | + }
|
| 4294 | + }
|
| 4295 | + yy195:
|
| 4296 | + ++p;
|
| 4297 | + yych = *p;
|
| 4298 | + if (yych <= '9') {
|
| 4299 | + if (yych == '-')
|
| 4300 | + goto yy197;
|
| 4301 | + if (yych <= '/')
|
| 4302 | + goto yy94;
|
| 4303 | + goto yy198;
|
| 4304 | + } else {
|
| 4305 | + if (yych <= 'Z') {
|
| 4306 | + if (yych <= '@')
|
| 4307 | + goto yy94;
|
| 4308 | + goto yy198;
|
| 4309 | + } else {
|
| 4310 | + if (yych <= '`')
|
| 4311 | + goto yy94;
|
| 4312 | + if (yych <= 'z')
|
| 4313 | + goto yy198;
|
| 4314 | + goto yy94;
|
| 4315 | + }
|
| 4316 | + }
|
| 4317 | + yy196:
|
| 4318 | + ++p;
|
| 4319 | + yych = *p;
|
| 4320 | + if (yych <= '=') {
|
| 4321 | + if (yych <= '.') {
|
| 4322 | + if (yych <= ',')
|
| 4323 | + goto yy94;
|
| 4324 | + if (yych >= '.')
|
| 4325 | + goto yy95;
|
| 4326 | + } else {
|
| 4327 | + if (yych <= '/')
|
| 4328 | + goto yy94;
|
| 4329 | + if (yych <= '9')
|
| 4330 | + goto yy198;
|
| 4331 | + goto yy94;
|
| 4332 | + }
|
| 4333 | + } else {
|
| 4334 | + if (yych <= 'Z') {
|
| 4335 | + if (yych <= '>')
|
| 4336 | + goto yy99;
|
| 4337 | + if (yych <= '@')
|
| 4338 | + goto yy94;
|
| 4339 | + goto yy198;
|
| 4340 | + } else {
|
| 4341 | + if (yych <= '`')
|
| 4342 | + goto yy94;
|
| 4343 | + if (yych <= 'z')
|
| 4344 | + goto yy198;
|
| 4345 | + goto yy94;
|
| 4346 | + }
|
| 4347 | + }
|
| 4348 | + yy197:
|
| 4349 | + ++p;
|
| 4350 | + yych = *p;
|
| 4351 | + if (yych <= '9') {
|
| 4352 | + if (yych == '-')
|
| 4353 | + goto yy199;
|
| 4354 | + if (yych <= '/')
|
| 4355 | + goto yy94;
|
| 4356 | + goto yy200;
|
| 4357 | + } else {
|
| 4358 | + if (yych <= 'Z') {
|
| 4359 | + if (yych <= '@')
|
| 4360 | + goto yy94;
|
| 4361 | + goto yy200;
|
| 4362 | + } else {
|
| 4363 | + if (yych <= '`')
|
| 4364 | + goto yy94;
|
| 4365 | + if (yych <= 'z')
|
| 4366 | + goto yy200;
|
| 4367 | + goto yy94;
|
| 4368 | + }
|
| 4369 | + }
|
| 4370 | + yy198:
|
| 4371 | + ++p;
|
| 4372 | + yych = *p;
|
| 4373 | + if (yych <= '=') {
|
| 4374 | + if (yych <= '.') {
|
| 4375 | + if (yych <= ',')
|
| 4376 | + goto yy94;
|
| 4377 | + if (yych >= '.')
|
| 4378 | + goto yy95;
|
| 4379 | + } else {
|
| 4380 | + if (yych <= '/')
|
| 4381 | + goto yy94;
|
| 4382 | + if (yych <= '9')
|
| 4383 | + goto yy200;
|
| 4384 | + goto yy94;
|
| 4385 | + }
|
| 4386 | + } else {
|
| 4387 | + if (yych <= 'Z') {
|
| 4388 | + if (yych <= '>')
|
| 4389 | + goto yy99;
|
| 4390 | + if (yych <= '@')
|
| 4391 | + goto yy94;
|
| 4392 | + goto yy200;
|
| 4393 | + } else {
|
| 4394 | + if (yych <= '`')
|
| 4395 | + goto yy94;
|
| 4396 | + if (yych <= 'z')
|
| 4397 | + goto yy200;
|
| 4398 | + goto yy94;
|
| 4399 | + }
|
| 4400 | + }
|
| 4401 | + yy199:
|
| 4402 | + ++p;
|
| 4403 | + yych = *p;
|
| 4404 | + if (yych <= '9') {
|
| 4405 | + if (yych == '-')
|
| 4406 | + goto yy201;
|
| 4407 | + if (yych <= '/')
|
| 4408 | + goto yy94;
|
| 4409 | + goto yy202;
|
| 4410 | + } else {
|
| 4411 | + if (yych <= 'Z') {
|
| 4412 | + if (yych <= '@')
|
| 4413 | + goto yy94;
|
| 4414 | + goto yy202;
|
| 4415 | + } else {
|
| 4416 | + if (yych <= '`')
|
| 4417 | + goto yy94;
|
| 4418 | + if (yych <= 'z')
|
| 4419 | + goto yy202;
|
| 4420 | + goto yy94;
|
| 4421 | + }
|
| 4422 | + }
|
| 4423 | + yy200:
|
| 4424 | + ++p;
|
| 4425 | + yych = *p;
|
| 4426 | + if (yych <= '=') {
|
| 4427 | + if (yych <= '.') {
|
| 4428 | + if (yych <= ',')
|
| 4429 | + goto yy94;
|
| 4430 | + if (yych >= '.')
|
| 4431 | + goto yy95;
|
| 4432 | + } else {
|
| 4433 | + if (yych <= '/')
|
| 4434 | + goto yy94;
|
| 4435 | + if (yych <= '9')
|
| 4436 | + goto yy202;
|
| 4437 | + goto yy94;
|
| 4438 | + }
|
| 4439 | + } else {
|
| 4440 | + if (yych <= 'Z') {
|
| 4441 | + if (yych <= '>')
|
| 4442 | + goto yy99;
|
| 4443 | + if (yych <= '@')
|
| 4444 | + goto yy94;
|
| 4445 | + goto yy202;
|
| 4446 | + } else {
|
| 4447 | + if (yych <= '`')
|
| 4448 | + goto yy94;
|
| 4449 | + if (yych <= 'z')
|
| 4450 | + goto yy202;
|
| 4451 | + goto yy94;
|
| 4452 | + }
|
| 4453 | + }
|
| 4454 | + yy201:
|
| 4455 | + ++p;
|
| 4456 | + yych = *p;
|
| 4457 | + if (yych <= '9') {
|
| 4458 | + if (yych == '-')
|
| 4459 | + goto yy203;
|
| 4460 | + if (yych <= '/')
|
| 4461 | + goto yy94;
|
| 4462 | + goto yy204;
|
| 4463 | + } else {
|
| 4464 | + if (yych <= 'Z') {
|
| 4465 | + if (yych <= '@')
|
| 4466 | + goto yy94;
|
| 4467 | + goto yy204;
|
| 4468 | + } else {
|
| 4469 | + if (yych <= '`')
|
| 4470 | + goto yy94;
|
| 4471 | + if (yych <= 'z')
|
| 4472 | + goto yy204;
|
| 4473 | + goto yy94;
|
| 4474 | + }
|
| 4475 | + }
|
| 4476 | + yy202:
|
| 4477 | + ++p;
|
| 4478 | + yych = *p;
|
| 4479 | + if (yych <= '=') {
|
| 4480 | + if (yych <= '.') {
|
| 4481 | + if (yych <= ',')
|
| 4482 | + goto yy94;
|
| 4483 | + if (yych >= '.')
|
| 4484 | + goto yy95;
|
| 4485 | + } else {
|
| 4486 | + if (yych <= '/')
|
| 4487 | + goto yy94;
|
| 4488 | + if (yych <= '9')
|
| 4489 | + goto yy204;
|
| 4490 | + goto yy94;
|
| 4491 | + }
|
| 4492 | + } else {
|
| 4493 | + if (yych <= 'Z') {
|
| 4494 | + if (yych <= '>')
|
| 4495 | + goto yy99;
|
| 4496 | + if (yych <= '@')
|
| 4497 | + goto yy94;
|
| 4498 | + goto yy204;
|
| 4499 | + } else {
|
| 4500 | + if (yych <= '`')
|
| 4501 | + goto yy94;
|
| 4502 | + if (yych <= 'z')
|
| 4503 | + goto yy204;
|
| 4504 | + goto yy94;
|
| 4505 | + }
|
| 4506 | + }
|
| 4507 | + yy203:
|
| 4508 | + ++p;
|
| 4509 | + yych = *p;
|
| 4510 | + if (yych <= '9') {
|
| 4511 | + if (yych == '-')
|
| 4512 | + goto yy205;
|
| 4513 | + if (yych <= '/')
|
| 4514 | + goto yy94;
|
| 4515 | + goto yy206;
|
| 4516 | + } else {
|
| 4517 | + if (yych <= 'Z') {
|
| 4518 | + if (yych <= '@')
|
| 4519 | + goto yy94;
|
| 4520 | + goto yy206;
|
| 4521 | + } else {
|
| 4522 | + if (yych <= '`')
|
| 4523 | + goto yy94;
|
| 4524 | + if (yych <= 'z')
|
| 4525 | + goto yy206;
|
| 4526 | + goto yy94;
|
| 4527 | + }
|
| 4528 | + }
|
| 4529 | + yy204:
|
| 4530 | + ++p;
|
| 4531 | + yych = *p;
|
| 4532 | + if (yych <= '=') {
|
| 4533 | + if (yych <= '.') {
|
| 4534 | + if (yych <= ',')
|
| 4535 | + goto yy94;
|
| 4536 | + if (yych >= '.')
|
| 4537 | + goto yy95;
|
| 4538 | + } else {
|
| 4539 | + if (yych <= '/')
|
| 4540 | + goto yy94;
|
| 4541 | + if (yych <= '9')
|
| 4542 | + goto yy206;
|
| 4543 | + goto yy94;
|
| 4544 | + }
|
| 4545 | + } else {
|
| 4546 | + if (yych <= 'Z') {
|
| 4547 | + if (yych <= '>')
|
| 4548 | + goto yy99;
|
| 4549 | + if (yych <= '@')
|
| 4550 | + goto yy94;
|
| 4551 | + goto yy206;
|
| 4552 | + } else {
|
| 4553 | + if (yych <= '`')
|
| 4554 | + goto yy94;
|
| 4555 | + if (yych <= 'z')
|
| 4556 | + goto yy206;
|
| 4557 | + goto yy94;
|
| 4558 | + }
|
| 4559 | + }
|
| 4560 | + yy205:
|
| 4561 | + ++p;
|
| 4562 | + yych = *p;
|
| 4563 | + if (yych <= '9') {
|
| 4564 | + if (yych == '-')
|
| 4565 | + goto yy207;
|
| 4566 | + if (yych <= '/')
|
| 4567 | + goto yy94;
|
| 4568 | + goto yy208;
|
| 4569 | + } else {
|
| 4570 | + if (yych <= 'Z') {
|
| 4571 | + if (yych <= '@')
|
| 4572 | + goto yy94;
|
| 4573 | + goto yy208;
|
| 4574 | + } else {
|
| 4575 | + if (yych <= '`')
|
| 4576 | + goto yy94;
|
| 4577 | + if (yych <= 'z')
|
| 4578 | + goto yy208;
|
| 4579 | + goto yy94;
|
| 4580 | + }
|
| 4581 | + }
|
| 4582 | + yy206:
|
| 4583 | + ++p;
|
| 4584 | + yych = *p;
|
| 4585 | + if (yych <= '=') {
|
| 4586 | + if (yych <= '.') {
|
| 4587 | + if (yych <= ',')
|
| 4588 | + goto yy94;
|
| 4589 | + if (yych >= '.')
|
| 4590 | + goto yy95;
|
| 4591 | + } else {
|
| 4592 | + if (yych <= '/')
|
| 4593 | + goto yy94;
|
| 4594 | + if (yych <= '9')
|
| 4595 | + goto yy208;
|
| 4596 | + goto yy94;
|
| 4597 | + }
|
| 4598 | + } else {
|
| 4599 | + if (yych <= 'Z') {
|
| 4600 | + if (yych <= '>')
|
| 4601 | + goto yy99;
|
| 4602 | + if (yych <= '@')
|
| 4603 | + goto yy94;
|
| 4604 | + goto yy208;
|
| 4605 | + } else {
|
| 4606 | + if (yych <= '`')
|
| 4607 | + goto yy94;
|
| 4608 | + if (yych <= 'z')
|
| 4609 | + goto yy208;
|
| 4610 | + goto yy94;
|
| 4611 | + }
|
| 4612 | + }
|
| 4613 | + yy207:
|
| 4614 | + ++p;
|
| 4615 | + yych = *p;
|
| 4616 | + if (yych <= '9') {
|
| 4617 | + if (yych == '-')
|
| 4618 | + goto yy209;
|
| 4619 | + if (yych <= '/')
|
| 4620 | + goto yy94;
|
| 4621 | + goto yy210;
|
| 4622 | + } else {
|
| 4623 | + if (yych <= 'Z') {
|
| 4624 | + if (yych <= '@')
|
| 4625 | + goto yy94;
|
| 4626 | + goto yy210;
|
| 4627 | + } else {
|
| 4628 | + if (yych <= '`')
|
| 4629 | + goto yy94;
|
| 4630 | + if (yych <= 'z')
|
| 4631 | + goto yy210;
|
| 4632 | + goto yy94;
|
| 4633 | + }
|
| 4634 | + }
|
| 4635 | + yy208:
|
| 4636 | + ++p;
|
| 4637 | + yych = *p;
|
| 4638 | + if (yych <= '=') {
|
| 4639 | + if (yych <= '.') {
|
| 4640 | + if (yych <= ',')
|
| 4641 | + goto yy94;
|
| 4642 | + if (yych >= '.')
|
| 4643 | + goto yy95;
|
| 4644 | + } else {
|
| 4645 | + if (yych <= '/')
|
| 4646 | + goto yy94;
|
| 4647 | + if (yych <= '9')
|
| 4648 | + goto yy210;
|
| 4649 | + goto yy94;
|
| 4650 | + }
|
| 4651 | + } else {
|
| 4652 | + if (yych <= 'Z') {
|
| 4653 | + if (yych <= '>')
|
| 4654 | + goto yy99;
|
| 4655 | + if (yych <= '@')
|
| 4656 | + goto yy94;
|
| 4657 | + goto yy210;
|
| 4658 | + } else {
|
| 4659 | + if (yych <= '`')
|
| 4660 | + goto yy94;
|
| 4661 | + if (yych <= 'z')
|
| 4662 | + goto yy210;
|
| 4663 | + goto yy94;
|
| 4664 | + }
|
| 4665 | + }
|
| 4666 | + yy209:
|
| 4667 | + ++p;
|
| 4668 | + yych = *p;
|
| 4669 | + if (yych <= '9') {
|
| 4670 | + if (yych == '-')
|
| 4671 | + goto yy211;
|
| 4672 | + if (yych <= '/')
|
| 4673 | + goto yy94;
|
| 4674 | + goto yy212;
|
| 4675 | + } else {
|
| 4676 | + if (yych <= 'Z') {
|
| 4677 | + if (yych <= '@')
|
| 4678 | + goto yy94;
|
| 4679 | + goto yy212;
|
| 4680 | + } else {
|
| 4681 | + if (yych <= '`')
|
| 4682 | + goto yy94;
|
| 4683 | + if (yych <= 'z')
|
| 4684 | + goto yy212;
|
| 4685 | + goto yy94;
|
| 4686 | + }
|
| 4687 | + }
|
| 4688 | + yy210:
|
| 4689 | + ++p;
|
| 4690 | + yych = *p;
|
| 4691 | + if (yych <= '=') {
|
| 4692 | + if (yych <= '.') {
|
| 4693 | + if (yych <= ',')
|
| 4694 | + goto yy94;
|
| 4695 | + if (yych >= '.')
|
| 4696 | + goto yy95;
|
| 4697 | + } else {
|
| 4698 | + if (yych <= '/')
|
| 4699 | + goto yy94;
|
| 4700 | + if (yych <= '9')
|
| 4701 | + goto yy212;
|
| 4702 | + goto yy94;
|
| 4703 | + }
|
| 4704 | + } else {
|
| 4705 | + if (yych <= 'Z') {
|
| 4706 | + if (yych <= '>')
|
| 4707 | + goto yy99;
|
| 4708 | + if (yych <= '@')
|
| 4709 | + goto yy94;
|
| 4710 | + goto yy212;
|
| 4711 | + } else {
|
| 4712 | + if (yych <= '`')
|
| 4713 | + goto yy94;
|
| 4714 | + if (yych <= 'z')
|
| 4715 | + goto yy212;
|
| 4716 | + goto yy94;
|
| 4717 | + }
|
| 4718 | + }
|
| 4719 | + yy211:
|
| 4720 | + ++p;
|
| 4721 | + yych = *p;
|
| 4722 | + if (yych <= '9') {
|
| 4723 | + if (yych == '-')
|
| 4724 | + goto yy213;
|
| 4725 | + if (yych <= '/')
|
| 4726 | + goto yy94;
|
| 4727 | + goto yy214;
|
| 4728 | + } else {
|
| 4729 | + if (yych <= 'Z') {
|
| 4730 | + if (yych <= '@')
|
| 4731 | + goto yy94;
|
| 4732 | + goto yy214;
|
| 4733 | + } else {
|
| 4734 | + if (yych <= '`')
|
| 4735 | + goto yy94;
|
| 4736 | + if (yych <= 'z')
|
| 4737 | + goto yy214;
|
| 4738 | + goto yy94;
|
| 4739 | + }
|
| 4740 | + }
|
| 4741 | + yy212:
|
| 4742 | + ++p;
|
| 4743 | + yych = *p;
|
| 4744 | + if (yych <= '=') {
|
| 4745 | + if (yych <= '.') {
|
| 4746 | + if (yych <= ',')
|
| 4747 | + goto yy94;
|
| 4748 | + if (yych >= '.')
|
| 4749 | + goto yy95;
|
| 4750 | + } else {
|
| 4751 | + if (yych <= '/')
|
| 4752 | + goto yy94;
|
| 4753 | + if (yych <= '9')
|
| 4754 | + goto yy214;
|
| 4755 | + goto yy94;
|
| 4756 | + }
|
| 4757 | + } else {
|
| 4758 | + if (yych <= 'Z') {
|
| 4759 | + if (yych <= '>')
|
| 4760 | + goto yy99;
|
| 4761 | + if (yych <= '@')
|
| 4762 | + goto yy94;
|
| 4763 | + goto yy214;
|
| 4764 | + } else {
|
| 4765 | + if (yych <= '`')
|
| 4766 | + goto yy94;
|
| 4767 | + if (yych <= 'z')
|
| 4768 | + goto yy214;
|
| 4769 | + goto yy94;
|
| 4770 | + }
|
| 4771 | + }
|
| 4772 | + yy213:
|
| 4773 | + ++p;
|
| 4774 | + yych = *p;
|
| 4775 | + if (yych <= '9') {
|
| 4776 | + if (yych == '-')
|
| 4777 | + goto yy215;
|
| 4778 | + if (yych <= '/')
|
| 4779 | + goto yy94;
|
| 4780 | + goto yy216;
|
| 4781 | + } else {
|
| 4782 | + if (yych <= 'Z') {
|
| 4783 | + if (yych <= '@')
|
| 4784 | + goto yy94;
|
| 4785 | + goto yy216;
|
| 4786 | + } else {
|
| 4787 | + if (yych <= '`')
|
| 4788 | + goto yy94;
|
| 4789 | + if (yych <= 'z')
|
| 4790 | + goto yy216;
|
| 4791 | + goto yy94;
|
| 4792 | + }
|
| 4793 | + }
|
| 4794 | + yy214:
|
| 4795 | + ++p;
|
| 4796 | + yych = *p;
|
| 4797 | + if (yych <= '=') {
|
| 4798 | + if (yych <= '.') {
|
| 4799 | + if (yych <= ',')
|
| 4800 | + goto yy94;
|
| 4801 | + if (yych >= '.')
|
| 4802 | + goto yy95;
|
| 4803 | + } else {
|
| 4804 | + if (yych <= '/')
|
| 4805 | + goto yy94;
|
| 4806 | + if (yych <= '9')
|
| 4807 | + goto yy216;
|
| 4808 | + goto yy94;
|
| 4809 | + }
|
| 4810 | + } else {
|
| 4811 | + if (yych <= 'Z') {
|
| 4812 | + if (yych <= '>')
|
| 4813 | + goto yy99;
|
| 4814 | + if (yych <= '@')
|
| 4815 | + goto yy94;
|
| 4816 | + goto yy216;
|
| 4817 | + } else {
|
| 4818 | + if (yych <= '`')
|
| 4819 | + goto yy94;
|
| 4820 | + if (yych <= 'z')
|
| 4821 | + goto yy216;
|
| 4822 | + goto yy94;
|
| 4823 | + }
|
| 4824 | + }
|
| 4825 | + yy215:
|
| 4826 | + ++p;
|
| 4827 | + yych = *p;
|
| 4828 | + if (yych <= '9') {
|
| 4829 | + if (yych == '-')
|
| 4830 | + goto yy217;
|
| 4831 | + if (yych <= '/')
|
| 4832 | + goto yy94;
|
| 4833 | + goto yy218;
|
| 4834 | + } else {
|
| 4835 | + if (yych <= 'Z') {
|
| 4836 | + if (yych <= '@')
|
| 4837 | + goto yy94;
|
| 4838 | + goto yy218;
|
| 4839 | + } else {
|
| 4840 | + if (yych <= '`')
|
| 4841 | + goto yy94;
|
| 4842 | + if (yych <= 'z')
|
| 4843 | + goto yy218;
|
| 4844 | + goto yy94;
|
| 4845 | + }
|
| 4846 | + }
|
| 4847 | + yy216:
|
| 4848 | + ++p;
|
| 4849 | + yych = *p;
|
| 4850 | + if (yych <= '=') {
|
| 4851 | + if (yych <= '.') {
|
| 4852 | + if (yych <= ',')
|
| 4853 | + goto yy94;
|
| 4854 | + if (yych >= '.')
|
| 4855 | + goto yy95;
|
| 4856 | + } else {
|
| 4857 | + if (yych <= '/')
|
| 4858 | + goto yy94;
|
| 4859 | + if (yych <= '9')
|
| 4860 | + goto yy218;
|
| 4861 | + goto yy94;
|
| 4862 | + }
|
| 4863 | + } else {
|
| 4864 | + if (yych <= 'Z') {
|
| 4865 | + if (yych <= '>')
|
| 4866 | + goto yy99;
|
| 4867 | + if (yych <= '@')
|
| 4868 | + goto yy94;
|
| 4869 | + goto yy218;
|
| 4870 | + } else {
|
| 4871 | + if (yych <= '`')
|
| 4872 | + goto yy94;
|
| 4873 | + if (yych <= 'z')
|
| 4874 | + goto yy218;
|
| 4875 | + goto yy94;
|
| 4876 | + }
|
| 4877 | + }
|
| 4878 | + yy217:
|
| 4879 | + ++p;
|
| 4880 | + yych = *p;
|
| 4881 | + if (yych <= '9') {
|
| 4882 | + if (yych == '-')
|
| 4883 | + goto yy219;
|
| 4884 | + if (yych <= '/')
|
| 4885 | + goto yy94;
|
| 4886 | + goto yy220;
|
| 4887 | + } else {
|
| 4888 | + if (yych <= 'Z') {
|
| 4889 | + if (yych <= '@')
|
| 4890 | + goto yy94;
|
| 4891 | + goto yy220;
|
| 4892 | + } else {
|
| 4893 | + if (yych <= '`')
|
| 4894 | + goto yy94;
|
| 4895 | + if (yych <= 'z')
|
| 4896 | + goto yy220;
|
| 4897 | + goto yy94;
|
| 4898 | + }
|
| 4899 | + }
|
| 4900 | + yy218:
|
| 4901 | + ++p;
|
| 4902 | + yych = *p;
|
| 4903 | + if (yych <= '=') {
|
| 4904 | + if (yych <= '.') {
|
| 4905 | + if (yych <= ',')
|
| 4906 | + goto yy94;
|
| 4907 | + if (yych >= '.')
|
| 4908 | + goto yy95;
|
| 4909 | + } else {
|
| 4910 | + if (yych <= '/')
|
| 4911 | + goto yy94;
|
| 4912 | + if (yych <= '9')
|
| 4913 | + goto yy220;
|
| 4914 | + goto yy94;
|
| 4915 | + }
|
| 4916 | + } else {
|
| 4917 | + if (yych <= 'Z') {
|
| 4918 | + if (yych <= '>')
|
| 4919 | + goto yy99;
|
| 4920 | + if (yych <= '@')
|
| 4921 | + goto yy94;
|
| 4922 | + goto yy220;
|
| 4923 | + } else {
|
| 4924 | + if (yych <= '`')
|
| 4925 | + goto yy94;
|
| 4926 | + if (yych <= 'z')
|
| 4927 | + goto yy220;
|
| 4928 | + goto yy94;
|
| 4929 | + }
|
| 4930 | + }
|
| 4931 | + yy219:
|
| 4932 | + ++p;
|
| 4933 | + yych = *p;
|
| 4934 | + if (yych <= '@') {
|
| 4935 | + if (yych <= '/')
|
| 4936 | + goto yy94;
|
| 4937 | + if (yych <= '9')
|
| 4938 | + goto yy221;
|
| 4939 | + goto yy94;
|
| 4940 | + } else {
|
| 4941 | + if (yych <= 'Z')
|
| 4942 | + goto yy221;
|
| 4943 | + if (yych <= '`')
|
| 4944 | + goto yy94;
|
| 4945 | + if (yych <= 'z')
|
| 4946 | + goto yy221;
|
| 4947 | + goto yy94;
|
| 4948 | + }
|
| 4949 | + yy220:
|
| 4950 | + ++p;
|
| 4951 | + yych = *p;
|
| 4952 | + if (yych <= '=') {
|
| 4953 | + if (yych <= '.') {
|
| 4954 | + if (yych <= '-')
|
| 4955 | + goto yy94;
|
| 4956 | + goto yy95;
|
| 4957 | + } else {
|
| 4958 | + if (yych <= '/')
|
| 4959 | + goto yy94;
|
| 4960 | + if (yych >= ':')
|
| 4961 | + goto yy94;
|
| 4962 | + }
|
| 4963 | + } else {
|
| 4964 | + if (yych <= 'Z') {
|
| 4965 | + if (yych <= '>')
|
| 4966 | + goto yy99;
|
| 4967 | + if (yych <= '@')
|
| 4968 | + goto yy94;
|
| 4969 | + } else {
|
| 4970 | + if (yych <= '`')
|
| 4971 | + goto yy94;
|
| 4972 | + if (yych >= '{')
|
| 4973 | + goto yy94;
|
| 4974 | + }
|
| 4975 | + }
|
| 4976 | + yy221:
|
| 4977 | + ++p;
|
| 4978 | + yych = *p;
|
| 4979 | + if (yych == '.')
|
| 4980 | + goto yy95;
|
| 4981 | + if (yych == '>')
|
| 4982 | + goto yy99;
|
| 4983 | + goto yy94;
|
| 4984 | + }
|
| 4985 | +}
|
| 4986 | +
|
| 4987 | +// Try to match an HTML tag after first <, returning num of chars matched.
|
| 4988 | +bufsize_t _scan_html_tag(const unsigned char *p) {
|
| 4989 | + const unsigned char *marker = NULL;
|
| 4990 | + const unsigned char *start = p;
|
| 4991 | +
|
| 4992 | + {
|
| 4993 | + unsigned char yych;
|
| 4994 | + static const unsigned char yybm[] = {
|
| 4995 | + /* table 1 .. 8: 0 */
|
| 4996 | + 0, 250, 250, 250, 250, 250, 250, 250, 250, 235, 235, 235, 235, 235, 250,
|
| 4997 | + 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
|
| 4998 | + 250, 250, 250, 235, 250, 202, 250, 250, 250, 250, 170, 250, 250, 250,
|
| 4999 | + 250, 250, 246, 254, 250, 254, 254, 254, 254, 254, 254, 254, 254, 254,
|
| 5000 | + 254, 254, 250, 234, 234, 232, 250, 250, 254, 254, 254, 254, 254, 254,
|
| 5001 | + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
|
| 5002 | + 254, 254, 254, 254, 254, 254, 250, 250, 122, 250, 254, 234, 254, 254,
|
| 5003 | + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
|
| 5004 | + 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 250, 250, 250, 250,
|
| 5005 | + 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5006 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5007 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5008 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5009 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5010 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5011 | + /* table 9 .. 11: 256 */
|
| 5012 | + 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 5013 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 5014 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 5015 | + 128, 128, 192, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 5016 | + 192, 128, 128, 128, 128, 128, 0, 128, 224, 224, 224, 224, 224, 224, 224,
|
| 5017 | + 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
|
| 5018 | + 224, 224, 224, 224, 224, 128, 128, 128, 128, 128, 128, 192, 192, 192,
|
| 5019 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 5020 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 0,
|
| 5021 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5022 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5023 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5024 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5025 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 5026 | + 0, 0, 0, 0, 0, 0, 0,
|
| 5027 | + };
|
| 5028 | + yych = *p;
|
| 5029 | + if (yych <= '>') {
|
| 5030 | + if (yych <= '!') {
|
| 5031 | + if (yych >= '!')
|
| 5032 | + goto yy226;
|
| 5033 | + } else {
|
| 5034 | + if (yych == '/')
|
| 5035 | + goto yy227;
|
| 5036 | + }
|
| 5037 | + } else {
|
| 5038 | + if (yych <= 'Z') {
|
| 5039 | + if (yych <= '?')
|
| 5040 | + goto yy228;
|
| 5041 | + if (yych >= 'A')
|
| 5042 | + goto yy229;
|
| 5043 | + } else {
|
| 5044 | + if (yych <= '`')
|
| 5045 | + goto yy224;
|
| 5046 | + if (yych <= 'z')
|
| 5047 | + goto yy229;
|
| 5048 | + }
|
| 5049 | + }
|
| 5050 | + yy224:
|
| 5051 | + ++p;
|
| 5052 | + yy225 : { return 0; }
|
| 5053 | + yy226:
|
| 5054 | + yych = *(marker = ++p);
|
| 5055 | + if (yybm[256 + yych] & 32) {
|
| 5056 | + goto yy232;
|
| 5057 | + }
|
| 5058 | + if (yych == '-')
|
| 5059 | + goto yy230;
|
| 5060 | + if (yych <= '@')
|
| 5061 | + goto yy225;
|
| 5062 | + if (yych <= '[')
|
| 5063 | + goto yy234;
|
| 5064 | + goto yy225;
|
| 5065 | + yy227:
|
| 5066 | + yych = *(marker = ++p);
|
| 5067 | + if (yych <= '@')
|
| 5068 | + goto yy225;
|
| 5069 | + if (yych <= 'Z')
|
| 5070 | + goto yy235;
|
| 5071 | + if (yych <= '`')
|
| 5072 | + goto yy225;
|
| 5073 | + if (yych <= 'z')
|
| 5074 | + goto yy235;
|
| 5075 | + goto yy225;
|
| 5076 | + yy228:
|
| 5077 | + yych = *(marker = ++p);
|
| 5078 | + if (yych <= 0x00)
|
| 5079 | + goto yy225;
|
| 5080 | + if (yych <= 0x7F)
|
| 5081 | + goto yy238;
|
| 5082 | + if (yych <= 0xC1)
|
| 5083 | + goto yy225;
|
| 5084 | + if (yych <= 0xF4)
|
| 5085 | + goto yy238;
|
| 5086 | + goto yy225;
|
| 5087 | + yy229:
|
| 5088 | + yych = *(marker = ++p);
|
| 5089 | + if (yybm[0 + yych] & 1) {
|
| 5090 | + goto yy247;
|
| 5091 | + }
|
| 5092 | + if (yych <= '=') {
|
| 5093 | + if (yych <= '.') {
|
| 5094 | + if (yych == '-')
|
| 5095 | + goto yy249;
|
| 5096 | + goto yy225;
|
| 5097 | + } else {
|
| 5098 | + if (yych <= '/')
|
| 5099 | + goto yy251;
|
| 5100 | + if (yych <= '9')
|
| 5101 | + goto yy249;
|
| 5102 | + goto yy225;
|
| 5103 | + }
|
| 5104 | + } else {
|
| 5105 | + if (yych <= 'Z') {
|
| 5106 | + if (yych <= '>')
|
| 5107 | + goto yy252;
|
| 5108 | + if (yych <= '@')
|
| 5109 | + goto yy225;
|
| 5110 | + goto yy249;
|
| 5111 | + } else {
|
| 5112 | + if (yych <= '`')
|
| 5113 | + goto yy225;
|
| 5114 | + if (yych <= 'z')
|
| 5115 | + goto yy249;
|
| 5116 | + goto yy225;
|
| 5117 | + }
|
| 5118 | + }
|
| 5119 | + yy230:
|
| 5120 | + yych = *++p;
|
| 5121 | + if (yych == '-')
|
| 5122 | + goto yy254;
|
| 5123 | + yy231:
|
| 5124 | + p = marker;
|
| 5125 | + goto yy225;
|
| 5126 | + yy232:
|
| 5127 | + ++p;
|
| 5128 | + yych = *p;
|
| 5129 | + if (yybm[256 + yych] & 32) {
|
| 5130 | + goto yy232;
|
| 5131 | + }
|
| 5132 | + if (yych <= 0x08)
|
| 5133 | + goto yy231;
|
| 5134 | + if (yych <= '\r')
|
| 5135 | + goto yy255;
|
| 5136 | + if (yych == ' ')
|
| 5137 | + goto yy255;
|
| 5138 | + goto yy231;
|
| 5139 | + yy234:
|
| 5140 | + yych = *++p;
|
| 5141 | + if (yych == 'C')
|
| 5142 | + goto yy257;
|
| 5143 | + if (yych == 'c')
|
| 5144 | + goto yy257;
|
| 5145 | + goto yy231;
|
| 5146 | + yy235:
|
| 5147 | + ++p;
|
| 5148 | + yych = *p;
|
| 5149 | + if (yybm[256 + yych] & 64) {
|
| 5150 | + goto yy235;
|
| 5151 | + }
|
| 5152 | + if (yych <= 0x1F) {
|
| 5153 | + if (yych <= 0x08)
|
| 5154 | + goto yy231;
|
| 5155 | + if (yych <= '\r')
|
| 5156 | + goto yy258;
|
| 5157 | + goto yy231;
|
| 5158 | + } else {
|
| 5159 | + if (yych <= ' ')
|
| 5160 | + goto yy258;
|
| 5161 | + if (yych == '>')
|
| 5162 | + goto yy252;
|
| 5163 | + goto yy231;
|
| 5164 | + }
|
| 5165 | + yy237:
|
| 5166 | + ++p;
|
| 5167 | + yych = *p;
|
| 5168 | + yy238:
|
| 5169 | + if (yybm[256 + yych] & 128) {
|
| 5170 | + goto yy237;
|
| 5171 | + }
|
| 5172 | + if (yych <= 0xEC) {
|
| 5173 | + if (yych <= 0xC1) {
|
| 5174 | + if (yych <= 0x00)
|
| 5175 | + goto yy231;
|
| 5176 | + if (yych >= '@')
|
| 5177 | + goto yy231;
|
| 5178 | + } else {
|
| 5179 | + if (yych <= 0xDF)
|
| 5180 | + goto yy240;
|
| 5181 | + if (yych <= 0xE0)
|
| 5182 | + goto yy241;
|
| 5183 | + goto yy242;
|
| 5184 | + }
|
| 5185 | + } else {
|
| 5186 | + if (yych <= 0xF0) {
|
| 5187 | + if (yych <= 0xED)
|
| 5188 | + goto yy243;
|
| 5189 | + if (yych <= 0xEF)
|
| 5190 | + goto yy242;
|
| 5191 | + goto yy244;
|
| 5192 | + } else {
|
| 5193 | + if (yych <= 0xF3)
|
| 5194 | + goto yy245;
|
| 5195 | + if (yych <= 0xF4)
|
| 5196 | + goto yy246;
|
| 5197 | + goto yy231;
|
| 5198 | + }
|
| 5199 | + }
|
| 5200 | + ++p;
|
| 5201 | + yych = *p;
|
| 5202 | + if (yych <= 0xE0) {
|
| 5203 | + if (yych <= '>') {
|
| 5204 | + if (yych <= 0x00)
|
| 5205 | + goto yy231;
|
| 5206 | + if (yych <= '=')
|
| 5207 | + goto yy237;
|
| 5208 | + goto yy252;
|
| 5209 | + } else {
|
| 5210 | + if (yych <= 0x7F)
|
| 5211 | + goto yy237;
|
| 5212 | + if (yych <= 0xC1)
|
| 5213 | + goto yy231;
|
| 5214 | + if (yych >= 0xE0)
|
| 5215 | + goto yy241;
|
| 5216 | + }
|
| 5217 | + } else {
|
| 5218 | + if (yych <= 0xEF) {
|
| 5219 | + if (yych == 0xED)
|
| 5220 | + goto yy243;
|
| 5221 | + goto yy242;
|
| 5222 | + } else {
|
| 5223 | + if (yych <= 0xF0)
|
| 5224 | + goto yy244;
|
| 5225 | + if (yych <= 0xF3)
|
| 5226 | + goto yy245;
|
| 5227 | + if (yych <= 0xF4)
|
| 5228 | + goto yy246;
|
| 5229 | + goto yy231;
|
| 5230 | + }
|
| 5231 | + }
|
| 5232 | + yy240:
|
| 5233 | + ++p;
|
| 5234 | + yych = *p;
|
| 5235 | + if (yych <= 0x7F)
|
| 5236 | + goto yy231;
|
| 5237 | + if (yych <= 0xBF)
|
| 5238 | + goto yy237;
|
| 5239 | + goto yy231;
|
| 5240 | + yy241:
|
| 5241 | + ++p;
|
| 5242 | + yych = *p;
|
| 5243 | + if (yych <= 0x9F)
|
| 5244 | + goto yy231;
|
| 5245 | + if (yych <= 0xBF)
|
| 5246 | + goto yy240;
|
| 5247 | + goto yy231;
|
| 5248 | + yy242:
|
| 5249 | + ++p;
|
| 5250 | + yych = *p;
|
| 5251 | + if (yych <= 0x7F)
|
| 5252 | + goto yy231;
|
| 5253 | + if (yych <= 0xBF)
|
| 5254 | + goto yy240;
|
| 5255 | + goto yy231;
|
| 5256 | + yy243:
|
| 5257 | + ++p;
|
| 5258 | + yych = *p;
|
| 5259 | + if (yych <= 0x7F)
|
| 5260 | + goto yy231;
|
| 5261 | + if (yych <= 0x9F)
|
| 5262 | + goto yy240;
|
| 5263 | + goto yy231;
|
| 5264 | + yy244:
|
| 5265 | + ++p;
|
| 5266 | + yych = *p;
|
| 5267 | + if (yych <= 0x8F)
|
| 5268 | + goto yy231;
|
| 5269 | + if (yych <= 0xBF)
|
| 5270 | + goto yy242;
|
| 5271 | + goto yy231;
|
| 5272 | + yy245:
|
| 5273 | + ++p;
|
| 5274 | + yych = *p;
|
| 5275 | + if (yych <= 0x7F)
|
| 5276 | + goto yy231;
|
| 5277 | + if (yych <= 0xBF)
|
| 5278 | + goto yy242;
|
| 5279 | + goto yy231;
|
| 5280 | + yy246:
|
| 5281 | + ++p;
|
| 5282 | + yych = *p;
|
| 5283 | + if (yych <= 0x7F)
|
| 5284 | + goto yy231;
|
| 5285 | + if (yych <= 0x8F)
|
| 5286 | + goto yy242;
|
| 5287 | + goto yy231;
|
| 5288 | + yy247:
|
| 5289 | + ++p;
|
| 5290 | + yych = *p;
|
| 5291 | + if (yybm[0 + yych] & 1) {
|
| 5292 | + goto yy247;
|
| 5293 | + }
|
| 5294 | + if (yych <= '>') {
|
| 5295 | + if (yych <= '9') {
|
| 5296 | + if (yych == '/')
|
| 5297 | + goto yy251;
|
| 5298 | + goto yy231;
|
| 5299 | + } else {
|
| 5300 | + if (yych <= ':')
|
| 5301 | + goto yy260;
|
| 5302 | + if (yych <= '=')
|
| 5303 | + goto yy231;
|
| 5304 | + goto yy252;
|
| 5305 | + }
|
| 5306 | + } else {
|
| 5307 | + if (yych <= '^') {
|
| 5308 | + if (yych <= '@')
|
| 5309 | + goto yy231;
|
| 5310 | + if (yych <= 'Z')
|
| 5311 | + goto yy260;
|
| 5312 | + goto yy231;
|
| 5313 | + } else {
|
| 5314 | + if (yych == '`')
|
| 5315 | + goto yy231;
|
| 5316 | + if (yych <= 'z')
|
| 5317 | + goto yy260;
|
| 5318 | + goto yy231;
|
| 5319 | + }
|
| 5320 | + }
|
| 5321 | + yy249:
|
| 5322 | + ++p;
|
| 5323 | + yych = *p;
|
| 5324 | + if (yybm[0 + yych] & 1) {
|
| 5325 | + goto yy247;
|
| 5326 | + }
|
| 5327 | + if (yych <= '=') {
|
| 5328 | + if (yych <= '.') {
|
| 5329 | + if (yych == '-')
|
| 5330 | + goto yy249;
|
| 5331 | + goto yy231;
|
| 5332 | + } else {
|
| 5333 | + if (yych <= '/')
|
| 5334 | + goto yy251;
|
| 5335 | + if (yych <= '9')
|
| 5336 | + goto yy249;
|
| 5337 | + goto yy231;
|
| 5338 | + }
|
| 5339 | + } else {
|
| 5340 | + if (yych <= 'Z') {
|
| 5341 | + if (yych <= '>')
|
| 5342 | + goto yy252;
|
| 5343 | + if (yych <= '@')
|
| 5344 | + goto yy231;
|
| 5345 | + goto yy249;
|
| 5346 | + } else {
|
| 5347 | + if (yych <= '`')
|
| 5348 | + goto yy231;
|
| 5349 | + if (yych <= 'z')
|
| 5350 | + goto yy249;
|
| 5351 | + goto yy231;
|
| 5352 | + }
|
| 5353 | + }
|
| 5354 | + yy251:
|
| 5355 | + yych = *++p;
|
| 5356 | + if (yych != '>')
|
| 5357 | + goto yy231;
|
| 5358 | + yy252:
|
| 5359 | + ++p;
|
| 5360 | + { return (bufsize_t)(p - start); }
|
| 5361 | + yy254:
|
| 5362 | + yych = *++p;
|
| 5363 | + if (yych == '-')
|
| 5364 | + goto yy264;
|
| 5365 | + if (yych == '>')
|
| 5366 | + goto yy231;
|
| 5367 | + goto yy263;
|
| 5368 | + yy255:
|
| 5369 | + ++p;
|
| 5370 | + yych = *p;
|
| 5371 | + if (yybm[0 + yych] & 2) {
|
| 5372 | + goto yy255;
|
| 5373 | + }
|
| 5374 | + if (yych <= 0xEC) {
|
| 5375 | + if (yych <= 0xC1) {
|
| 5376 | + if (yych <= 0x00)
|
| 5377 | + goto yy231;
|
| 5378 | + if (yych <= '>')
|
| 5379 | + goto yy252;
|
| 5380 | + goto yy231;
|
| 5381 | + } else {
|
| 5382 | + if (yych <= 0xDF)
|
| 5383 | + goto yy272;
|
| 5384 | + if (yych <= 0xE0)
|
| 5385 | + goto yy273;
|
| 5386 | + goto yy274;
|
| 5387 | + }
|
| 5388 | + } else {
|
| 5389 | + if (yych <= 0xF0) {
|
| 5390 | + if (yych <= 0xED)
|
| 5391 | + goto yy275;
|
| 5392 | + if (yych <= 0xEF)
|
| 5393 | + goto yy274;
|
| 5394 | + goto yy276;
|
| 5395 | + } else {
|
| 5396 | + if (yych <= 0xF3)
|
| 5397 | + goto yy277;
|
| 5398 | + if (yych <= 0xF4)
|
| 5399 | + goto yy278;
|
| 5400 | + goto yy231;
|
| 5401 | + }
|
| 5402 | + }
|
| 5403 | + yy257:
|
| 5404 | + yych = *++p;
|
| 5405 | + if (yych == 'D')
|
| 5406 | + goto yy279;
|
| 5407 | + if (yych == 'd')
|
| 5408 | + goto yy279;
|
| 5409 | + goto yy231;
|
| 5410 | + yy258:
|
| 5411 | + ++p;
|
| 5412 | + yych = *p;
|
| 5413 | + if (yych <= 0x1F) {
|
| 5414 | + if (yych <= 0x08)
|
| 5415 | + goto yy231;
|
| 5416 | + if (yych <= '\r')
|
| 5417 | + goto yy258;
|
| 5418 | + goto yy231;
|
| 5419 | + } else {
|
| 5420 | + if (yych <= ' ')
|
| 5421 | + goto yy258;
|
| 5422 | + if (yych == '>')
|
| 5423 | + goto yy252;
|
| 5424 | + goto yy231;
|
| 5425 | + }
|
| 5426 | + yy260:
|
| 5427 | + ++p;
|
| 5428 | + yych = *p;
|
| 5429 | + if (yybm[0 + yych] & 4) {
|
| 5430 | + goto yy260;
|
| 5431 | + }
|
| 5432 | + if (yych <= ',') {
|
| 5433 | + if (yych <= '\r') {
|
| 5434 | + if (yych <= 0x08)
|
| 5435 | + goto yy231;
|
| 5436 | + goto yy280;
|
| 5437 | + } else {
|
| 5438 | + if (yych == ' ')
|
| 5439 | + goto yy280;
|
| 5440 | + goto yy231;
|
| 5441 | + }
|
| 5442 | + } else {
|
| 5443 | + if (yych <= '<') {
|
| 5444 | + if (yych <= '/')
|
| 5445 | + goto yy251;
|
| 5446 | + goto yy231;
|
| 5447 | + } else {
|
| 5448 | + if (yych <= '=')
|
| 5449 | + goto yy282;
|
| 5450 | + if (yych <= '>')
|
| 5451 | + goto yy252;
|
| 5452 | + goto yy231;
|
| 5453 | + }
|
| 5454 | + }
|
| 5455 | + yy262:
|
| 5456 | + ++p;
|
| 5457 | + yych = *p;
|
| 5458 | + yy263:
|
| 5459 | + if (yybm[0 + yych] & 8) {
|
| 5460 | + goto yy262;
|
| 5461 | + }
|
| 5462 | + if (yych <= 0xEC) {
|
| 5463 | + if (yych <= 0xC1) {
|
| 5464 | + if (yych <= 0x00)
|
| 5465 | + goto yy231;
|
| 5466 | + if (yych <= '-')
|
| 5467 | + goto yy283;
|
| 5468 | + goto yy231;
|
| 5469 | + } else {
|
| 5470 | + if (yych <= 0xDF)
|
| 5471 | + goto yy265;
|
| 5472 | + if (yych <= 0xE0)
|
| 5473 | + goto yy266;
|
| 5474 | + goto yy267;
|
| 5475 | + }
|
| 5476 | + } else {
|
| 5477 | + if (yych <= 0xF0) {
|
| 5478 | + if (yych <= 0xED)
|
| 5479 | + goto yy268;
|
| 5480 | + if (yych <= 0xEF)
|
| 5481 | + goto yy267;
|
| 5482 | + goto yy269;
|
| 5483 | + } else {
|
| 5484 | + if (yych <= 0xF3)
|
| 5485 | + goto yy270;
|
| 5486 | + if (yych <= 0xF4)
|
| 5487 | + goto yy271;
|
| 5488 | + goto yy231;
|
| 5489 | + }
|
| 5490 | + }
|
| 5491 | + yy264:
|
| 5492 | + yych = *++p;
|
| 5493 | + if (yych == '-')
|
| 5494 | + goto yy251;
|
| 5495 | + if (yych == '>')
|
| 5496 | + goto yy231;
|
| 5497 | + goto yy263;
|
| 5498 | + yy265:
|
| 5499 | + ++p;
|
| 5500 | + yych = *p;
|
| 5501 | + if (yych <= 0x7F)
|
| 5502 | + goto yy231;
|
| 5503 | + if (yych <= 0xBF)
|
| 5504 | + goto yy262;
|
| 5505 | + goto yy231;
|
| 5506 | + yy266:
|
| 5507 | + ++p;
|
| 5508 | + yych = *p;
|
| 5509 | + if (yych <= 0x9F)
|
| 5510 | + goto yy231;
|
| 5511 | + if (yych <= 0xBF)
|
| 5512 | + goto yy265;
|
| 5513 | + goto yy231;
|
| 5514 | + yy267:
|
| 5515 | + ++p;
|
| 5516 | + yych = *p;
|
| 5517 | + if (yych <= 0x7F)
|
| 5518 | + goto yy231;
|
| 5519 | + if (yych <= 0xBF)
|
| 5520 | + goto yy265;
|
| 5521 | + goto yy231;
|
| 5522 | + yy268:
|
| 5523 | + ++p;
|
| 5524 | + yych = *p;
|
| 5525 | + if (yych <= 0x7F)
|
| 5526 | + goto yy231;
|
| 5527 | + if (yych <= 0x9F)
|
| 5528 | + goto yy265;
|
| 5529 | + goto yy231;
|
| 5530 | + yy269:
|
| 5531 | + ++p;
|
| 5532 | + yych = *p;
|
| 5533 | + if (yych <= 0x8F)
|
| 5534 | + goto yy231;
|
| 5535 | + if (yych <= 0xBF)
|
| 5536 | + goto yy267;
|
| 5537 | + goto yy231;
|
| 5538 | + yy270:
|
| 5539 | + ++p;
|
| 5540 | + yych = *p;
|
| 5541 | + if (yych <= 0x7F)
|
| 5542 | + goto yy231;
|
| 5543 | + if (yych <= 0xBF)
|
| 5544 | + goto yy267;
|
| 5545 | + goto yy231;
|
| 5546 | + yy271:
|
| 5547 | + ++p;
|
| 5548 | + yych = *p;
|
| 5549 | + if (yych <= 0x7F)
|
| 5550 | + goto yy231;
|
| 5551 | + if (yych <= 0x8F)
|
| 5552 | + goto yy267;
|
| 5553 | + goto yy231;
|
| 5554 | + yy272:
|
| 5555 | + ++p;
|
| 5556 | + yych = *p;
|
| 5557 | + if (yych <= 0x7F)
|
| 5558 | + goto yy231;
|
| 5559 | + if (yych <= 0xBF)
|
| 5560 | + goto yy255;
|
| 5561 | + goto yy231;
|
| 5562 | + yy273:
|
| 5563 | + ++p;
|
| 5564 | + yych = *p;
|
| 5565 | + if (yych <= 0x9F)
|
| 5566 | + goto yy231;
|
| 5567 | + if (yych <= 0xBF)
|
| 5568 | + goto yy272;
|
| 5569 | + goto yy231;
|
| 5570 | + yy274:
|
| 5571 | + ++p;
|
| 5572 | + yych = *p;
|
| 5573 | + if (yych <= 0x7F)
|
| 5574 | + goto yy231;
|
| 5575 | + if (yych <= 0xBF)
|
| 5576 | + goto yy272;
|
| 5577 | + goto yy231;
|
| 5578 | + yy275:
|
| 5579 | + ++p;
|
| 5580 | + yych = *p;
|
| 5581 | + if (yych <= 0x7F)
|
| 5582 | + goto yy231;
|
| 5583 | + if (yych <= 0x9F)
|
| 5584 | + goto yy272;
|
| 5585 | + goto yy231;
|
| 5586 | + yy276:
|
| 5587 | + ++p;
|
| 5588 | + yych = *p;
|
| 5589 | + if (yych <= 0x8F)
|
| 5590 | + goto yy231;
|
| 5591 | + if (yych <= 0xBF)
|
| 5592 | + goto yy274;
|
| 5593 | + goto yy231;
|
| 5594 | + yy277:
|
| 5595 | + ++p;
|
| 5596 | + yych = *p;
|
| 5597 | + if (yych <= 0x7F)
|
| 5598 | + goto yy231;
|
| 5599 | + if (yych <= 0xBF)
|
| 5600 | + goto yy274;
|
| 5601 | + goto yy231;
|
| 5602 | + yy278:
|
| 5603 | + ++p;
|
| 5604 | + yych = *p;
|
| 5605 | + if (yych <= 0x7F)
|
| 5606 | + goto yy231;
|
| 5607 | + if (yych <= 0x8F)
|
| 5608 | + goto yy274;
|
| 5609 | + goto yy231;
|
| 5610 | + yy279:
|
| 5611 | + yych = *++p;
|
| 5612 | + if (yych == 'A')
|
| 5613 | + goto yy284;
|
| 5614 | + if (yych == 'a')
|
| 5615 | + goto yy284;
|
| 5616 | + goto yy231;
|
| 5617 | + yy280:
|
| 5618 | + ++p;
|
| 5619 | + yych = *p;
|
| 5620 | + if (yych <= '<') {
|
| 5621 | + if (yych <= ' ') {
|
| 5622 | + if (yych <= 0x08)
|
| 5623 | + goto yy231;
|
| 5624 | + if (yych <= '\r')
|
| 5625 | + goto yy280;
|
| 5626 | + if (yych <= 0x1F)
|
| 5627 | + goto yy231;
|
| 5628 | + goto yy280;
|
| 5629 | + } else {
|
| 5630 | + if (yych <= '/') {
|
| 5631 | + if (yych <= '.')
|
| 5632 | + goto yy231;
|
| 5633 | + goto yy251;
|
| 5634 | + } else {
|
| 5635 | + if (yych == ':')
|
| 5636 | + goto yy260;
|
| 5637 | + goto yy231;
|
| 5638 | + }
|
| 5639 | + }
|
| 5640 | + } else {
|
| 5641 | + if (yych <= 'Z') {
|
| 5642 | + if (yych <= '=')
|
| 5643 | + goto yy282;
|
| 5644 | + if (yych <= '>')
|
| 5645 | + goto yy252;
|
| 5646 | + if (yych <= '@')
|
| 5647 | + goto yy231;
|
| 5648 | + goto yy260;
|
| 5649 | + } else {
|
| 5650 | + if (yych <= '_') {
|
| 5651 | + if (yych <= '^')
|
| 5652 | + goto yy231;
|
| 5653 | + goto yy260;
|
| 5654 | + } else {
|
| 5655 | + if (yych <= '`')
|
| 5656 | + goto yy231;
|
| 5657 | + if (yych <= 'z')
|
| 5658 | + goto yy260;
|
| 5659 | + goto yy231;
|
| 5660 | + }
|
| 5661 | + }
|
| 5662 | + }
|
| 5663 | + yy282:
|
| 5664 | + ++p;
|
| 5665 | + yych = *p;
|
| 5666 | + if (yybm[0 + yych] & 16) {
|
| 5667 | + goto yy285;
|
| 5668 | + }
|
| 5669 | + if (yych <= 0xE0) {
|
| 5670 | + if (yych <= '"') {
|
| 5671 | + if (yych <= 0x00)
|
| 5672 | + goto yy231;
|
| 5673 | + if (yych <= ' ')
|
| 5674 | + goto yy287;
|
| 5675 | + goto yy288;
|
| 5676 | + } else {
|
| 5677 | + if (yych <= '\'')
|
| 5678 | + goto yy290;
|
| 5679 | + if (yych <= 0xC1)
|
| 5680 | + goto yy231;
|
| 5681 | + if (yych <= 0xDF)
|
| 5682 | + goto yy292;
|
| 5683 | + goto yy293;
|
| 5684 | + }
|
| 5685 | + } else {
|
| 5686 | + if (yych <= 0xEF) {
|
| 5687 | + if (yych == 0xED)
|
| 5688 | + goto yy295;
|
| 5689 | + goto yy294;
|
| 5690 | + } else {
|
| 5691 | + if (yych <= 0xF0)
|
| 5692 | + goto yy296;
|
| 5693 | + if (yych <= 0xF3)
|
| 5694 | + goto yy297;
|
| 5695 | + if (yych <= 0xF4)
|
| 5696 | + goto yy298;
|
| 5697 | + goto yy231;
|
| 5698 | + }
|
| 5699 | + }
|
| 5700 | + yy283:
|
| 5701 | + ++p;
|
| 5702 | + yych = *p;
|
| 5703 | + if (yybm[0 + yych] & 8) {
|
| 5704 | + goto yy262;
|
| 5705 | + }
|
| 5706 | + if (yych <= 0xEC) {
|
| 5707 | + if (yych <= 0xC1) {
|
| 5708 | + if (yych <= 0x00)
|
| 5709 | + goto yy231;
|
| 5710 | + if (yych <= '-')
|
| 5711 | + goto yy251;
|
| 5712 | + goto yy231;
|
| 5713 | + } else {
|
| 5714 | + if (yych <= 0xDF)
|
| 5715 | + goto yy265;
|
| 5716 | + if (yych <= 0xE0)
|
| 5717 | + goto yy266;
|
| 5718 | + goto yy267;
|
| 5719 | + }
|
| 5720 | + } else {
|
| 5721 | + if (yych <= 0xF0) {
|
| 5722 | + if (yych <= 0xED)
|
| 5723 | + goto yy268;
|
| 5724 | + if (yych <= 0xEF)
|
| 5725 | + goto yy267;
|
| 5726 | + goto yy269;
|
| 5727 | + } else {
|
| 5728 | + if (yych <= 0xF3)
|
| 5729 | + goto yy270;
|
| 5730 | + if (yych <= 0xF4)
|
| 5731 | + goto yy271;
|
| 5732 | + goto yy231;
|
| 5733 | + }
|
| 5734 | + }
|
| 5735 | + yy284:
|
| 5736 | + yych = *++p;
|
| 5737 | + if (yych == 'T')
|
| 5738 | + goto yy299;
|
| 5739 | + if (yych == 't')
|
| 5740 | + goto yy299;
|
| 5741 | + goto yy231;
|
| 5742 | + yy285:
|
| 5743 | + ++p;
|
| 5744 | + yych = *p;
|
| 5745 | + if (yybm[0 + yych] & 16) {
|
| 5746 | + goto yy285;
|
| 5747 | + }
|
| 5748 | + if (yych <= 0xE0) {
|
| 5749 | + if (yych <= '=') {
|
| 5750 | + if (yych <= 0x00)
|
| 5751 | + goto yy231;
|
| 5752 | + if (yych <= ' ')
|
| 5753 | + goto yy300;
|
| 5754 | + goto yy231;
|
| 5755 | + } else {
|
| 5756 | + if (yych <= '>')
|
| 5757 | + goto yy252;
|
| 5758 | + if (yych <= 0xC1)
|
| 5759 | + goto yy231;
|
| 5760 | + if (yych <= 0xDF)
|
| 5761 | + goto yy292;
|
| 5762 | + goto yy293;
|
| 5763 | + }
|
| 5764 | + } else {
|
| 5765 | + if (yych <= 0xEF) {
|
| 5766 | + if (yych == 0xED)
|
| 5767 | + goto yy295;
|
| 5768 | + goto yy294;
|
| 5769 | + } else {
|
| 5770 | + if (yych <= 0xF0)
|
| 5771 | + goto yy296;
|
| 5772 | + if (yych <= 0xF3)
|
| 5773 | + goto yy297;
|
| 5774 | + if (yych <= 0xF4)
|
| 5775 | + goto yy298;
|
| 5776 | + goto yy231;
|
| 5777 | + }
|
| 5778 | + }
|
| 5779 | + yy287:
|
| 5780 | + ++p;
|
| 5781 | + yych = *p;
|
| 5782 | + if (yybm[0 + yych] & 16) {
|
| 5783 | + goto yy285;
|
| 5784 | + }
|
| 5785 | + if (yych <= 0xDF) {
|
| 5786 | + if (yych <= '\'') {
|
| 5787 | + if (yych <= 0x00)
|
| 5788 | + goto yy231;
|
| 5789 | + if (yych <= ' ')
|
| 5790 | + goto yy302;
|
| 5791 | + if (yych >= '#')
|
| 5792 | + goto yy290;
|
| 5793 | + } else {
|
| 5794 | + if (yych == '>')
|
| 5795 | + goto yy252;
|
| 5796 | + if (yych <= 0xC1)
|
| 5797 | + goto yy231;
|
| 5798 | + goto yy292;
|
| 5799 | + }
|
| 5800 | + } else {
|
| 5801 | + if (yych <= 0xEF) {
|
| 5802 | + if (yych <= 0xE0)
|
| 5803 | + goto yy293;
|
| 5804 | + if (yych == 0xED)
|
| 5805 | + goto yy295;
|
| 5806 | + goto yy294;
|
| 5807 | + } else {
|
| 5808 | + if (yych <= 0xF0)
|
| 5809 | + goto yy296;
|
| 5810 | + if (yych <= 0xF3)
|
| 5811 | + goto yy297;
|
| 5812 | + if (yych <= 0xF4)
|
| 5813 | + goto yy298;
|
| 5814 | + goto yy231;
|
| 5815 | + }
|
| 5816 | + }
|
| 5817 | + yy288:
|
| 5818 | + ++p;
|
| 5819 | + yych = *p;
|
| 5820 | + if (yybm[0 + yych] & 32) {
|
| 5821 | + goto yy288;
|
| 5822 | + }
|
| 5823 | + if (yych <= 0xEC) {
|
| 5824 | + if (yych <= 0xC1) {
|
| 5825 | + if (yych <= 0x00)
|
| 5826 | + goto yy231;
|
| 5827 | + if (yych <= '"')
|
| 5828 | + goto yy304;
|
| 5829 | + goto yy231;
|
| 5830 | + } else {
|
| 5831 | + if (yych <= 0xDF)
|
| 5832 | + goto yy305;
|
| 5833 | + if (yych <= 0xE0)
|
| 5834 | + goto yy306;
|
| 5835 | + goto yy307;
|
| 5836 | + }
|
| 5837 | + } else {
|
| 5838 | + if (yych <= 0xF0) {
|
| 5839 | + if (yych <= 0xED)
|
| 5840 | + goto yy308;
|
| 5841 | + if (yych <= 0xEF)
|
| 5842 | + goto yy307;
|
| 5843 | + goto yy309;
|
| 5844 | + } else {
|
| 5845 | + if (yych <= 0xF3)
|
| 5846 | + goto yy310;
|
| 5847 | + if (yych <= 0xF4)
|
| 5848 | + goto yy311;
|
| 5849 | + goto yy231;
|
| 5850 | + }
|
| 5851 | + }
|
| 5852 | + yy290:
|
| 5853 | + ++p;
|
| 5854 | + yych = *p;
|
| 5855 | + if (yybm[0 + yych] & 64) {
|
| 5856 | + goto yy290;
|
| 5857 | + }
|
| 5858 | + if (yych <= 0xEC) {
|
| 5859 | + if (yych <= 0xC1) {
|
| 5860 | + if (yych <= 0x00)
|
| 5861 | + goto yy231;
|
| 5862 | + if (yych <= '\'')
|
| 5863 | + goto yy304;
|
| 5864 | + goto yy231;
|
| 5865 | + } else {
|
| 5866 | + if (yych <= 0xDF)
|
| 5867 | + goto yy312;
|
| 5868 | + if (yych <= 0xE0)
|
| 5869 | + goto yy313;
|
| 5870 | + goto yy314;
|
| 5871 | + }
|
| 5872 | + } else {
|
| 5873 | + if (yych <= 0xF0) {
|
| 5874 | + if (yych <= 0xED)
|
| 5875 | + goto yy315;
|
| 5876 | + if (yych <= 0xEF)
|
| 5877 | + goto yy314;
|
| 5878 | + goto yy316;
|
| 5879 | + } else {
|
| 5880 | + if (yych <= 0xF3)
|
| 5881 | + goto yy317;
|
| 5882 | + if (yych <= 0xF4)
|
| 5883 | + goto yy318;
|
| 5884 | + goto yy231;
|
| 5885 | + }
|
| 5886 | + }
|
| 5887 | + yy292:
|
| 5888 | + ++p;
|
| 5889 | + yych = *p;
|
| 5890 | + if (yych <= 0x7F)
|
| 5891 | + goto yy231;
|
| 5892 | + if (yych <= 0xBF)
|
| 5893 | + goto yy285;
|
| 5894 | + goto yy231;
|
| 5895 | + yy293:
|
| 5896 | + ++p;
|
| 5897 | + yych = *p;
|
| 5898 | + if (yych <= 0x9F)
|
| 5899 | + goto yy231;
|
| 5900 | + if (yych <= 0xBF)
|
| 5901 | + goto yy292;
|
| 5902 | + goto yy231;
|
| 5903 | + yy294:
|
| 5904 | + ++p;
|
| 5905 | + yych = *p;
|
| 5906 | + if (yych <= 0x7F)
|
| 5907 | + goto yy231;
|
| 5908 | + if (yych <= 0xBF)
|
| 5909 | + goto yy292;
|
| 5910 | + goto yy231;
|
| 5911 | + yy295:
|
| 5912 | + ++p;
|
| 5913 | + yych = *p;
|
| 5914 | + if (yych <= 0x7F)
|
| 5915 | + goto yy231;
|
| 5916 | + if (yych <= 0x9F)
|
| 5917 | + goto yy292;
|
| 5918 | + goto yy231;
|
| 5919 | + yy296:
|
| 5920 | + ++p;
|
| 5921 | + yych = *p;
|
| 5922 | + if (yych <= 0x8F)
|
| 5923 | + goto yy231;
|
| 5924 | + if (yych <= 0xBF)
|
| 5925 | + goto yy294;
|
| 5926 | + goto yy231;
|
| 5927 | + yy297:
|
| 5928 | + ++p;
|
| 5929 | + yych = *p;
|
| 5930 | + if (yych <= 0x7F)
|
| 5931 | + goto yy231;
|
| 5932 | + if (yych <= 0xBF)
|
| 5933 | + goto yy294;
|
| 5934 | + goto yy231;
|
| 5935 | + yy298:
|
| 5936 | + ++p;
|
| 5937 | + yych = *p;
|
| 5938 | + if (yych <= 0x7F)
|
| 5939 | + goto yy231;
|
| 5940 | + if (yych <= 0x8F)
|
| 5941 | + goto yy294;
|
| 5942 | + goto yy231;
|
| 5943 | + yy299:
|
| 5944 | + yych = *++p;
|
| 5945 | + if (yych == 'A')
|
| 5946 | + goto yy319;
|
| 5947 | + if (yych == 'a')
|
| 5948 | + goto yy319;
|
| 5949 | + goto yy231;
|
| 5950 | + yy300:
|
| 5951 | + ++p;
|
| 5952 | + yych = *p;
|
| 5953 | + if (yych <= '@') {
|
| 5954 | + if (yych <= '"') {
|
| 5955 | + if (yych <= '\r') {
|
| 5956 | + if (yych <= 0x00)
|
| 5957 | + goto yy231;
|
| 5958 | + if (yych <= 0x08)
|
| 5959 | + goto yy285;
|
| 5960 | + goto yy300;
|
| 5961 | + } else {
|
| 5962 | + if (yych == ' ')
|
| 5963 | + goto yy300;
|
| 5964 | + if (yych <= '!')
|
| 5965 | + goto yy285;
|
| 5966 | + goto yy231;
|
| 5967 | + }
|
| 5968 | + } else {
|
| 5969 | + if (yych <= ':') {
|
| 5970 | + if (yych == '\'')
|
| 5971 | + goto yy231;
|
| 5972 | + if (yych <= '9')
|
| 5973 | + goto yy285;
|
| 5974 | + goto yy320;
|
| 5975 | + } else {
|
| 5976 | + if (yych <= ';')
|
| 5977 | + goto yy285;
|
| 5978 | + if (yych <= '=')
|
| 5979 | + goto yy231;
|
| 5980 | + if (yych <= '>')
|
| 5981 | + goto yy252;
|
| 5982 | + goto yy285;
|
| 5983 | + }
|
| 5984 | + }
|
| 5985 | + } else {
|
| 5986 | + if (yych <= 0xDF) {
|
| 5987 | + if (yych <= '`') {
|
| 5988 | + if (yych <= 'Z')
|
| 5989 | + goto yy320;
|
| 5990 | + if (yych <= '^')
|
| 5991 | + goto yy285;
|
| 5992 | + if (yych <= '_')
|
| 5993 | + goto yy320;
|
| 5994 | + goto yy231;
|
| 5995 | + } else {
|
| 5996 | + if (yych <= 'z')
|
| 5997 | + goto yy320;
|
| 5998 | + if (yych <= 0x7F)
|
| 5999 | + goto yy285;
|
| 6000 | + if (yych <= 0xC1)
|
| 6001 | + goto yy231;
|
| 6002 | + goto yy292;
|
| 6003 | + }
|
| 6004 | + } else {
|
| 6005 | + if (yych <= 0xEF) {
|
| 6006 | + if (yych <= 0xE0)
|
| 6007 | + goto yy293;
|
| 6008 | + if (yych == 0xED)
|
| 6009 | + goto yy295;
|
| 6010 | + goto yy294;
|
| 6011 | + } else {
|
| 6012 | + if (yych <= 0xF0)
|
| 6013 | + goto yy296;
|
| 6014 | + if (yych <= 0xF3)
|
| 6015 | + goto yy297;
|
| 6016 | + if (yych <= 0xF4)
|
| 6017 | + goto yy298;
|
| 6018 | + goto yy231;
|
| 6019 | + }
|
| 6020 | + }
|
| 6021 | + }
|
| 6022 | + yy302:
|
| 6023 | + ++p;
|
| 6024 | + yych = *p;
|
| 6025 | + if (yych <= '@') {
|
| 6026 | + if (yych <= '"') {
|
| 6027 | + if (yych <= '\r') {
|
| 6028 | + if (yych <= 0x00)
|
| 6029 | + goto yy231;
|
| 6030 | + if (yych <= 0x08)
|
| 6031 | + goto yy285;
|
| 6032 | + goto yy302;
|
| 6033 | + } else {
|
| 6034 | + if (yych == ' ')
|
| 6035 | + goto yy302;
|
| 6036 | + if (yych <= '!')
|
| 6037 | + goto yy285;
|
| 6038 | + goto yy288;
|
| 6039 | + }
|
| 6040 | + } else {
|
| 6041 | + if (yych <= ':') {
|
| 6042 | + if (yych == '\'')
|
| 6043 | + goto yy290;
|
| 6044 | + if (yych <= '9')
|
| 6045 | + goto yy285;
|
| 6046 | + goto yy320;
|
| 6047 | + } else {
|
| 6048 | + if (yych <= ';')
|
| 6049 | + goto yy285;
|
| 6050 | + if (yych <= '=')
|
| 6051 | + goto yy231;
|
| 6052 | + if (yych <= '>')
|
| 6053 | + goto yy252;
|
| 6054 | + goto yy285;
|
| 6055 | + }
|
| 6056 | + }
|
| 6057 | + } else {
|
| 6058 | + if (yych <= 0xDF) {
|
| 6059 | + if (yych <= '`') {
|
| 6060 | + if (yych <= 'Z')
|
| 6061 | + goto yy320;
|
| 6062 | + if (yych <= '^')
|
| 6063 | + goto yy285;
|
| 6064 | + if (yych <= '_')
|
| 6065 | + goto yy320;
|
| 6066 | + goto yy231;
|
| 6067 | + } else {
|
| 6068 | + if (yych <= 'z')
|
| 6069 | + goto yy320;
|
| 6070 | + if (yych <= 0x7F)
|
| 6071 | + goto yy285;
|
| 6072 | + if (yych <= 0xC1)
|
| 6073 | + goto yy231;
|
| 6074 | + goto yy292;
|
| 6075 | + }
|
| 6076 | + } else {
|
| 6077 | + if (yych <= 0xEF) {
|
| 6078 | + if (yych <= 0xE0)
|
| 6079 | + goto yy293;
|
| 6080 | + if (yych == 0xED)
|
| 6081 | + goto yy295;
|
| 6082 | + goto yy294;
|
| 6083 | + } else {
|
| 6084 | + if (yych <= 0xF0)
|
| 6085 | + goto yy296;
|
| 6086 | + if (yych <= 0xF3)
|
| 6087 | + goto yy297;
|
| 6088 | + if (yych <= 0xF4)
|
| 6089 | + goto yy298;
|
| 6090 | + goto yy231;
|
| 6091 | + }
|
| 6092 | + }
|
| 6093 | + }
|
| 6094 | + yy304:
|
| 6095 | + ++p;
|
| 6096 | + yych = *p;
|
| 6097 | + if (yybm[0 + yych] & 1) {
|
| 6098 | + goto yy247;
|
| 6099 | + }
|
| 6100 | + if (yych == '/')
|
| 6101 | + goto yy251;
|
| 6102 | + if (yych == '>')
|
| 6103 | + goto yy252;
|
| 6104 | + goto yy231;
|
| 6105 | + yy305:
|
| 6106 | + ++p;
|
| 6107 | + yych = *p;
|
| 6108 | + if (yych <= 0x7F)
|
| 6109 | + goto yy231;
|
| 6110 | + if (yych <= 0xBF)
|
| 6111 | + goto yy288;
|
| 6112 | + goto yy231;
|
| 6113 | + yy306:
|
| 6114 | + ++p;
|
| 6115 | + yych = *p;
|
| 6116 | + if (yych <= 0x9F)
|
| 6117 | + goto yy231;
|
| 6118 | + if (yych <= 0xBF)
|
| 6119 | + goto yy305;
|
| 6120 | + goto yy231;
|
| 6121 | + yy307:
|
| 6122 | + ++p;
|
| 6123 | + yych = *p;
|
| 6124 | + if (yych <= 0x7F)
|
| 6125 | + goto yy231;
|
| 6126 | + if (yych <= 0xBF)
|
| 6127 | + goto yy305;
|
| 6128 | + goto yy231;
|
| 6129 | + yy308:
|
| 6130 | + ++p;
|
| 6131 | + yych = *p;
|
| 6132 | + if (yych <= 0x7F)
|
| 6133 | + goto yy231;
|
| 6134 | + if (yych <= 0x9F)
|
| 6135 | + goto yy305;
|
| 6136 | + goto yy231;
|
| 6137 | + yy309:
|
| 6138 | + ++p;
|
| 6139 | + yych = *p;
|
| 6140 | + if (yych <= 0x8F)
|
| 6141 | + goto yy231;
|
| 6142 | + if (yych <= 0xBF)
|
| 6143 | + goto yy307;
|
| 6144 | + goto yy231;
|
| 6145 | + yy310:
|
| 6146 | + ++p;
|
| 6147 | + yych = *p;
|
| 6148 | + if (yych <= 0x7F)
|
| 6149 | + goto yy231;
|
| 6150 | + if (yych <= 0xBF)
|
| 6151 | + goto yy307;
|
| 6152 | + goto yy231;
|
| 6153 | + yy311:
|
| 6154 | + ++p;
|
| 6155 | + yych = *p;
|
| 6156 | + if (yych <= 0x7F)
|
| 6157 | + goto yy231;
|
| 6158 | + if (yych <= 0x8F)
|
| 6159 | + goto yy307;
|
| 6160 | + goto yy231;
|
| 6161 | + yy312:
|
| 6162 | + ++p;
|
| 6163 | + yych = *p;
|
| 6164 | + if (yych <= 0x7F)
|
| 6165 | + goto yy231;
|
| 6166 | + if (yych <= 0xBF)
|
| 6167 | + goto yy290;
|
| 6168 | + goto yy231;
|
| 6169 | + yy313:
|
| 6170 | + ++p;
|
| 6171 | + yych = *p;
|
| 6172 | + if (yych <= 0x9F)
|
| 6173 | + goto yy231;
|
| 6174 | + if (yych <= 0xBF)
|
| 6175 | + goto yy312;
|
| 6176 | + goto yy231;
|
| 6177 | + yy314:
|
| 6178 | + ++p;
|
| 6179 | + yych = *p;
|
| 6180 | + if (yych <= 0x7F)
|
| 6181 | + goto yy231;
|
| 6182 | + if (yych <= 0xBF)
|
| 6183 | + goto yy312;
|
| 6184 | + goto yy231;
|
| 6185 | + yy315:
|
| 6186 | + ++p;
|
| 6187 | + yych = *p;
|
| 6188 | + if (yych <= 0x7F)
|
| 6189 | + goto yy231;
|
| 6190 | + if (yych <= 0x9F)
|
| 6191 | + goto yy312;
|
| 6192 | + goto yy231;
|
| 6193 | + yy316:
|
| 6194 | + ++p;
|
| 6195 | + yych = *p;
|
| 6196 | + if (yych <= 0x8F)
|
| 6197 | + goto yy231;
|
| 6198 | + if (yych <= 0xBF)
|
| 6199 | + goto yy314;
|
| 6200 | + goto yy231;
|
| 6201 | + yy317:
|
| 6202 | + ++p;
|
| 6203 | + yych = *p;
|
| 6204 | + if (yych <= 0x7F)
|
| 6205 | + goto yy231;
|
| 6206 | + if (yych <= 0xBF)
|
| 6207 | + goto yy314;
|
| 6208 | + goto yy231;
|
| 6209 | + yy318:
|
| 6210 | + ++p;
|
| 6211 | + yych = *p;
|
| 6212 | + if (yych <= 0x7F)
|
| 6213 | + goto yy231;
|
| 6214 | + if (yych <= 0x8F)
|
| 6215 | + goto yy314;
|
| 6216 | + goto yy231;
|
| 6217 | + yy319:
|
| 6218 | + yych = *++p;
|
| 6219 | + if (yych == '[')
|
| 6220 | + goto yy322;
|
| 6221 | + goto yy231;
|
| 6222 | + yy320:
|
| 6223 | + ++p;
|
| 6224 | + yych = *p;
|
| 6225 | + if (yych <= '>') {
|
| 6226 | + if (yych <= '&') {
|
| 6227 | + if (yych <= 0x1F) {
|
| 6228 | + if (yych <= 0x00)
|
| 6229 | + goto yy231;
|
| 6230 | + if (yych <= 0x08)
|
| 6231 | + goto yy285;
|
| 6232 | + if (yych <= '\r')
|
| 6233 | + goto yy324;
|
| 6234 | + goto yy285;
|
| 6235 | + } else {
|
| 6236 | + if (yych <= ' ')
|
| 6237 | + goto yy324;
|
| 6238 | + if (yych == '"')
|
| 6239 | + goto yy231;
|
| 6240 | + goto yy285;
|
| 6241 | + }
|
| 6242 | + } else {
|
| 6243 | + if (yych <= '/') {
|
| 6244 | + if (yych <= '\'')
|
| 6245 | + goto yy231;
|
| 6246 | + if (yych <= ',')
|
| 6247 | + goto yy285;
|
| 6248 | + if (yych <= '.')
|
| 6249 | + goto yy320;
|
| 6250 | + goto yy285;
|
| 6251 | + } else {
|
| 6252 | + if (yych <= ';') {
|
| 6253 | + if (yych <= ':')
|
| 6254 | + goto yy320;
|
| 6255 | + goto yy285;
|
| 6256 | + } else {
|
| 6257 | + if (yych <= '<')
|
| 6258 | + goto yy231;
|
| 6259 | + if (yych <= '=')
|
| 6260 | + goto yy282;
|
| 6261 | + goto yy252;
|
| 6262 | + }
|
| 6263 | + }
|
| 6264 | + }
|
| 6265 | + } else {
|
| 6266 | + if (yych <= 0xC1) {
|
| 6267 | + if (yych <= '_') {
|
| 6268 | + if (yych <= '@')
|
| 6269 | + goto yy285;
|
| 6270 | + if (yych <= 'Z')
|
| 6271 | + goto yy320;
|
| 6272 | + if (yych <= '^')
|
| 6273 | + goto yy285;
|
| 6274 | + goto yy320;
|
| 6275 | + } else {
|
| 6276 | + if (yych <= '`')
|
| 6277 | + goto yy231;
|
| 6278 | + if (yych <= 'z')
|
| 6279 | + goto yy320;
|
| 6280 | + if (yych <= 0x7F)
|
| 6281 | + goto yy285;
|
| 6282 | + goto yy231;
|
| 6283 | + }
|
| 6284 | + } else {
|
| 6285 | + if (yych <= 0xED) {
|
| 6286 | + if (yych <= 0xDF)
|
| 6287 | + goto yy292;
|
| 6288 | + if (yych <= 0xE0)
|
| 6289 | + goto yy293;
|
| 6290 | + if (yych <= 0xEC)
|
| 6291 | + goto yy294;
|
| 6292 | + goto yy295;
|
| 6293 | + } else {
|
| 6294 | + if (yych <= 0xF0) {
|
| 6295 | + if (yych <= 0xEF)
|
| 6296 | + goto yy294;
|
| 6297 | + goto yy296;
|
| 6298 | + } else {
|
| 6299 | + if (yych <= 0xF3)
|
| 6300 | + goto yy297;
|
| 6301 | + if (yych <= 0xF4)
|
| 6302 | + goto yy298;
|
| 6303 | + goto yy231;
|
| 6304 | + }
|
| 6305 | + }
|
| 6306 | + }
|
| 6307 | + }
|
| 6308 | + yy322:
|
| 6309 | + ++p;
|
| 6310 | + yych = *p;
|
| 6311 | + if (yybm[0 + yych] & 128) {
|
| 6312 | + goto yy322;
|
| 6313 | + }
|
| 6314 | + if (yych <= 0xEC) {
|
| 6315 | + if (yych <= 0xC1) {
|
| 6316 | + if (yych <= 0x00)
|
| 6317 | + goto yy231;
|
| 6318 | + if (yych <= ']')
|
| 6319 | + goto yy326;
|
| 6320 | + goto yy231;
|
| 6321 | + } else {
|
| 6322 | + if (yych <= 0xDF)
|
| 6323 | + goto yy327;
|
| 6324 | + if (yych <= 0xE0)
|
| 6325 | + goto yy328;
|
| 6326 | + goto yy329;
|
| 6327 | + }
|
| 6328 | + } else {
|
| 6329 | + if (yych <= 0xF0) {
|
| 6330 | + if (yych <= 0xED)
|
| 6331 | + goto yy330;
|
| 6332 | + if (yych <= 0xEF)
|
| 6333 | + goto yy329;
|
| 6334 | + goto yy331;
|
| 6335 | + } else {
|
| 6336 | + if (yych <= 0xF3)
|
| 6337 | + goto yy332;
|
| 6338 | + if (yych <= 0xF4)
|
| 6339 | + goto yy333;
|
| 6340 | + goto yy231;
|
| 6341 | + }
|
| 6342 | + }
|
| 6343 | + yy324:
|
| 6344 | + ++p;
|
| 6345 | + yych = *p;
|
| 6346 | + if (yych <= '@') {
|
| 6347 | + if (yych <= '&') {
|
| 6348 | + if (yych <= 0x1F) {
|
| 6349 | + if (yych <= 0x00)
|
| 6350 | + goto yy231;
|
| 6351 | + if (yych <= 0x08)
|
| 6352 | + goto yy285;
|
| 6353 | + if (yych <= '\r')
|
| 6354 | + goto yy324;
|
| 6355 | + goto yy285;
|
| 6356 | + } else {
|
| 6357 | + if (yych <= ' ')
|
| 6358 | + goto yy324;
|
| 6359 | + if (yych == '"')
|
| 6360 | + goto yy231;
|
| 6361 | + goto yy285;
|
| 6362 | + }
|
| 6363 | + } else {
|
| 6364 | + if (yych <= ';') {
|
| 6365 | + if (yych <= '\'')
|
| 6366 | + goto yy231;
|
| 6367 | + if (yych == ':')
|
| 6368 | + goto yy320;
|
| 6369 | + goto yy285;
|
| 6370 | + } else {
|
| 6371 | + if (yych <= '<')
|
| 6372 | + goto yy231;
|
| 6373 | + if (yych <= '=')
|
| 6374 | + goto yy282;
|
| 6375 | + if (yych <= '>')
|
| 6376 | + goto yy252;
|
| 6377 | + goto yy285;
|
| 6378 | + }
|
| 6379 | + }
|
| 6380 | + } else {
|
| 6381 | + if (yych <= 0xDF) {
|
| 6382 | + if (yych <= '`') {
|
| 6383 | + if (yych <= 'Z')
|
| 6384 | + goto yy320;
|
| 6385 | + if (yych <= '^')
|
| 6386 | + goto yy285;
|
| 6387 | + if (yych <= '_')
|
| 6388 | + goto yy320;
|
| 6389 | + goto yy231;
|
| 6390 | + } else {
|
| 6391 | + if (yych <= 'z')
|
| 6392 | + goto yy320;
|
| 6393 | + if (yych <= 0x7F)
|
| 6394 | + goto yy285;
|
| 6395 | + if (yych <= 0xC1)
|
| 6396 | + goto yy231;
|
| 6397 | + goto yy292;
|
| 6398 | + }
|
| 6399 | + } else {
|
| 6400 | + if (yych <= 0xEF) {
|
| 6401 | + if (yych <= 0xE0)
|
| 6402 | + goto yy293;
|
| 6403 | + if (yych == 0xED)
|
| 6404 | + goto yy295;
|
| 6405 | + goto yy294;
|
| 6406 | + } else {
|
| 6407 | + if (yych <= 0xF0)
|
| 6408 | + goto yy296;
|
| 6409 | + if (yych <= 0xF3)
|
| 6410 | + goto yy297;
|
| 6411 | + if (yych <= 0xF4)
|
| 6412 | + goto yy298;
|
| 6413 | + goto yy231;
|
| 6414 | + }
|
| 6415 | + }
|
| 6416 | + }
|
| 6417 | + yy326:
|
| 6418 | + ++p;
|
| 6419 | + yych = *p;
|
| 6420 | + if (yybm[0 + yych] & 128) {
|
| 6421 | + goto yy322;
|
| 6422 | + }
|
| 6423 | + if (yych <= 0xEC) {
|
| 6424 | + if (yych <= 0xC1) {
|
| 6425 | + if (yych <= 0x00)
|
| 6426 | + goto yy231;
|
| 6427 | + if (yych <= ']')
|
| 6428 | + goto yy334;
|
| 6429 | + goto yy231;
|
| 6430 | + } else {
|
| 6431 | + if (yych <= 0xDF)
|
| 6432 | + goto yy327;
|
| 6433 | + if (yych <= 0xE0)
|
| 6434 | + goto yy328;
|
| 6435 | + goto yy329;
|
| 6436 | + }
|
| 6437 | + } else {
|
| 6438 | + if (yych <= 0xF0) {
|
| 6439 | + if (yych <= 0xED)
|
| 6440 | + goto yy330;
|
| 6441 | + if (yych <= 0xEF)
|
| 6442 | + goto yy329;
|
| 6443 | + goto yy331;
|
| 6444 | + } else {
|
| 6445 | + if (yych <= 0xF3)
|
| 6446 | + goto yy332;
|
| 6447 | + if (yych <= 0xF4)
|
| 6448 | + goto yy333;
|
| 6449 | + goto yy231;
|
| 6450 | + }
|
| 6451 | + }
|
| 6452 | + yy327:
|
| 6453 | + ++p;
|
| 6454 | + yych = *p;
|
| 6455 | + if (yych <= 0x7F)
|
| 6456 | + goto yy231;
|
| 6457 | + if (yych <= 0xBF)
|
| 6458 | + goto yy322;
|
| 6459 | + goto yy231;
|
| 6460 | + yy328:
|
| 6461 | + ++p;
|
| 6462 | + yych = *p;
|
| 6463 | + if (yych <= 0x9F)
|
| 6464 | + goto yy231;
|
| 6465 | + if (yych <= 0xBF)
|
| 6466 | + goto yy327;
|
| 6467 | + goto yy231;
|
| 6468 | + yy329:
|
| 6469 | + ++p;
|
| 6470 | + yych = *p;
|
| 6471 | + if (yych <= 0x7F)
|
| 6472 | + goto yy231;
|
| 6473 | + if (yych <= 0xBF)
|
| 6474 | + goto yy327;
|
| 6475 | + goto yy231;
|
| 6476 | + yy330:
|
| 6477 | + ++p;
|
| 6478 | + yych = *p;
|
| 6479 | + if (yych <= 0x7F)
|
| 6480 | + goto yy231;
|
| 6481 | + if (yych <= 0x9F)
|
| 6482 | + goto yy327;
|
| 6483 | + goto yy231;
|
| 6484 | + yy331:
|
| 6485 | + ++p;
|
| 6486 | + yych = *p;
|
| 6487 | + if (yych <= 0x8F)
|
| 6488 | + goto yy231;
|
| 6489 | + if (yych <= 0xBF)
|
| 6490 | + goto yy329;
|
| 6491 | + goto yy231;
|
| 6492 | + yy332:
|
| 6493 | + ++p;
|
| 6494 | + yych = *p;
|
| 6495 | + if (yych <= 0x7F)
|
| 6496 | + goto yy231;
|
| 6497 | + if (yych <= 0xBF)
|
| 6498 | + goto yy329;
|
| 6499 | + goto yy231;
|
| 6500 | + yy333:
|
| 6501 | + ++p;
|
| 6502 | + yych = *p;
|
| 6503 | + if (yych <= 0x7F)
|
| 6504 | + goto yy231;
|
| 6505 | + if (yych <= 0x8F)
|
| 6506 | + goto yy329;
|
| 6507 | + goto yy231;
|
| 6508 | + yy334:
|
| 6509 | + ++p;
|
| 6510 | + yych = *p;
|
| 6511 | + if (yych <= 0xE0) {
|
| 6512 | + if (yych <= '>') {
|
| 6513 | + if (yych <= 0x00)
|
| 6514 | + goto yy231;
|
| 6515 | + if (yych <= '=')
|
| 6516 | + goto yy322;
|
| 6517 | + goto yy252;
|
| 6518 | + } else {
|
| 6519 | + if (yych <= 0x7F)
|
| 6520 | + goto yy322;
|
| 6521 | + if (yych <= 0xC1)
|
| 6522 | + goto yy231;
|
| 6523 | + if (yych <= 0xDF)
|
| 6524 | + goto yy327;
|
| 6525 | + goto yy328;
|
| 6526 | + }
|
| 6527 | + } else {
|
| 6528 | + if (yych <= 0xEF) {
|
| 6529 | + if (yych == 0xED)
|
| 6530 | + goto yy330;
|
| 6531 | + goto yy329;
|
| 6532 | + } else {
|
| 6533 | + if (yych <= 0xF0)
|
| 6534 | + goto yy331;
|
| 6535 | + if (yych <= 0xF3)
|
| 6536 | + goto yy332;
|
| 6537 | + if (yych <= 0xF4)
|
| 6538 | + goto yy333;
|
| 6539 | + goto yy231;
|
| 6540 | + }
|
| 6541 | + }
|
| 6542 | + }
|
| 6543 | +}
|
| 6544 | +
|
| 6545 | +// Try to match an HTML block tag start line, returning
|
| 6546 | +// an integer code for the type of block (1-6, matching the spec).
|
| 6547 | +// #7 is handled by a separate function, below.
|
| 6548 | +bufsize_t _scan_html_block_start(const unsigned char *p) {
|
| 6549 | + const unsigned char *marker = NULL;
|
| 6550 | +
|
| 6551 | + {
|
| 6552 | + unsigned char yych;
|
| 6553 | + yych = *p;
|
| 6554 | + if (yych == '<')
|
| 6555 | + goto yy339;
|
| 6556 | + ++p;
|
| 6557 | + yy338 : { return 0; }
|
| 6558 | + yy339:
|
| 6559 | + yych = *(marker = ++p);
|
| 6560 | + switch (yych) {
|
| 6561 | + case '!':
|
| 6562 | + goto yy340;
|
| 6563 | + case '/':
|
| 6564 | + goto yy342;
|
| 6565 | + case '?':
|
| 6566 | + goto yy343;
|
| 6567 | + case 'A':
|
| 6568 | + case 'a':
|
| 6569 | + goto yy345;
|
| 6570 | + case 'B':
|
| 6571 | + case 'b':
|
| 6572 | + goto yy346;
|
| 6573 | + case 'C':
|
| 6574 | + case 'c':
|
| 6575 | + goto yy347;
|
| 6576 | + case 'D':
|
| 6577 | + case 'd':
|
| 6578 | + goto yy348;
|
| 6579 | + case 'F':
|
| 6580 | + case 'f':
|
| 6581 | + goto yy349;
|
| 6582 | + case 'H':
|
| 6583 | + case 'h':
|
| 6584 | + goto yy350;
|
| 6585 | + case 'I':
|
| 6586 | + case 'i':
|
| 6587 | + goto yy351;
|
| 6588 | + case 'L':
|
| 6589 | + case 'l':
|
| 6590 | + goto yy352;
|
| 6591 | + case 'M':
|
| 6592 | + case 'm':
|
| 6593 | + goto yy353;
|
| 6594 | + case 'N':
|
| 6595 | + case 'n':
|
| 6596 | + goto yy354;
|
| 6597 | + case 'O':
|
| 6598 | + case 'o':
|
| 6599 | + goto yy355;
|
| 6600 | + case 'P':
|
| 6601 | + case 'p':
|
| 6602 | + goto yy356;
|
| 6603 | + case 'S':
|
| 6604 | + case 's':
|
| 6605 | + goto yy357;
|
| 6606 | + case 'T':
|
| 6607 | + case 't':
|
| 6608 | + goto yy358;
|
| 6609 | + case 'U':
|
| 6610 | + case 'u':
|
| 6611 | + goto yy359;
|
| 6612 | + default:
|
| 6613 | + goto yy338;
|
| 6614 | + }
|
| 6615 | + yy340:
|
| 6616 | + yych = *++p;
|
| 6617 | + if (yych <= '@') {
|
| 6618 | + if (yych == '-')
|
| 6619 | + goto yy360;
|
| 6620 | + } else {
|
| 6621 | + if (yych <= 'Z')
|
| 6622 | + goto yy361;
|
| 6623 | + if (yych <= '[')
|
| 6624 | + goto yy363;
|
| 6625 | + }
|
| 6626 | + yy341:
|
| 6627 | + p = marker;
|
| 6628 | + goto yy338;
|
| 6629 | + yy342:
|
| 6630 | + yych = *++p;
|
| 6631 | + switch (yych) {
|
| 6632 | + case 'A':
|
| 6633 | + case 'a':
|
| 6634 | + goto yy345;
|
| 6635 | + case 'B':
|
| 6636 | + case 'b':
|
| 6637 | + goto yy346;
|
| 6638 | + case 'C':
|
| 6639 | + case 'c':
|
| 6640 | + goto yy347;
|
| 6641 | + case 'D':
|
| 6642 | + case 'd':
|
| 6643 | + goto yy348;
|
| 6644 | + case 'F':
|
| 6645 | + case 'f':
|
| 6646 | + goto yy349;
|
| 6647 | + case 'H':
|
| 6648 | + case 'h':
|
| 6649 | + goto yy350;
|
| 6650 | + case 'I':
|
| 6651 | + case 'i':
|
| 6652 | + goto yy351;
|
| 6653 | + case 'L':
|
| 6654 | + case 'l':
|
| 6655 | + goto yy352;
|
| 6656 | + case 'M':
|
| 6657 | + case 'm':
|
| 6658 | + goto yy353;
|
| 6659 | + case 'N':
|
| 6660 | + case 'n':
|
| 6661 | + goto yy354;
|
| 6662 | + case 'O':
|
| 6663 | + case 'o':
|
| 6664 | + goto yy355;
|
| 6665 | + case 'P':
|
| 6666 | + case 'p':
|
| 6667 | + goto yy364;
|
| 6668 | + case 'S':
|
| 6669 | + case 's':
|
| 6670 | + goto yy365;
|
| 6671 | + case 'T':
|
| 6672 | + case 't':
|
| 6673 | + goto yy358;
|
| 6674 | + case 'U':
|
| 6675 | + case 'u':
|
| 6676 | + goto yy359;
|
| 6677 | + default:
|
| 6678 | + goto yy341;
|
| 6679 | + }
|
| 6680 | + yy343:
|
| 6681 | + ++p;
|
| 6682 | + { return 3; }
|
| 6683 | + yy345:
|
| 6684 | + yych = *++p;
|
| 6685 | + if (yych <= 'S') {
|
| 6686 | + if (yych <= 'D') {
|
| 6687 | + if (yych <= 'C')
|
| 6688 | + goto yy341;
|
| 6689 | + goto yy366;
|
| 6690 | + } else {
|
| 6691 | + if (yych <= 'Q')
|
| 6692 | + goto yy341;
|
| 6693 | + if (yych <= 'R')
|
| 6694 | + goto yy367;
|
| 6695 | + goto yy368;
|
| 6696 | + }
|
| 6697 | + } else {
|
| 6698 | + if (yych <= 'q') {
|
| 6699 | + if (yych == 'd')
|
| 6700 | + goto yy366;
|
| 6701 | + goto yy341;
|
| 6702 | + } else {
|
| 6703 | + if (yych <= 'r')
|
| 6704 | + goto yy367;
|
| 6705 | + if (yych <= 's')
|
| 6706 | + goto yy368;
|
| 6707 | + goto yy341;
|
| 6708 | + }
|
| 6709 | + }
|
| 6710 | + yy346:
|
| 6711 | + yych = *++p;
|
| 6712 | + if (yych <= 'O') {
|
| 6713 | + if (yych <= 'K') {
|
| 6714 | + if (yych == 'A')
|
| 6715 | + goto yy369;
|
| 6716 | + goto yy341;
|
| 6717 | + } else {
|
| 6718 | + if (yych <= 'L')
|
| 6719 | + goto yy370;
|
| 6720 | + if (yych <= 'N')
|
| 6721 | + goto yy341;
|
| 6722 | + goto yy371;
|
| 6723 | + }
|
| 6724 | + } else {
|
| 6725 | + if (yych <= 'k') {
|
| 6726 | + if (yych == 'a')
|
| 6727 | + goto yy369;
|
| 6728 | + goto yy341;
|
| 6729 | + } else {
|
| 6730 | + if (yych <= 'l')
|
| 6731 | + goto yy370;
|
| 6732 | + if (yych == 'o')
|
| 6733 | + goto yy371;
|
| 6734 | + goto yy341;
|
| 6735 | + }
|
| 6736 | + }
|
| 6737 | + yy347:
|
| 6738 | + yych = *++p;
|
| 6739 | + if (yych <= 'O') {
|
| 6740 | + if (yych <= 'D') {
|
| 6741 | + if (yych == 'A')
|
| 6742 | + goto yy372;
|
| 6743 | + goto yy341;
|
| 6744 | + } else {
|
| 6745 | + if (yych <= 'E')
|
| 6746 | + goto yy373;
|
| 6747 | + if (yych <= 'N')
|
| 6748 | + goto yy341;
|
| 6749 | + goto yy374;
|
| 6750 | + }
|
| 6751 | + } else {
|
| 6752 | + if (yych <= 'd') {
|
| 6753 | + if (yych == 'a')
|
| 6754 | + goto yy372;
|
| 6755 | + goto yy341;
|
| 6756 | + } else {
|
| 6757 | + if (yych <= 'e')
|
| 6758 | + goto yy373;
|
| 6759 | + if (yych == 'o')
|
| 6760 | + goto yy374;
|
| 6761 | + goto yy341;
|
| 6762 | + }
|
| 6763 | + }
|
| 6764 | + yy348:
|
| 6765 | + yych = *++p;
|
| 6766 | + switch (yych) {
|
| 6767 | + case 'D':
|
| 6768 | + case 'L':
|
| 6769 | + case 'T':
|
| 6770 | + case 'd':
|
| 6771 | + case 'l':
|
| 6772 | + case 't':
|
| 6773 | + goto yy375;
|
| 6774 | + case 'E':
|
| 6775 | + case 'e':
|
| 6776 | + goto yy376;
|
| 6777 | + case 'I':
|
| 6778 | + case 'i':
|
| 6779 | + goto yy377;
|
| 6780 | + default:
|
| 6781 | + goto yy341;
|
| 6782 | + }
|
| 6783 | + yy349:
|
| 6784 | + yych = *++p;
|
| 6785 | + if (yych <= 'R') {
|
| 6786 | + if (yych <= 'N') {
|
| 6787 | + if (yych == 'I')
|
| 6788 | + goto yy378;
|
| 6789 | + goto yy341;
|
| 6790 | + } else {
|
| 6791 | + if (yych <= 'O')
|
| 6792 | + goto yy379;
|
| 6793 | + if (yych <= 'Q')
|
| 6794 | + goto yy341;
|
| 6795 | + goto yy380;
|
| 6796 | + }
|
| 6797 | + } else {
|
| 6798 | + if (yych <= 'n') {
|
| 6799 | + if (yych == 'i')
|
| 6800 | + goto yy378;
|
| 6801 | + goto yy341;
|
| 6802 | + } else {
|
| 6803 | + if (yych <= 'o')
|
| 6804 | + goto yy379;
|
| 6805 | + if (yych == 'r')
|
| 6806 | + goto yy380;
|
| 6807 | + goto yy341;
|
| 6808 | + }
|
| 6809 | + }
|
| 6810 | + yy350:
|
| 6811 | + yych = *++p;
|
| 6812 | + if (yych <= 'S') {
|
| 6813 | + if (yych <= 'D') {
|
| 6814 | + if (yych <= '0')
|
| 6815 | + goto yy341;
|
| 6816 | + if (yych <= '6')
|
| 6817 | + goto yy375;
|
| 6818 | + goto yy341;
|
| 6819 | + } else {
|
| 6820 | + if (yych <= 'E')
|
| 6821 | + goto yy381;
|
| 6822 | + if (yych == 'R')
|
| 6823 | + goto yy375;
|
| 6824 | + goto yy341;
|
| 6825 | + }
|
| 6826 | + } else {
|
| 6827 | + if (yych <= 'q') {
|
| 6828 | + if (yych <= 'T')
|
| 6829 | + goto yy382;
|
| 6830 | + if (yych == 'e')
|
| 6831 | + goto yy381;
|
| 6832 | + goto yy341;
|
| 6833 | + } else {
|
| 6834 | + if (yych <= 'r')
|
| 6835 | + goto yy375;
|
| 6836 | + if (yych == 't')
|
| 6837 | + goto yy382;
|
| 6838 | + goto yy341;
|
| 6839 | + }
|
| 6840 | + }
|
| 6841 | + yy351:
|
| 6842 | + yych = *++p;
|
| 6843 | + if (yych == 'F')
|
| 6844 | + goto yy383;
|
| 6845 | + if (yych == 'f')
|
| 6846 | + goto yy383;
|
| 6847 | + goto yy341;
|
| 6848 | + yy352:
|
| 6849 | + yych = *++p;
|
| 6850 | + if (yych <= 'I') {
|
| 6851 | + if (yych == 'E')
|
| 6852 | + goto yy384;
|
| 6853 | + if (yych <= 'H')
|
| 6854 | + goto yy341;
|
| 6855 | + goto yy385;
|
| 6856 | + } else {
|
| 6857 | + if (yych <= 'e') {
|
| 6858 | + if (yych <= 'd')
|
| 6859 | + goto yy341;
|
| 6860 | + goto yy384;
|
| 6861 | + } else {
|
| 6862 | + if (yych == 'i')
|
| 6863 | + goto yy385;
|
| 6864 | + goto yy341;
|
| 6865 | + }
|
| 6866 | + }
|
| 6867 | + yy353:
|
| 6868 | + yych = *++p;
|
| 6869 | + if (yych <= 'E') {
|
| 6870 | + if (yych == 'A')
|
| 6871 | + goto yy386;
|
| 6872 | + if (yych <= 'D')
|
| 6873 | + goto yy341;
|
| 6874 | + goto yy387;
|
| 6875 | + } else {
|
| 6876 | + if (yych <= 'a') {
|
| 6877 | + if (yych <= '`')
|
| 6878 | + goto yy341;
|
| 6879 | + goto yy386;
|
| 6880 | + } else {
|
| 6881 | + if (yych == 'e')
|
| 6882 | + goto yy387;
|
| 6883 | + goto yy341;
|
| 6884 | + }
|
| 6885 | + }
|
| 6886 | + yy354:
|
| 6887 | + yych = *++p;
|
| 6888 | + if (yych <= 'O') {
|
| 6889 | + if (yych == 'A')
|
| 6890 | + goto yy388;
|
| 6891 | + if (yych <= 'N')
|
| 6892 | + goto yy341;
|
| 6893 | + goto yy389;
|
| 6894 | + } else {
|
| 6895 | + if (yych <= 'a') {
|
| 6896 | + if (yych <= '`')
|
| 6897 | + goto yy341;
|
| 6898 | + goto yy388;
|
| 6899 | + } else {
|
| 6900 | + if (yych == 'o')
|
| 6901 | + goto yy389;
|
| 6902 | + goto yy341;
|
| 6903 | + }
|
| 6904 | + }
|
| 6905 | + yy355:
|
| 6906 | + yych = *++p;
|
| 6907 | + if (yych <= 'P') {
|
| 6908 | + if (yych == 'L')
|
| 6909 | + goto yy375;
|
| 6910 | + if (yych <= 'O')
|
| 6911 | + goto yy341;
|
| 6912 | + goto yy390;
|
| 6913 | + } else {
|
| 6914 | + if (yych <= 'l') {
|
| 6915 | + if (yych <= 'k')
|
| 6916 | + goto yy341;
|
| 6917 | + goto yy375;
|
| 6918 | + } else {
|
| 6919 | + if (yych == 'p')
|
| 6920 | + goto yy390;
|
| 6921 | + goto yy341;
|
| 6922 | + }
|
| 6923 | + }
|
| 6924 | + yy356:
|
| 6925 | + yych = *++p;
|
| 6926 | + if (yych <= '>') {
|
| 6927 | + if (yych <= ' ') {
|
| 6928 | + if (yych <= 0x08)
|
| 6929 | + goto yy341;
|
| 6930 | + if (yych <= '\r')
|
| 6931 | + goto yy391;
|
| 6932 | + if (yych <= 0x1F)
|
| 6933 | + goto yy341;
|
| 6934 | + goto yy391;
|
| 6935 | + } else {
|
| 6936 | + if (yych == '/')
|
| 6937 | + goto yy393;
|
| 6938 | + if (yych <= '=')
|
| 6939 | + goto yy341;
|
| 6940 | + goto yy391;
|
| 6941 | + }
|
| 6942 | + } else {
|
| 6943 | + if (yych <= 'R') {
|
| 6944 | + if (yych == 'A')
|
| 6945 | + goto yy394;
|
| 6946 | + if (yych <= 'Q')
|
| 6947 | + goto yy341;
|
| 6948 | + goto yy395;
|
| 6949 | + } else {
|
| 6950 | + if (yych <= 'a') {
|
| 6951 | + if (yych <= '`')
|
| 6952 | + goto yy341;
|
| 6953 | + goto yy394;
|
| 6954 | + } else {
|
| 6955 | + if (yych == 'r')
|
| 6956 | + goto yy395;
|
| 6957 | + goto yy341;
|
| 6958 | + }
|
| 6959 | + }
|
| 6960 | + }
|
| 6961 | + yy357:
|
| 6962 | + yych = *++p;
|
| 6963 | + switch (yych) {
|
| 6964 | + case 'C':
|
| 6965 | + case 'c':
|
| 6966 | + goto yy396;
|
| 6967 | + case 'E':
|
| 6968 | + case 'e':
|
| 6969 | + goto yy397;
|
| 6970 | + case 'O':
|
| 6971 | + case 'o':
|
| 6972 | + goto yy398;
|
| 6973 | + case 'T':
|
| 6974 | + case 't':
|
| 6975 | + goto yy399;
|
| 6976 | + case 'U':
|
| 6977 | + case 'u':
|
| 6978 | + goto yy400;
|
| 6979 | + default:
|
| 6980 | + goto yy341;
|
| 6981 | + }
|
| 6982 | + yy358:
|
| 6983 | + yych = *++p;
|
| 6984 | + switch (yych) {
|
| 6985 | + case 'A':
|
| 6986 | + case 'a':
|
| 6987 | + goto yy401;
|
| 6988 | + case 'B':
|
| 6989 | + case 'b':
|
| 6990 | + goto yy402;
|
| 6991 | + case 'D':
|
| 6992 | + case 'd':
|
| 6993 | + goto yy375;
|
| 6994 | + case 'F':
|
| 6995 | + case 'f':
|
| 6996 | + goto yy403;
|
| 6997 | + case 'H':
|
| 6998 | + case 'h':
|
| 6999 | + goto yy404;
|
| 7000 | + case 'I':
|
| 7001 | + case 'i':
|
| 7002 | + goto yy405;
|
| 7003 | + case 'R':
|
| 7004 | + case 'r':
|
| 7005 | + goto yy406;
|
| 7006 | + default:
|
| 7007 | + goto yy341;
|
| 7008 | + }
|
| 7009 | + yy359:
|
| 7010 | + yych = *++p;
|
| 7011 | + if (yych == 'L')
|
| 7012 | + goto yy375;
|
| 7013 | + if (yych == 'l')
|
| 7014 | + goto yy375;
|
| 7015 | + goto yy341;
|
| 7016 | + yy360:
|
| 7017 | + yych = *++p;
|
| 7018 | + if (yych == '-')
|
| 7019 | + goto yy407;
|
| 7020 | + goto yy341;
|
| 7021 | + yy361:
|
| 7022 | + ++p;
|
| 7023 | + { return 4; }
|
| 7024 | + yy363:
|
| 7025 | + yych = *++p;
|
| 7026 | + if (yych == 'C')
|
| 7027 | + goto yy409;
|
| 7028 | + if (yych == 'c')
|
| 7029 | + goto yy409;
|
| 7030 | + goto yy341;
|
| 7031 | + yy364:
|
| 7032 | + yych = *++p;
|
| 7033 | + if (yych <= '/') {
|
| 7034 | + if (yych <= 0x1F) {
|
| 7035 | + if (yych <= 0x08)
|
| 7036 | + goto yy341;
|
| 7037 | + if (yych <= '\r')
|
| 7038 | + goto yy391;
|
| 7039 | + goto yy341;
|
| 7040 | + } else {
|
| 7041 | + if (yych <= ' ')
|
| 7042 | + goto yy391;
|
| 7043 | + if (yych <= '.')
|
| 7044 | + goto yy341;
|
| 7045 | + goto yy393;
|
| 7046 | + }
|
| 7047 | + } else {
|
| 7048 | + if (yych <= '@') {
|
| 7049 | + if (yych == '>')
|
| 7050 | + goto yy391;
|
| 7051 | + goto yy341;
|
| 7052 | + } else {
|
| 7053 | + if (yych <= 'A')
|
| 7054 | + goto yy394;
|
| 7055 | + if (yych == 'a')
|
| 7056 | + goto yy394;
|
| 7057 | + goto yy341;
|
| 7058 | + }
|
| 7059 | + }
|
| 7060 | + yy365:
|
| 7061 | + yych = *++p;
|
| 7062 | + if (yych <= 'U') {
|
| 7063 | + if (yych <= 'N') {
|
| 7064 | + if (yych == 'E')
|
| 7065 | + goto yy397;
|
| 7066 | + goto yy341;
|
| 7067 | + } else {
|
| 7068 | + if (yych <= 'O')
|
| 7069 | + goto yy398;
|
| 7070 | + if (yych <= 'T')
|
| 7071 | + goto yy341;
|
| 7072 | + goto yy400;
|
| 7073 | + }
|
| 7074 | + } else {
|
| 7075 | + if (yych <= 'n') {
|
| 7076 | + if (yych == 'e')
|
| 7077 | + goto yy397;
|
| 7078 | + goto yy341;
|
| 7079 | + } else {
|
| 7080 | + if (yych <= 'o')
|
| 7081 | + goto yy398;
|
| 7082 | + if (yych == 'u')
|
| 7083 | + goto yy400;
|
| 7084 | + goto yy341;
|
| 7085 | + }
|
| 7086 | + }
|
| 7087 | + yy366:
|
| 7088 | + yych = *++p;
|
| 7089 | + if (yych == 'D')
|
| 7090 | + goto yy410;
|
| 7091 | + if (yych == 'd')
|
| 7092 | + goto yy410;
|
| 7093 | + goto yy341;
|
| 7094 | + yy367:
|
| 7095 | + yych = *++p;
|
| 7096 | + if (yych == 'T')
|
| 7097 | + goto yy411;
|
| 7098 | + if (yych == 't')
|
| 7099 | + goto yy411;
|
| 7100 | + goto yy341;
|
| 7101 | + yy368:
|
| 7102 | + yych = *++p;
|
| 7103 | + if (yych == 'I')
|
| 7104 | + goto yy412;
|
| 7105 | + if (yych == 'i')
|
| 7106 | + goto yy412;
|
| 7107 | + goto yy341;
|
| 7108 | + yy369:
|
| 7109 | + yych = *++p;
|
| 7110 | + if (yych == 'S')
|
| 7111 | + goto yy413;
|
| 7112 | + if (yych == 's')
|
| 7113 | + goto yy413;
|
| 7114 | + goto yy341;
|
| 7115 | + yy370:
|
| 7116 | + yych = *++p;
|
| 7117 | + if (yych == 'O')
|
| 7118 | + goto yy414;
|
| 7119 | + if (yych == 'o')
|
| 7120 | + goto yy414;
|
| 7121 | + goto yy341;
|
| 7122 | + yy371:
|
| 7123 | + yych = *++p;
|
| 7124 | + if (yych == 'D')
|
| 7125 | + goto yy415;
|
| 7126 | + if (yych == 'd')
|
| 7127 | + goto yy415;
|
| 7128 | + goto yy341;
|
| 7129 | + yy372:
|
| 7130 | + yych = *++p;
|
| 7131 | + if (yych == 'P')
|
| 7132 | + goto yy416;
|
| 7133 | + if (yych == 'p')
|
| 7134 | + goto yy416;
|
| 7135 | + goto yy341;
|
| 7136 | + yy373:
|
| 7137 | + yych = *++p;
|
| 7138 | + if (yych == 'N')
|
| 7139 | + goto yy417;
|
| 7140 | + if (yych == 'n')
|
| 7141 | + goto yy417;
|
| 7142 | + goto yy341;
|
| 7143 | + yy374:
|
| 7144 | + yych = *++p;
|
| 7145 | + if (yych == 'L')
|
| 7146 | + goto yy418;
|
| 7147 | + if (yych == 'l')
|
| 7148 | + goto yy418;
|
| 7149 | + goto yy341;
|
| 7150 | + yy375:
|
| 7151 | + yych = *++p;
|
| 7152 | + if (yych <= ' ') {
|
| 7153 | + if (yych <= 0x08)
|
| 7154 | + goto yy341;
|
| 7155 | + if (yych <= '\r')
|
| 7156 | + goto yy391;
|
| 7157 | + if (yych <= 0x1F)
|
| 7158 | + goto yy341;
|
| 7159 | + goto yy391;
|
| 7160 | + } else {
|
| 7161 | + if (yych <= '/') {
|
| 7162 | + if (yych <= '.')
|
| 7163 | + goto yy341;
|
| 7164 | + goto yy393;
|
| 7165 | + } else {
|
| 7166 | + if (yych == '>')
|
| 7167 | + goto yy391;
|
| 7168 | + goto yy341;
|
| 7169 | + }
|
| 7170 | + }
|
| 7171 | + yy376:
|
| 7172 | + yych = *++p;
|
| 7173 | + if (yych == 'T')
|
| 7174 | + goto yy419;
|
| 7175 | + if (yych == 't')
|
| 7176 | + goto yy419;
|
| 7177 | + goto yy341;
|
| 7178 | + yy377:
|
| 7179 | + yych = *++p;
|
| 7180 | + if (yych <= 'V') {
|
| 7181 | + if (yych <= 'Q') {
|
| 7182 | + if (yych == 'A')
|
| 7183 | + goto yy420;
|
| 7184 | + goto yy341;
|
| 7185 | + } else {
|
| 7186 | + if (yych <= 'R')
|
| 7187 | + goto yy375;
|
| 7188 | + if (yych <= 'U')
|
| 7189 | + goto yy341;
|
| 7190 | + goto yy375;
|
| 7191 | + }
|
| 7192 | + } else {
|
| 7193 | + if (yych <= 'q') {
|
| 7194 | + if (yych == 'a')
|
| 7195 | + goto yy420;
|
| 7196 | + goto yy341;
|
| 7197 | + } else {
|
| 7198 | + if (yych <= 'r')
|
| 7199 | + goto yy375;
|
| 7200 | + if (yych == 'v')
|
| 7201 | + goto yy375;
|
| 7202 | + goto yy341;
|
| 7203 | + }
|
| 7204 | + }
|
| 7205 | + yy378:
|
| 7206 | + yych = *++p;
|
| 7207 | + if (yych <= 'G') {
|
| 7208 | + if (yych == 'E')
|
| 7209 | + goto yy421;
|
| 7210 | + if (yych <= 'F')
|
| 7211 | + goto yy341;
|
| 7212 | + goto yy422;
|
| 7213 | + } else {
|
| 7214 | + if (yych <= 'e') {
|
| 7215 | + if (yych <= 'd')
|
| 7216 | + goto yy341;
|
| 7217 | + goto yy421;
|
| 7218 | + } else {
|
| 7219 | + if (yych == 'g')
|
| 7220 | + goto yy422;
|
| 7221 | + goto yy341;
|
| 7222 | + }
|
| 7223 | + }
|
| 7224 | + yy379:
|
| 7225 | + yych = *++p;
|
| 7226 | + if (yych <= 'R') {
|
| 7227 | + if (yych == 'O')
|
| 7228 | + goto yy417;
|
| 7229 | + if (yych <= 'Q')
|
| 7230 | + goto yy341;
|
| 7231 | + goto yy423;
|
| 7232 | + } else {
|
| 7233 | + if (yych <= 'o') {
|
| 7234 | + if (yych <= 'n')
|
| 7235 | + goto yy341;
|
| 7236 | + goto yy417;
|
| 7237 | + } else {
|
| 7238 | + if (yych == 'r')
|
| 7239 | + goto yy423;
|
| 7240 | + goto yy341;
|
| 7241 | + }
|
| 7242 | + }
|
| 7243 | + yy380:
|
| 7244 | + yych = *++p;
|
| 7245 | + if (yych == 'A')
|
| 7246 | + goto yy424;
|
| 7247 | + if (yych == 'a')
|
| 7248 | + goto yy424;
|
| 7249 | + goto yy341;
|
| 7250 | + yy381:
|
| 7251 | + yych = *++p;
|
| 7252 | + if (yych == 'A')
|
| 7253 | + goto yy425;
|
| 7254 | + if (yych == 'a')
|
| 7255 | + goto yy425;
|
| 7256 | + goto yy341;
|
| 7257 | + yy382:
|
| 7258 | + yych = *++p;
|
| 7259 | + if (yych == 'M')
|
| 7260 | + goto yy359;
|
| 7261 | + if (yych == 'm')
|
| 7262 | + goto yy359;
|
| 7263 | + goto yy341;
|
| 7264 | + yy383:
|
| 7265 | + yych = *++p;
|
| 7266 | + if (yych == 'R')
|
| 7267 | + goto yy426;
|
| 7268 | + if (yych == 'r')
|
| 7269 | + goto yy426;
|
| 7270 | + goto yy341;
|
| 7271 | + yy384:
|
| 7272 | + yych = *++p;
|
| 7273 | + if (yych == 'G')
|
| 7274 | + goto yy427;
|
| 7275 | + if (yych == 'g')
|
| 7276 | + goto yy427;
|
| 7277 | + goto yy341;
|
| 7278 | + yy385:
|
| 7279 | + yych = *++p;
|
| 7280 | + if (yych <= '/') {
|
| 7281 | + if (yych <= 0x1F) {
|
| 7282 | + if (yych <= 0x08)
|
| 7283 | + goto yy341;
|
| 7284 | + if (yych <= '\r')
|
| 7285 | + goto yy391;
|
| 7286 | + goto yy341;
|
| 7287 | + } else {
|
| 7288 | + if (yych <= ' ')
|
| 7289 | + goto yy391;
|
| 7290 | + if (yych <= '.')
|
| 7291 | + goto yy341;
|
| 7292 | + goto yy393;
|
| 7293 | + }
|
| 7294 | + } else {
|
| 7295 | + if (yych <= 'M') {
|
| 7296 | + if (yych == '>')
|
| 7297 | + goto yy391;
|
| 7298 | + goto yy341;
|
| 7299 | + } else {
|
| 7300 | + if (yych <= 'N')
|
| 7301 | + goto yy428;
|
| 7302 | + if (yych == 'n')
|
| 7303 | + goto yy428;
|
| 7304 | + goto yy341;
|
| 7305 | + }
|
| 7306 | + }
|
| 7307 | + yy386:
|
| 7308 | + yych = *++p;
|
| 7309 | + if (yych == 'I')
|
| 7310 | + goto yy429;
|
| 7311 | + if (yych == 'i')
|
| 7312 | + goto yy429;
|
| 7313 | + goto yy341;
|
| 7314 | + yy387:
|
| 7315 | + yych = *++p;
|
| 7316 | + if (yych <= 'T') {
|
| 7317 | + if (yych == 'N')
|
| 7318 | + goto yy430;
|
| 7319 | + if (yych <= 'S')
|
| 7320 | + goto yy341;
|
| 7321 | + goto yy431;
|
| 7322 | + } else {
|
| 7323 | + if (yych <= 'n') {
|
| 7324 | + if (yych <= 'm')
|
| 7325 | + goto yy341;
|
| 7326 | + goto yy430;
|
| 7327 | + } else {
|
| 7328 | + if (yych == 't')
|
| 7329 | + goto yy431;
|
| 7330 | + goto yy341;
|
| 7331 | + }
|
| 7332 | + }
|
| 7333 | + yy388:
|
| 7334 | + yych = *++p;
|
| 7335 | + if (yych == 'V')
|
| 7336 | + goto yy375;
|
| 7337 | + if (yych == 'v')
|
| 7338 | + goto yy375;
|
| 7339 | + goto yy341;
|
| 7340 | + yy389:
|
| 7341 | + yych = *++p;
|
| 7342 | + if (yych == 'F')
|
| 7343 | + goto yy432;
|
| 7344 | + if (yych == 'f')
|
| 7345 | + goto yy432;
|
| 7346 | + goto yy341;
|
| 7347 | + yy390:
|
| 7348 | + yych = *++p;
|
| 7349 | + if (yych == 'T')
|
| 7350 | + goto yy433;
|
| 7351 | + if (yych == 't')
|
| 7352 | + goto yy433;
|
| 7353 | + goto yy341;
|
| 7354 | + yy391:
|
| 7355 | + ++p;
|
| 7356 | + { return 6; }
|
| 7357 | + yy393:
|
| 7358 | + yych = *++p;
|
| 7359 | + if (yych == '>')
|
| 7360 | + goto yy391;
|
| 7361 | + goto yy341;
|
| 7362 | + yy394:
|
| 7363 | + yych = *++p;
|
| 7364 | + if (yych == 'R')
|
| 7365 | + goto yy434;
|
| 7366 | + if (yych == 'r')
|
| 7367 | + goto yy434;
|
| 7368 | + goto yy341;
|
| 7369 | + yy395:
|
| 7370 | + yych = *++p;
|
| 7371 | + if (yych == 'E')
|
| 7372 | + goto yy435;
|
| 7373 | + if (yych == 'e')
|
| 7374 | + goto yy435;
|
| 7375 | + goto yy341;
|
| 7376 | + yy396:
|
| 7377 | + yych = *++p;
|
| 7378 | + if (yych == 'R')
|
| 7379 | + goto yy436;
|
| 7380 | + if (yych == 'r')
|
| 7381 | + goto yy436;
|
| 7382 | + goto yy341;
|
| 7383 | + yy397:
|
| 7384 | + yych = *++p;
|
| 7385 | + if (yych == 'C')
|
| 7386 | + goto yy416;
|
| 7387 | + if (yych == 'c')
|
| 7388 | + goto yy416;
|
| 7389 | + goto yy341;
|
| 7390 | + yy398:
|
| 7391 | + yych = *++p;
|
| 7392 | + if (yych == 'U')
|
| 7393 | + goto yy437;
|
| 7394 | + if (yych == 'u')
|
| 7395 | + goto yy437;
|
| 7396 | + goto yy341;
|
| 7397 | + yy399:
|
| 7398 | + yych = *++p;
|
| 7399 | + if (yych == 'Y')
|
| 7400 | + goto yy438;
|
| 7401 | + if (yych == 'y')
|
| 7402 | + goto yy438;
|
| 7403 | + goto yy341;
|
| 7404 | + yy400:
|
| 7405 | + yych = *++p;
|
| 7406 | + if (yych == 'M')
|
| 7407 | + goto yy439;
|
| 7408 | + if (yych == 'm')
|
| 7409 | + goto yy439;
|
| 7410 | + goto yy341;
|
| 7411 | + yy401:
|
| 7412 | + yych = *++p;
|
| 7413 | + if (yych == 'B')
|
| 7414 | + goto yy440;
|
| 7415 | + if (yych == 'b')
|
| 7416 | + goto yy440;
|
| 7417 | + goto yy341;
|
| 7418 | + yy402:
|
| 7419 | + yych = *++p;
|
| 7420 | + if (yych == 'O')
|
| 7421 | + goto yy371;
|
| 7422 | + if (yych == 'o')
|
| 7423 | + goto yy371;
|
| 7424 | + goto yy341;
|
| 7425 | + yy403:
|
| 7426 | + yych = *++p;
|
| 7427 | + if (yych == 'O')
|
| 7428 | + goto yy441;
|
| 7429 | + if (yych == 'o')
|
| 7430 | + goto yy441;
|
| 7431 | + goto yy341;
|
| 7432 | + yy404:
|
| 7433 | + yych = *++p;
|
| 7434 | + if (yych <= '/') {
|
| 7435 | + if (yych <= 0x1F) {
|
| 7436 | + if (yych <= 0x08)
|
| 7437 | + goto yy341;
|
| 7438 | + if (yych <= '\r')
|
| 7439 | + goto yy391;
|
| 7440 | + goto yy341;
|
| 7441 | + } else {
|
| 7442 | + if (yych <= ' ')
|
| 7443 | + goto yy391;
|
| 7444 | + if (yych <= '.')
|
| 7445 | + goto yy341;
|
| 7446 | + goto yy393;
|
| 7447 | + }
|
| 7448 | + } else {
|
| 7449 | + if (yych <= 'D') {
|
| 7450 | + if (yych == '>')
|
| 7451 | + goto yy391;
|
| 7452 | + goto yy341;
|
| 7453 | + } else {
|
| 7454 | + if (yych <= 'E')
|
| 7455 | + goto yy442;
|
| 7456 | + if (yych == 'e')
|
| 7457 | + goto yy442;
|
| 7458 | + goto yy341;
|
| 7459 | + }
|
| 7460 | + }
|
| 7461 | + yy405:
|
| 7462 | + yych = *++p;
|
| 7463 | + if (yych == 'T')
|
| 7464 | + goto yy440;
|
| 7465 | + if (yych == 't')
|
| 7466 | + goto yy440;
|
| 7467 | + goto yy341;
|
| 7468 | + yy406:
|
| 7469 | + yych = *++p;
|
| 7470 | + if (yych <= '/') {
|
| 7471 | + if (yych <= 0x1F) {
|
| 7472 | + if (yych <= 0x08)
|
| 7473 | + goto yy341;
|
| 7474 | + if (yych <= '\r')
|
| 7475 | + goto yy391;
|
| 7476 | + goto yy341;
|
| 7477 | + } else {
|
| 7478 | + if (yych <= ' ')
|
| 7479 | + goto yy391;
|
| 7480 | + if (yych <= '.')
|
| 7481 | + goto yy341;
|
| 7482 | + goto yy393;
|
| 7483 | + }
|
| 7484 | + } else {
|
| 7485 | + if (yych <= '@') {
|
| 7486 | + if (yych == '>')
|
| 7487 | + goto yy391;
|
| 7488 | + goto yy341;
|
| 7489 | + } else {
|
| 7490 | + if (yych <= 'A')
|
| 7491 | + goto yy443;
|
| 7492 | + if (yych == 'a')
|
| 7493 | + goto yy443;
|
| 7494 | + goto yy341;
|
| 7495 | + }
|
| 7496 | + }
|
| 7497 | + yy407:
|
| 7498 | + ++p;
|
| 7499 | + { return 2; }
|
| 7500 | + yy409:
|
| 7501 | + yych = *++p;
|
| 7502 | + if (yych == 'D')
|
| 7503 | + goto yy444;
|
| 7504 | + if (yych == 'd')
|
| 7505 | + goto yy444;
|
| 7506 | + goto yy341;
|
| 7507 | + yy410:
|
| 7508 | + yych = *++p;
|
| 7509 | + if (yych == 'R')
|
| 7510 | + goto yy445;
|
| 7511 | + if (yych == 'r')
|
| 7512 | + goto yy445;
|
| 7513 | + goto yy341;
|
| 7514 | + yy411:
|
| 7515 | + yych = *++p;
|
| 7516 | + if (yych == 'I')
|
| 7517 | + goto yy446;
|
| 7518 | + if (yych == 'i')
|
| 7519 | + goto yy446;
|
| 7520 | + goto yy341;
|
| 7521 | + yy412:
|
| 7522 | + yych = *++p;
|
| 7523 | + if (yych == 'D')
|
| 7524 | + goto yy447;
|
| 7525 | + if (yych == 'd')
|
| 7526 | + goto yy447;
|
| 7527 | + goto yy341;
|
| 7528 | + yy413:
|
| 7529 | + yych = *++p;
|
| 7530 | + if (yych == 'E')
|
| 7531 | + goto yy448;
|
| 7532 | + if (yych == 'e')
|
| 7533 | + goto yy448;
|
| 7534 | + goto yy341;
|
| 7535 | + yy414:
|
| 7536 | + yych = *++p;
|
| 7537 | + if (yych == 'C')
|
| 7538 | + goto yy449;
|
| 7539 | + if (yych == 'c')
|
| 7540 | + goto yy449;
|
| 7541 | + goto yy341;
|
| 7542 | + yy415:
|
| 7543 | + yych = *++p;
|
| 7544 | + if (yych == 'Y')
|
| 7545 | + goto yy375;
|
| 7546 | + if (yych == 'y')
|
| 7547 | + goto yy375;
|
| 7548 | + goto yy341;
|
| 7549 | + yy416:
|
| 7550 | + yych = *++p;
|
| 7551 | + if (yych == 'T')
|
| 7552 | + goto yy450;
|
| 7553 | + if (yych == 't')
|
| 7554 | + goto yy450;
|
| 7555 | + goto yy341;
|
| 7556 | + yy417:
|
| 7557 | + yych = *++p;
|
| 7558 | + if (yych == 'T')
|
| 7559 | + goto yy451;
|
| 7560 | + if (yych == 't')
|
| 7561 | + goto yy451;
|
| 7562 | + goto yy341;
|
| 7563 | + yy418:
|
| 7564 | + yych = *++p;
|
| 7565 | + if (yych <= '/') {
|
| 7566 | + if (yych <= 0x1F) {
|
| 7567 | + if (yych <= 0x08)
|
| 7568 | + goto yy341;
|
| 7569 | + if (yych <= '\r')
|
| 7570 | + goto yy391;
|
| 7571 | + goto yy341;
|
| 7572 | + } else {
|
| 7573 | + if (yych <= ' ')
|
| 7574 | + goto yy391;
|
| 7575 | + if (yych <= '.')
|
| 7576 | + goto yy341;
|
| 7577 | + goto yy393;
|
| 7578 | + }
|
| 7579 | + } else {
|
| 7580 | + if (yych <= 'F') {
|
| 7581 | + if (yych == '>')
|
| 7582 | + goto yy391;
|
| 7583 | + goto yy341;
|
| 7584 | + } else {
|
| 7585 | + if (yych <= 'G')
|
| 7586 | + goto yy452;
|
| 7587 | + if (yych == 'g')
|
| 7588 | + goto yy452;
|
| 7589 | + goto yy341;
|
| 7590 | + }
|
| 7591 | + }
|
| 7592 | + yy419:
|
| 7593 | + yych = *++p;
|
| 7594 | + if (yych == 'A')
|
| 7595 | + goto yy453;
|
| 7596 | + if (yych == 'a')
|
| 7597 | + goto yy453;
|
| 7598 | + goto yy341;
|
| 7599 | + yy420:
|
| 7600 | + yych = *++p;
|
| 7601 | + if (yych == 'L')
|
| 7602 | + goto yy454;
|
| 7603 | + if (yych == 'l')
|
| 7604 | + goto yy454;
|
| 7605 | + goto yy341;
|
| 7606 | + yy421:
|
| 7607 | + yych = *++p;
|
| 7608 | + if (yych == 'L')
|
| 7609 | + goto yy455;
|
| 7610 | + if (yych == 'l')
|
| 7611 | + goto yy455;
|
| 7612 | + goto yy341;
|
| 7613 | + yy422:
|
| 7614 | + yych = *++p;
|
| 7615 | + if (yych <= 'U') {
|
| 7616 | + if (yych == 'C')
|
| 7617 | + goto yy456;
|
| 7618 | + if (yych <= 'T')
|
| 7619 | + goto yy341;
|
| 7620 | + goto yy457;
|
| 7621 | + } else {
|
| 7622 | + if (yych <= 'c') {
|
| 7623 | + if (yych <= 'b')
|
| 7624 | + goto yy341;
|
| 7625 | + goto yy456;
|
| 7626 | + } else {
|
| 7627 | + if (yych == 'u')
|
| 7628 | + goto yy457;
|
| 7629 | + goto yy341;
|
| 7630 | + }
|
| 7631 | + }
|
| 7632 | + yy423:
|
| 7633 | + yych = *++p;
|
| 7634 | + if (yych == 'M')
|
| 7635 | + goto yy375;
|
| 7636 | + if (yych == 'm')
|
| 7637 | + goto yy375;
|
| 7638 | + goto yy341;
|
| 7639 | + yy424:
|
| 7640 | + yych = *++p;
|
| 7641 | + if (yych == 'M')
|
| 7642 | + goto yy458;
|
| 7643 | + if (yych == 'm')
|
| 7644 | + goto yy458;
|
| 7645 | + goto yy341;
|
| 7646 | + yy425:
|
| 7647 | + yych = *++p;
|
| 7648 | + if (yych == 'D')
|
| 7649 | + goto yy459;
|
| 7650 | + if (yych == 'd')
|
| 7651 | + goto yy459;
|
| 7652 | + goto yy341;
|
| 7653 | + yy426:
|
| 7654 | + yych = *++p;
|
| 7655 | + if (yych == 'A')
|
| 7656 | + goto yy460;
|
| 7657 | + if (yych == 'a')
|
| 7658 | + goto yy460;
|
| 7659 | + goto yy341;
|
| 7660 | + yy427:
|
| 7661 | + yych = *++p;
|
| 7662 | + if (yych == 'E')
|
| 7663 | + goto yy461;
|
| 7664 | + if (yych == 'e')
|
| 7665 | + goto yy461;
|
| 7666 | + goto yy341;
|
| 7667 | + yy428:
|
| 7668 | + yych = *++p;
|
| 7669 | + if (yych == 'K')
|
| 7670 | + goto yy375;
|
| 7671 | + if (yych == 'k')
|
| 7672 | + goto yy375;
|
| 7673 | + goto yy341;
|
| 7674 | + yy429:
|
| 7675 | + yych = *++p;
|
| 7676 | + if (yych == 'N')
|
| 7677 | + goto yy375;
|
| 7678 | + if (yych == 'n')
|
| 7679 | + goto yy375;
|
| 7680 | + goto yy341;
|
| 7681 | + yy430:
|
| 7682 | + yych = *++p;
|
| 7683 | + if (yych == 'U')
|
| 7684 | + goto yy462;
|
| 7685 | + if (yych == 'u')
|
| 7686 | + goto yy462;
|
| 7687 | + goto yy341;
|
| 7688 | + yy431:
|
| 7689 | + yych = *++p;
|
| 7690 | + if (yych == 'A')
|
| 7691 | + goto yy375;
|
| 7692 | + if (yych == 'a')
|
| 7693 | + goto yy375;
|
| 7694 | + goto yy341;
|
| 7695 | + yy432:
|
| 7696 | + yych = *++p;
|
| 7697 | + if (yych == 'R')
|
| 7698 | + goto yy463;
|
| 7699 | + if (yych == 'r')
|
| 7700 | + goto yy463;
|
| 7701 | + goto yy341;
|
| 7702 | + yy433:
|
| 7703 | + yych = *++p;
|
| 7704 | + if (yych <= 'I') {
|
| 7705 | + if (yych == 'G')
|
| 7706 | + goto yy452;
|
| 7707 | + if (yych <= 'H')
|
| 7708 | + goto yy341;
|
| 7709 | + goto yy464;
|
| 7710 | + } else {
|
| 7711 | + if (yych <= 'g') {
|
| 7712 | + if (yych <= 'f')
|
| 7713 | + goto yy341;
|
| 7714 | + goto yy452;
|
| 7715 | + } else {
|
| 7716 | + if (yych == 'i')
|
| 7717 | + goto yy464;
|
| 7718 | + goto yy341;
|
| 7719 | + }
|
| 7720 | + }
|
| 7721 | + yy434:
|
| 7722 | + yych = *++p;
|
| 7723 | + if (yych == 'A')
|
| 7724 | + goto yy423;
|
| 7725 | + if (yych == 'a')
|
| 7726 | + goto yy423;
|
| 7727 | + goto yy341;
|
| 7728 | + yy435:
|
| 7729 | + yych = *++p;
|
| 7730 | + if (yych <= 0x1F) {
|
| 7731 | + if (yych <= 0x08)
|
| 7732 | + goto yy341;
|
| 7733 | + if (yych <= '\r')
|
| 7734 | + goto yy465;
|
| 7735 | + goto yy341;
|
| 7736 | + } else {
|
| 7737 | + if (yych <= ' ')
|
| 7738 | + goto yy465;
|
| 7739 | + if (yych == '>')
|
| 7740 | + goto yy465;
|
| 7741 | + goto yy341;
|
| 7742 | + }
|
| 7743 | + yy436:
|
| 7744 | + yych = *++p;
|
| 7745 | + if (yych == 'I')
|
| 7746 | + goto yy467;
|
| 7747 | + if (yych == 'i')
|
| 7748 | + goto yy467;
|
| 7749 | + goto yy341;
|
| 7750 | + yy437:
|
| 7751 | + yych = *++p;
|
| 7752 | + if (yych == 'R')
|
| 7753 | + goto yy468;
|
| 7754 | + if (yych == 'r')
|
| 7755 | + goto yy468;
|
| 7756 | + goto yy341;
|
| 7757 | + yy438:
|
| 7758 | + yych = *++p;
|
| 7759 | + if (yych == 'L')
|
| 7760 | + goto yy395;
|
| 7761 | + if (yych == 'l')
|
| 7762 | + goto yy395;
|
| 7763 | + goto yy341;
|
| 7764 | + yy439:
|
| 7765 | + yych = *++p;
|
| 7766 | + if (yych == 'M')
|
| 7767 | + goto yy469;
|
| 7768 | + if (yych == 'm')
|
| 7769 | + goto yy469;
|
| 7770 | + goto yy341;
|
| 7771 | + yy440:
|
| 7772 | + yych = *++p;
|
| 7773 | + if (yych == 'L')
|
| 7774 | + goto yy447;
|
| 7775 | + if (yych == 'l')
|
| 7776 | + goto yy447;
|
| 7777 | + goto yy341;
|
| 7778 | + yy441:
|
| 7779 | + yych = *++p;
|
| 7780 | + if (yych == 'O')
|
| 7781 | + goto yy470;
|
| 7782 | + if (yych == 'o')
|
| 7783 | + goto yy470;
|
| 7784 | + goto yy341;
|
| 7785 | + yy442:
|
| 7786 | + yych = *++p;
|
| 7787 | + if (yych == 'A')
|
| 7788 | + goto yy471;
|
| 7789 | + if (yych == 'a')
|
| 7790 | + goto yy471;
|
| 7791 | + goto yy341;
|
| 7792 | + yy443:
|
| 7793 | + yych = *++p;
|
| 7794 | + if (yych == 'C')
|
| 7795 | + goto yy428;
|
| 7796 | + if (yych == 'c')
|
| 7797 | + goto yy428;
|
| 7798 | + goto yy341;
|
| 7799 | + yy444:
|
| 7800 | + yych = *++p;
|
| 7801 | + if (yych == 'A')
|
| 7802 | + goto yy472;
|
| 7803 | + if (yych == 'a')
|
| 7804 | + goto yy472;
|
| 7805 | + goto yy341;
|
| 7806 | + yy445:
|
| 7807 | + yych = *++p;
|
| 7808 | + if (yych == 'E')
|
| 7809 | + goto yy473;
|
| 7810 | + if (yych == 'e')
|
| 7811 | + goto yy473;
|
| 7812 | + goto yy341;
|
| 7813 | + yy446:
|
| 7814 | + yych = *++p;
|
| 7815 | + if (yych == 'C')
|
| 7816 | + goto yy440;
|
| 7817 | + if (yych == 'c')
|
| 7818 | + goto yy440;
|
| 7819 | + goto yy341;
|
| 7820 | + yy447:
|
| 7821 | + yych = *++p;
|
| 7822 | + if (yych == 'E')
|
| 7823 | + goto yy375;
|
| 7824 | + if (yych == 'e')
|
| 7825 | + goto yy375;
|
| 7826 | + goto yy341;
|
| 7827 | + yy448:
|
| 7828 | + yych = *++p;
|
| 7829 | + if (yych <= '/') {
|
| 7830 | + if (yych <= 0x1F) {
|
| 7831 | + if (yych <= 0x08)
|
| 7832 | + goto yy341;
|
| 7833 | + if (yych <= '\r')
|
| 7834 | + goto yy391;
|
| 7835 | + goto yy341;
|
| 7836 | + } else {
|
| 7837 | + if (yych <= ' ')
|
| 7838 | + goto yy391;
|
| 7839 | + if (yych <= '.')
|
| 7840 | + goto yy341;
|
| 7841 | + goto yy393;
|
| 7842 | + }
|
| 7843 | + } else {
|
| 7844 | + if (yych <= 'E') {
|
| 7845 | + if (yych == '>')
|
| 7846 | + goto yy391;
|
| 7847 | + goto yy341;
|
| 7848 | + } else {
|
| 7849 | + if (yych <= 'F')
|
| 7850 | + goto yy474;
|
| 7851 | + if (yych == 'f')
|
| 7852 | + goto yy474;
|
| 7853 | + goto yy341;
|
| 7854 | + }
|
| 7855 | + }
|
| 7856 | + yy449:
|
| 7857 | + yych = *++p;
|
| 7858 | + if (yych == 'K')
|
| 7859 | + goto yy475;
|
| 7860 | + if (yych == 'k')
|
| 7861 | + goto yy475;
|
| 7862 | + goto yy341;
|
| 7863 | + yy450:
|
| 7864 | + yych = *++p;
|
| 7865 | + if (yych == 'I')
|
| 7866 | + goto yy464;
|
| 7867 | + if (yych == 'i')
|
| 7868 | + goto yy464;
|
| 7869 | + goto yy341;
|
| 7870 | + yy451:
|
| 7871 | + yych = *++p;
|
| 7872 | + if (yych == 'E')
|
| 7873 | + goto yy476;
|
| 7874 | + if (yych == 'e')
|
| 7875 | + goto yy476;
|
| 7876 | + goto yy341;
|
| 7877 | + yy452:
|
| 7878 | + yych = *++p;
|
| 7879 | + if (yych == 'R')
|
| 7880 | + goto yy477;
|
| 7881 | + if (yych == 'r')
|
| 7882 | + goto yy477;
|
| 7883 | + goto yy341;
|
| 7884 | + yy453:
|
| 7885 | + yych = *++p;
|
| 7886 | + if (yych == 'I')
|
| 7887 | + goto yy478;
|
| 7888 | + if (yych == 'i')
|
| 7889 | + goto yy478;
|
| 7890 | + goto yy341;
|
| 7891 | + yy454:
|
| 7892 | + yych = *++p;
|
| 7893 | + if (yych == 'O')
|
| 7894 | + goto yy479;
|
| 7895 | + if (yych == 'o')
|
| 7896 | + goto yy479;
|
| 7897 | + goto yy341;
|
| 7898 | + yy455:
|
| 7899 | + yych = *++p;
|
| 7900 | + if (yych == 'D')
|
| 7901 | + goto yy480;
|
| 7902 | + if (yych == 'd')
|
| 7903 | + goto yy480;
|
| 7904 | + goto yy341;
|
| 7905 | + yy456:
|
| 7906 | + yych = *++p;
|
| 7907 | + if (yych == 'A')
|
| 7908 | + goto yy372;
|
| 7909 | + if (yych == 'a')
|
| 7910 | + goto yy372;
|
| 7911 | + goto yy341;
|
| 7912 | + yy457:
|
| 7913 | + yych = *++p;
|
| 7914 | + if (yych == 'R')
|
| 7915 | + goto yy447;
|
| 7916 | + if (yych == 'r')
|
| 7917 | + goto yy447;
|
| 7918 | + goto yy341;
|
| 7919 | + yy458:
|
| 7920 | + yych = *++p;
|
| 7921 | + if (yych == 'E')
|
| 7922 | + goto yy481;
|
| 7923 | + if (yych == 'e')
|
| 7924 | + goto yy481;
|
| 7925 | + goto yy341;
|
| 7926 | + yy459:
|
| 7927 | + yych = *++p;
|
| 7928 | + if (yych <= '/') {
|
| 7929 | + if (yych <= 0x1F) {
|
| 7930 | + if (yych <= 0x08)
|
| 7931 | + goto yy341;
|
| 7932 | + if (yych <= '\r')
|
| 7933 | + goto yy391;
|
| 7934 | + goto yy341;
|
| 7935 | + } else {
|
| 7936 | + if (yych <= ' ')
|
| 7937 | + goto yy391;
|
| 7938 | + if (yych <= '.')
|
| 7939 | + goto yy341;
|
| 7940 | + goto yy393;
|
| 7941 | + }
|
| 7942 | + } else {
|
| 7943 | + if (yych <= 'D') {
|
| 7944 | + if (yych == '>')
|
| 7945 | + goto yy391;
|
| 7946 | + goto yy341;
|
| 7947 | + } else {
|
| 7948 | + if (yych <= 'E')
|
| 7949 | + goto yy476;
|
| 7950 | + if (yych == 'e')
|
| 7951 | + goto yy476;
|
| 7952 | + goto yy341;
|
| 7953 | + }
|
| 7954 | + }
|
| 7955 | + yy460:
|
| 7956 | + yych = *++p;
|
| 7957 | + if (yych == 'M')
|
| 7958 | + goto yy447;
|
| 7959 | + if (yych == 'm')
|
| 7960 | + goto yy447;
|
| 7961 | + goto yy341;
|
| 7962 | + yy461:
|
| 7963 | + yych = *++p;
|
| 7964 | + if (yych == 'N')
|
| 7965 | + goto yy471;
|
| 7966 | + if (yych == 'n')
|
| 7967 | + goto yy471;
|
| 7968 | + goto yy341;
|
| 7969 | + yy462:
|
| 7970 | + yych = *++p;
|
| 7971 | + if (yych <= '/') {
|
| 7972 | + if (yych <= 0x1F) {
|
| 7973 | + if (yych <= 0x08)
|
| 7974 | + goto yy341;
|
| 7975 | + if (yych <= '\r')
|
| 7976 | + goto yy391;
|
| 7977 | + goto yy341;
|
| 7978 | + } else {
|
| 7979 | + if (yych <= ' ')
|
| 7980 | + goto yy391;
|
| 7981 | + if (yych <= '.')
|
| 7982 | + goto yy341;
|
| 7983 | + goto yy393;
|
| 7984 | + }
|
| 7985 | + } else {
|
| 7986 | + if (yych <= 'H') {
|
| 7987 | + if (yych == '>')
|
| 7988 | + goto yy391;
|
| 7989 | + goto yy341;
|
| 7990 | + } else {
|
| 7991 | + if (yych <= 'I')
|
| 7992 | + goto yy482;
|
| 7993 | + if (yych == 'i')
|
| 7994 | + goto yy482;
|
| 7995 | + goto yy341;
|
| 7996 | + }
|
| 7997 | + }
|
| 7998 | + yy463:
|
| 7999 | + yych = *++p;
|
| 8000 | + if (yych == 'A')
|
| 8001 | + goto yy483;
|
| 8002 | + if (yych == 'a')
|
| 8003 | + goto yy483;
|
| 8004 | + goto yy341;
|
| 8005 | + yy464:
|
| 8006 | + yych = *++p;
|
| 8007 | + if (yych == 'O')
|
| 8008 | + goto yy429;
|
| 8009 | + if (yych == 'o')
|
| 8010 | + goto yy429;
|
| 8011 | + goto yy341;
|
| 8012 | + yy465:
|
| 8013 | + ++p;
|
| 8014 | + { return 1; }
|
| 8015 | + yy467:
|
| 8016 | + yych = *++p;
|
| 8017 | + if (yych == 'P')
|
| 8018 | + goto yy484;
|
| 8019 | + if (yych == 'p')
|
| 8020 | + goto yy484;
|
| 8021 | + goto yy341;
|
| 8022 | + yy468:
|
| 8023 | + yych = *++p;
|
| 8024 | + if (yych == 'C')
|
| 8025 | + goto yy447;
|
| 8026 | + if (yych == 'c')
|
| 8027 | + goto yy447;
|
| 8028 | + goto yy341;
|
| 8029 | + yy469:
|
| 8030 | + yych = *++p;
|
| 8031 | + if (yych == 'A')
|
| 8032 | + goto yy485;
|
| 8033 | + if (yych == 'a')
|
| 8034 | + goto yy485;
|
| 8035 | + goto yy341;
|
| 8036 | + yy470:
|
| 8037 | + yych = *++p;
|
| 8038 | + if (yych == 'T')
|
| 8039 | + goto yy375;
|
| 8040 | + if (yych == 't')
|
| 8041 | + goto yy375;
|
| 8042 | + goto yy341;
|
| 8043 | + yy471:
|
| 8044 | + yych = *++p;
|
| 8045 | + if (yych == 'D')
|
| 8046 | + goto yy375;
|
| 8047 | + if (yych == 'd')
|
| 8048 | + goto yy375;
|
| 8049 | + goto yy341;
|
| 8050 | + yy472:
|
| 8051 | + yych = *++p;
|
| 8052 | + if (yych == 'T')
|
| 8053 | + goto yy486;
|
| 8054 | + if (yych == 't')
|
| 8055 | + goto yy486;
|
| 8056 | + goto yy341;
|
| 8057 | + yy473:
|
| 8058 | + yych = *++p;
|
| 8059 | + if (yych == 'S')
|
| 8060 | + goto yy487;
|
| 8061 | + if (yych == 's')
|
| 8062 | + goto yy487;
|
| 8063 | + goto yy341;
|
| 8064 | + yy474:
|
| 8065 | + yych = *++p;
|
| 8066 | + if (yych == 'O')
|
| 8067 | + goto yy488;
|
| 8068 | + if (yych == 'o')
|
| 8069 | + goto yy488;
|
| 8070 | + goto yy341;
|
| 8071 | + yy475:
|
| 8072 | + yych = *++p;
|
| 8073 | + if (yych == 'Q')
|
| 8074 | + goto yy489;
|
| 8075 | + if (yych == 'q')
|
| 8076 | + goto yy489;
|
| 8077 | + goto yy341;
|
| 8078 | + yy476:
|
| 8079 | + yych = *++p;
|
| 8080 | + if (yych == 'R')
|
| 8081 | + goto yy375;
|
| 8082 | + if (yych == 'r')
|
| 8083 | + goto yy375;
|
| 8084 | + goto yy341;
|
| 8085 | + yy477:
|
| 8086 | + yych = *++p;
|
| 8087 | + if (yych == 'O')
|
| 8088 | + goto yy490;
|
| 8089 | + if (yych == 'o')
|
| 8090 | + goto yy490;
|
| 8091 | + goto yy341;
|
| 8092 | + yy478:
|
| 8093 | + yych = *++p;
|
| 8094 | + if (yych == 'L')
|
| 8095 | + goto yy487;
|
| 8096 | + if (yych == 'l')
|
| 8097 | + goto yy487;
|
| 8098 | + goto yy341;
|
| 8099 | + yy479:
|
| 8100 | + yych = *++p;
|
| 8101 | + if (yych == 'G')
|
| 8102 | + goto yy375;
|
| 8103 | + if (yych == 'g')
|
| 8104 | + goto yy375;
|
| 8105 | + goto yy341;
|
| 8106 | + yy480:
|
| 8107 | + yych = *++p;
|
| 8108 | + if (yych == 'S')
|
| 8109 | + goto yy491;
|
| 8110 | + if (yych == 's')
|
| 8111 | + goto yy491;
|
| 8112 | + goto yy341;
|
| 8113 | + yy481:
|
| 8114 | + yych = *++p;
|
| 8115 | + if (yych <= '/') {
|
| 8116 | + if (yych <= 0x1F) {
|
| 8117 | + if (yych <= 0x08)
|
| 8118 | + goto yy341;
|
| 8119 | + if (yych <= '\r')
|
| 8120 | + goto yy391;
|
| 8121 | + goto yy341;
|
| 8122 | + } else {
|
| 8123 | + if (yych <= ' ')
|
| 8124 | + goto yy391;
|
| 8125 | + if (yych <= '.')
|
| 8126 | + goto yy341;
|
| 8127 | + goto yy393;
|
| 8128 | + }
|
| 8129 | + } else {
|
| 8130 | + if (yych <= 'R') {
|
| 8131 | + if (yych == '>')
|
| 8132 | + goto yy391;
|
| 8133 | + goto yy341;
|
| 8134 | + } else {
|
| 8135 | + if (yych <= 'S')
|
| 8136 | + goto yy491;
|
| 8137 | + if (yych == 's')
|
| 8138 | + goto yy491;
|
| 8139 | + goto yy341;
|
| 8140 | + }
|
| 8141 | + }
|
| 8142 | + yy482:
|
| 8143 | + yych = *++p;
|
| 8144 | + if (yych == 'T')
|
| 8145 | + goto yy492;
|
| 8146 | + if (yych == 't')
|
| 8147 | + goto yy492;
|
| 8148 | + goto yy341;
|
| 8149 | + yy483:
|
| 8150 | + yych = *++p;
|
| 8151 | + if (yych == 'M')
|
| 8152 | + goto yy493;
|
| 8153 | + if (yych == 'm')
|
| 8154 | + goto yy493;
|
| 8155 | + goto yy341;
|
| 8156 | + yy484:
|
| 8157 | + yych = *++p;
|
| 8158 | + if (yych == 'T')
|
| 8159 | + goto yy435;
|
| 8160 | + if (yych == 't')
|
| 8161 | + goto yy435;
|
| 8162 | + goto yy341;
|
| 8163 | + yy485:
|
| 8164 | + yych = *++p;
|
| 8165 | + if (yych == 'R')
|
| 8166 | + goto yy415;
|
| 8167 | + if (yych == 'r')
|
| 8168 | + goto yy415;
|
| 8169 | + goto yy341;
|
| 8170 | + yy486:
|
| 8171 | + yych = *++p;
|
| 8172 | + if (yych == 'A')
|
| 8173 | + goto yy494;
|
| 8174 | + if (yych == 'a')
|
| 8175 | + goto yy494;
|
| 8176 | + goto yy341;
|
| 8177 | + yy487:
|
| 8178 | + yych = *++p;
|
| 8179 | + if (yych == 'S')
|
| 8180 | + goto yy375;
|
| 8181 | + if (yych == 's')
|
| 8182 | + goto yy375;
|
| 8183 | + goto yy341;
|
| 8184 | + yy488:
|
| 8185 | + yych = *++p;
|
| 8186 | + if (yych == 'N')
|
| 8187 | + goto yy470;
|
| 8188 | + if (yych == 'n')
|
| 8189 | + goto yy470;
|
| 8190 | + goto yy341;
|
| 8191 | + yy489:
|
| 8192 | + yych = *++p;
|
| 8193 | + if (yych == 'U')
|
| 8194 | + goto yy495;
|
| 8195 | + if (yych == 'u')
|
| 8196 | + goto yy495;
|
| 8197 | + goto yy341;
|
| 8198 | + yy490:
|
| 8199 | + yych = *++p;
|
| 8200 | + if (yych == 'U')
|
| 8201 | + goto yy496;
|
| 8202 | + if (yych == 'u')
|
| 8203 | + goto yy496;
|
| 8204 | + goto yy341;
|
| 8205 | + yy491:
|
| 8206 | + yych = *++p;
|
| 8207 | + if (yych == 'E')
|
| 8208 | + goto yy470;
|
| 8209 | + if (yych == 'e')
|
| 8210 | + goto yy470;
|
| 8211 | + goto yy341;
|
| 8212 | + yy492:
|
| 8213 | + yych = *++p;
|
| 8214 | + if (yych == 'E')
|
| 8215 | + goto yy423;
|
| 8216 | + if (yych == 'e')
|
| 8217 | + goto yy423;
|
| 8218 | + goto yy341;
|
| 8219 | + yy493:
|
| 8220 | + yych = *++p;
|
| 8221 | + if (yych == 'E')
|
| 8222 | + goto yy487;
|
| 8223 | + if (yych == 'e')
|
| 8224 | + goto yy487;
|
| 8225 | + goto yy341;
|
| 8226 | + yy494:
|
| 8227 | + yych = *++p;
|
| 8228 | + if (yych == '[')
|
| 8229 | + goto yy497;
|
| 8230 | + goto yy341;
|
| 8231 | + yy495:
|
| 8232 | + yych = *++p;
|
| 8233 | + if (yych == 'O')
|
| 8234 | + goto yy499;
|
| 8235 | + if (yych == 'o')
|
| 8236 | + goto yy499;
|
| 8237 | + goto yy341;
|
| 8238 | + yy496:
|
| 8239 | + yych = *++p;
|
| 8240 | + if (yych == 'P')
|
| 8241 | + goto yy375;
|
| 8242 | + if (yych == 'p')
|
| 8243 | + goto yy375;
|
| 8244 | + goto yy341;
|
| 8245 | + yy497:
|
| 8246 | + ++p;
|
| 8247 | + { return 5; }
|
| 8248 | + yy499:
|
| 8249 | + ++p;
|
| 8250 | + if ((yych = *p) == 'T')
|
| 8251 | + goto yy447;
|
| 8252 | + if (yych == 't')
|
| 8253 | + goto yy447;
|
| 8254 | + goto yy341;
|
| 8255 | + }
|
| 8256 | +}
|
| 8257 | +
|
| 8258 | +// Try to match an HTML block tag start line of type 7, returning
|
| 8259 | +// 7 if successful, 0 if not.
|
| 8260 | +bufsize_t _scan_html_block_start_7(const unsigned char *p) {
|
| 8261 | + const unsigned char *marker = NULL;
|
| 8262 | +
|
| 8263 | + {
|
| 8264 | + unsigned char yych;
|
| 8265 | + unsigned int yyaccept = 0;
|
| 8266 | + static const unsigned char yybm[] = {
|
| 8267 | + 0, 224, 224, 224, 224, 224, 224, 224, 224, 198, 210, 194, 198, 194,
|
| 8268 | + 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
|
| 8269 | + 224, 224, 224, 224, 198, 224, 128, 224, 224, 224, 224, 64, 224, 224,
|
| 8270 | + 224, 224, 224, 233, 232, 224, 233, 233, 233, 233, 233, 233, 233, 233,
|
| 8271 | + 233, 233, 232, 224, 192, 192, 192, 224, 224, 233, 233, 233, 233, 233,
|
| 8272 | + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
|
| 8273 | + 233, 233, 233, 233, 233, 233, 233, 224, 224, 224, 224, 232, 192, 233,
|
| 8274 | + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
|
| 8275 | + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 224, 224, 224,
|
| 8276 | + 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8277 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8278 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8279 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8280 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8281 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8282 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8283 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8284 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 8285 | + 0, 0, 0, 0,
|
| 8286 | + };
|
| 8287 | + yych = *p;
|
| 8288 | + if (yych == '<')
|
| 8289 | + goto yy504;
|
| 8290 | + ++p;
|
| 8291 | + yy503 : { return 0; }
|
| 8292 | + yy504:
|
| 8293 | + yyaccept = 0;
|
| 8294 | + yych = *(marker = ++p);
|
| 8295 | + if (yych <= '@') {
|
| 8296 | + if (yych != '/')
|
| 8297 | + goto yy503;
|
| 8298 | + } else {
|
| 8299 | + if (yych <= 'Z')
|
| 8300 | + goto yy507;
|
| 8301 | + if (yych <= '`')
|
| 8302 | + goto yy503;
|
| 8303 | + if (yych <= 'z')
|
| 8304 | + goto yy507;
|
| 8305 | + goto yy503;
|
| 8306 | + }
|
| 8307 | + yych = *++p;
|
| 8308 | + if (yych <= '@')
|
| 8309 | + goto yy506;
|
| 8310 | + if (yych <= 'Z')
|
| 8311 | + goto yy509;
|
| 8312 | + if (yych <= '`')
|
| 8313 | + goto yy506;
|
| 8314 | + if (yych <= 'z')
|
| 8315 | + goto yy509;
|
| 8316 | + yy506:
|
| 8317 | + p = marker;
|
| 8318 | + if (yyaccept == 0) {
|
| 8319 | + goto yy503;
|
| 8320 | + } else {
|
| 8321 | + goto yy522;
|
| 8322 | + }
|
| 8323 | + yy507:
|
| 8324 | + ++p;
|
| 8325 | + yych = *p;
|
| 8326 | + if (yybm[0 + yych] & 2) {
|
| 8327 | + goto yy511;
|
| 8328 | + }
|
| 8329 | + if (yych <= '=') {
|
| 8330 | + if (yych <= '.') {
|
| 8331 | + if (yych == '-')
|
| 8332 | + goto yy507;
|
| 8333 | + goto yy506;
|
| 8334 | + } else {
|
| 8335 | + if (yych <= '/')
|
| 8336 | + goto yy513;
|
| 8337 | + if (yych <= '9')
|
| 8338 | + goto yy507;
|
| 8339 | + goto yy506;
|
| 8340 | + }
|
| 8341 | + } else {
|
| 8342 | + if (yych <= 'Z') {
|
| 8343 | + if (yych <= '>')
|
| 8344 | + goto yy514;
|
| 8345 | + if (yych <= '@')
|
| 8346 | + goto yy506;
|
| 8347 | + goto yy507;
|
| 8348 | + } else {
|
| 8349 | + if (yych <= '`')
|
| 8350 | + goto yy506;
|
| 8351 | + if (yych <= 'z')
|
| 8352 | + goto yy507;
|
| 8353 | + goto yy506;
|
| 8354 | + }
|
| 8355 | + }
|
| 8356 | + yy509:
|
| 8357 | + ++p;
|
| 8358 | + yych = *p;
|
| 8359 | + if (yych <= '/') {
|
| 8360 | + if (yych <= 0x1F) {
|
| 8361 | + if (yych <= 0x08)
|
| 8362 | + goto yy506;
|
| 8363 | + if (yych <= '\r')
|
| 8364 | + goto yy516;
|
| 8365 | + goto yy506;
|
| 8366 | + } else {
|
| 8367 | + if (yych <= ' ')
|
| 8368 | + goto yy516;
|
| 8369 | + if (yych == '-')
|
| 8370 | + goto yy509;
|
| 8371 | + goto yy506;
|
| 8372 | + }
|
| 8373 | + } else {
|
| 8374 | + if (yych <= '@') {
|
| 8375 | + if (yych <= '9')
|
| 8376 | + goto yy509;
|
| 8377 | + if (yych == '>')
|
| 8378 | + goto yy514;
|
| 8379 | + goto yy506;
|
| 8380 | + } else {
|
| 8381 | + if (yych <= 'Z')
|
| 8382 | + goto yy509;
|
| 8383 | + if (yych <= '`')
|
| 8384 | + goto yy506;
|
| 8385 | + if (yych <= 'z')
|
| 8386 | + goto yy509;
|
| 8387 | + goto yy506;
|
| 8388 | + }
|
| 8389 | + }
|
| 8390 | + yy511:
|
| 8391 | + ++p;
|
| 8392 | + yych = *p;
|
| 8393 | + if (yybm[0 + yych] & 2) {
|
| 8394 | + goto yy511;
|
| 8395 | + }
|
| 8396 | + if (yych <= '>') {
|
| 8397 | + if (yych <= '9') {
|
| 8398 | + if (yych != '/')
|
| 8399 | + goto yy506;
|
| 8400 | + } else {
|
| 8401 | + if (yych <= ':')
|
| 8402 | + goto yy518;
|
| 8403 | + if (yych <= '=')
|
| 8404 | + goto yy506;
|
| 8405 | + goto yy514;
|
| 8406 | + }
|
| 8407 | + } else {
|
| 8408 | + if (yych <= '^') {
|
| 8409 | + if (yych <= '@')
|
| 8410 | + goto yy506;
|
| 8411 | + if (yych <= 'Z')
|
| 8412 | + goto yy518;
|
| 8413 | + goto yy506;
|
| 8414 | + } else {
|
| 8415 | + if (yych == '`')
|
| 8416 | + goto yy506;
|
| 8417 | + if (yych <= 'z')
|
| 8418 | + goto yy518;
|
| 8419 | + goto yy506;
|
| 8420 | + }
|
| 8421 | + }
|
| 8422 | + yy513:
|
| 8423 | + yych = *++p;
|
| 8424 | + if (yych != '>')
|
| 8425 | + goto yy506;
|
| 8426 | + yy514:
|
| 8427 | + ++p;
|
| 8428 | + yych = *p;
|
| 8429 | + if (yybm[0 + yych] & 4) {
|
| 8430 | + goto yy514;
|
| 8431 | + }
|
| 8432 | + if (yych <= 0x08)
|
| 8433 | + goto yy506;
|
| 8434 | + if (yych <= '\n')
|
| 8435 | + goto yy520;
|
| 8436 | + if (yych <= '\v')
|
| 8437 | + goto yy506;
|
| 8438 | + if (yych <= '\r')
|
| 8439 | + goto yy523;
|
| 8440 | + goto yy506;
|
| 8441 | + yy516:
|
| 8442 | + ++p;
|
| 8443 | + yych = *p;
|
| 8444 | + if (yych <= 0x1F) {
|
| 8445 | + if (yych <= 0x08)
|
| 8446 | + goto yy506;
|
| 8447 | + if (yych <= '\r')
|
| 8448 | + goto yy516;
|
| 8449 | + goto yy506;
|
| 8450 | + } else {
|
| 8451 | + if (yych <= ' ')
|
| 8452 | + goto yy516;
|
| 8453 | + if (yych == '>')
|
| 8454 | + goto yy514;
|
| 8455 | + goto yy506;
|
| 8456 | + }
|
| 8457 | + yy518:
|
| 8458 | + ++p;
|
| 8459 | + yych = *p;
|
| 8460 | + if (yybm[0 + yych] & 8) {
|
| 8461 | + goto yy518;
|
| 8462 | + }
|
| 8463 | + if (yych <= ',') {
|
| 8464 | + if (yych <= '\r') {
|
| 8465 | + if (yych <= 0x08)
|
| 8466 | + goto yy506;
|
| 8467 | + goto yy524;
|
| 8468 | + } else {
|
| 8469 | + if (yych == ' ')
|
| 8470 | + goto yy524;
|
| 8471 | + goto yy506;
|
| 8472 | + }
|
| 8473 | + } else {
|
| 8474 | + if (yych <= '<') {
|
| 8475 | + if (yych <= '/')
|
| 8476 | + goto yy513;
|
| 8477 | + goto yy506;
|
| 8478 | + } else {
|
| 8479 | + if (yych <= '=')
|
| 8480 | + goto yy526;
|
| 8481 | + if (yych <= '>')
|
| 8482 | + goto yy514;
|
| 8483 | + goto yy506;
|
| 8484 | + }
|
| 8485 | + }
|
| 8486 | + yy520:
|
| 8487 | + yyaccept = 1;
|
| 8488 | + marker = ++p;
|
| 8489 | + yych = *p;
|
| 8490 | + if (yybm[0 + yych] & 4) {
|
| 8491 | + goto yy514;
|
| 8492 | + }
|
| 8493 | + if (yych <= 0x08)
|
| 8494 | + goto yy522;
|
| 8495 | + if (yych <= '\n')
|
| 8496 | + goto yy520;
|
| 8497 | + if (yych <= '\v')
|
| 8498 | + goto yy522;
|
| 8499 | + if (yych <= '\r')
|
| 8500 | + goto yy523;
|
| 8501 | + yy522 : { return 7; }
|
| 8502 | + yy523:
|
| 8503 | + yych = *++p;
|
| 8504 | + goto yy522;
|
| 8505 | + yy524:
|
| 8506 | + ++p;
|
| 8507 | + yych = *p;
|
| 8508 | + if (yych <= '<') {
|
| 8509 | + if (yych <= ' ') {
|
| 8510 | + if (yych <= 0x08)
|
| 8511 | + goto yy506;
|
| 8512 | + if (yych <= '\r')
|
| 8513 | + goto yy524;
|
| 8514 | + if (yych <= 0x1F)
|
| 8515 | + goto yy506;
|
| 8516 | + goto yy524;
|
| 8517 | + } else {
|
| 8518 | + if (yych <= '/') {
|
| 8519 | + if (yych <= '.')
|
| 8520 | + goto yy506;
|
| 8521 | + goto yy513;
|
| 8522 | + } else {
|
| 8523 | + if (yych == ':')
|
| 8524 | + goto yy518;
|
| 8525 | + goto yy506;
|
| 8526 | + }
|
| 8527 | + }
|
| 8528 | + } else {
|
| 8529 | + if (yych <= 'Z') {
|
| 8530 | + if (yych <= '=')
|
| 8531 | + goto yy526;
|
| 8532 | + if (yych <= '>')
|
| 8533 | + goto yy514;
|
| 8534 | + if (yych <= '@')
|
| 8535 | + goto yy506;
|
| 8536 | + goto yy518;
|
| 8537 | + } else {
|
| 8538 | + if (yych <= '_') {
|
| 8539 | + if (yych <= '^')
|
| 8540 | + goto yy506;
|
| 8541 | + goto yy518;
|
| 8542 | + } else {
|
| 8543 | + if (yych <= '`')
|
| 8544 | + goto yy506;
|
| 8545 | + if (yych <= 'z')
|
| 8546 | + goto yy518;
|
| 8547 | + goto yy506;
|
| 8548 | + }
|
| 8549 | + }
|
| 8550 | + }
|
| 8551 | + yy526:
|
| 8552 | + ++p;
|
| 8553 | + yych = *p;
|
| 8554 | + if (yybm[0 + yych] & 32) {
|
| 8555 | + goto yy527;
|
| 8556 | + }
|
| 8557 | + if (yych <= 0xE0) {
|
| 8558 | + if (yych <= '"') {
|
| 8559 | + if (yych <= 0x00)
|
| 8560 | + goto yy506;
|
| 8561 | + if (yych <= ' ')
|
| 8562 | + goto yy529;
|
| 8563 | + goto yy530;
|
| 8564 | + } else {
|
| 8565 | + if (yych <= '\'')
|
| 8566 | + goto yy532;
|
| 8567 | + if (yych <= 0xC1)
|
| 8568 | + goto yy506;
|
| 8569 | + if (yych <= 0xDF)
|
| 8570 | + goto yy534;
|
| 8571 | + goto yy535;
|
| 8572 | + }
|
| 8573 | + } else {
|
| 8574 | + if (yych <= 0xEF) {
|
| 8575 | + if (yych == 0xED)
|
| 8576 | + goto yy537;
|
| 8577 | + goto yy536;
|
| 8578 | + } else {
|
| 8579 | + if (yych <= 0xF0)
|
| 8580 | + goto yy538;
|
| 8581 | + if (yych <= 0xF3)
|
| 8582 | + goto yy539;
|
| 8583 | + if (yych <= 0xF4)
|
| 8584 | + goto yy540;
|
| 8585 | + goto yy506;
|
| 8586 | + }
|
| 8587 | + }
|
| 8588 | + yy527:
|
| 8589 | + ++p;
|
| 8590 | + yych = *p;
|
| 8591 | + if (yybm[0 + yych] & 32) {
|
| 8592 | + goto yy527;
|
| 8593 | + }
|
| 8594 | + if (yych <= 0xE0) {
|
| 8595 | + if (yych <= '=') {
|
| 8596 | + if (yych <= 0x00)
|
| 8597 | + goto yy506;
|
| 8598 | + if (yych <= ' ')
|
| 8599 | + goto yy541;
|
| 8600 | + goto yy506;
|
| 8601 | + } else {
|
| 8602 | + if (yych <= '>')
|
| 8603 | + goto yy514;
|
| 8604 | + if (yych <= 0xC1)
|
| 8605 | + goto yy506;
|
| 8606 | + if (yych <= 0xDF)
|
| 8607 | + goto yy534;
|
| 8608 | + goto yy535;
|
| 8609 | + }
|
| 8610 | + } else {
|
| 8611 | + if (yych <= 0xEF) {
|
| 8612 | + if (yych == 0xED)
|
| 8613 | + goto yy537;
|
| 8614 | + goto yy536;
|
| 8615 | + } else {
|
| 8616 | + if (yych <= 0xF0)
|
| 8617 | + goto yy538;
|
| 8618 | + if (yych <= 0xF3)
|
| 8619 | + goto yy539;
|
| 8620 | + if (yych <= 0xF4)
|
| 8621 | + goto yy540;
|
| 8622 | + goto yy506;
|
| 8623 | + }
|
| 8624 | + }
|
| 8625 | + yy529:
|
| 8626 | + ++p;
|
| 8627 | + yych = *p;
|
| 8628 | + if (yybm[0 + yych] & 32) {
|
| 8629 | + goto yy527;
|
| 8630 | + }
|
| 8631 | + if (yych <= 0xDF) {
|
| 8632 | + if (yych <= '\'') {
|
| 8633 | + if (yych <= 0x00)
|
| 8634 | + goto yy506;
|
| 8635 | + if (yych <= ' ')
|
| 8636 | + goto yy543;
|
| 8637 | + if (yych >= '#')
|
| 8638 | + goto yy532;
|
| 8639 | + } else {
|
| 8640 | + if (yych == '>')
|
| 8641 | + goto yy514;
|
| 8642 | + if (yych <= 0xC1)
|
| 8643 | + goto yy506;
|
| 8644 | + goto yy534;
|
| 8645 | + }
|
| 8646 | + } else {
|
| 8647 | + if (yych <= 0xEF) {
|
| 8648 | + if (yych <= 0xE0)
|
| 8649 | + goto yy535;
|
| 8650 | + if (yych == 0xED)
|
| 8651 | + goto yy537;
|
| 8652 | + goto yy536;
|
| 8653 | + } else {
|
| 8654 | + if (yych <= 0xF0)
|
| 8655 | + goto yy538;
|
| 8656 | + if (yych <= 0xF3)
|
| 8657 | + goto yy539;
|
| 8658 | + if (yych <= 0xF4)
|
| 8659 | + goto yy540;
|
| 8660 | + goto yy506;
|
| 8661 | + }
|
| 8662 | + }
|
| 8663 | + yy530:
|
| 8664 | + ++p;
|
| 8665 | + yych = *p;
|
| 8666 | + if (yybm[0 + yych] & 64) {
|
| 8667 | + goto yy530;
|
| 8668 | + }
|
| 8669 | + if (yych <= 0xEC) {
|
| 8670 | + if (yych <= 0xC1) {
|
| 8671 | + if (yych <= 0x00)
|
| 8672 | + goto yy506;
|
| 8673 | + if (yych <= '"')
|
| 8674 | + goto yy545;
|
| 8675 | + goto yy506;
|
| 8676 | + } else {
|
| 8677 | + if (yych <= 0xDF)
|
| 8678 | + goto yy546;
|
| 8679 | + if (yych <= 0xE0)
|
| 8680 | + goto yy547;
|
| 8681 | + goto yy548;
|
| 8682 | + }
|
| 8683 | + } else {
|
| 8684 | + if (yych <= 0xF0) {
|
| 8685 | + if (yych <= 0xED)
|
| 8686 | + goto yy549;
|
| 8687 | + if (yych <= 0xEF)
|
| 8688 | + goto yy548;
|
| 8689 | + goto yy550;
|
| 8690 | + } else {
|
| 8691 | + if (yych <= 0xF3)
|
| 8692 | + goto yy551;
|
| 8693 | + if (yych <= 0xF4)
|
| 8694 | + goto yy552;
|
| 8695 | + goto yy506;
|
| 8696 | + }
|
| 8697 | + }
|
| 8698 | + yy532:
|
| 8699 | + ++p;
|
| 8700 | + yych = *p;
|
| 8701 | + if (yybm[0 + yych] & 128) {
|
| 8702 | + goto yy532;
|
| 8703 | + }
|
| 8704 | + if (yych <= 0xEC) {
|
| 8705 | + if (yych <= 0xC1) {
|
| 8706 | + if (yych <= 0x00)
|
| 8707 | + goto yy506;
|
| 8708 | + if (yych <= '\'')
|
| 8709 | + goto yy545;
|
| 8710 | + goto yy506;
|
| 8711 | + } else {
|
| 8712 | + if (yych <= 0xDF)
|
| 8713 | + goto yy553;
|
| 8714 | + if (yych <= 0xE0)
|
| 8715 | + goto yy554;
|
| 8716 | + goto yy555;
|
| 8717 | + }
|
| 8718 | + } else {
|
| 8719 | + if (yych <= 0xF0) {
|
| 8720 | + if (yych <= 0xED)
|
| 8721 | + goto yy556;
|
| 8722 | + if (yych <= 0xEF)
|
| 8723 | + goto yy555;
|
| 8724 | + goto yy557;
|
| 8725 | + } else {
|
| 8726 | + if (yych <= 0xF3)
|
| 8727 | + goto yy558;
|
| 8728 | + if (yych <= 0xF4)
|
| 8729 | + goto yy559;
|
| 8730 | + goto yy506;
|
| 8731 | + }
|
| 8732 | + }
|
| 8733 | + yy534:
|
| 8734 | + ++p;
|
| 8735 | + yych = *p;
|
| 8736 | + if (yych <= 0x7F)
|
| 8737 | + goto yy506;
|
| 8738 | + if (yych <= 0xBF)
|
| 8739 | + goto yy527;
|
| 8740 | + goto yy506;
|
| 8741 | + yy535:
|
| 8742 | + ++p;
|
| 8743 | + yych = *p;
|
| 8744 | + if (yych <= 0x9F)
|
| 8745 | + goto yy506;
|
| 8746 | + if (yych <= 0xBF)
|
| 8747 | + goto yy534;
|
| 8748 | + goto yy506;
|
| 8749 | + yy536:
|
| 8750 | + ++p;
|
| 8751 | + yych = *p;
|
| 8752 | + if (yych <= 0x7F)
|
| 8753 | + goto yy506;
|
| 8754 | + if (yych <= 0xBF)
|
| 8755 | + goto yy534;
|
| 8756 | + goto yy506;
|
| 8757 | + yy537:
|
| 8758 | + ++p;
|
| 8759 | + yych = *p;
|
| 8760 | + if (yych <= 0x7F)
|
| 8761 | + goto yy506;
|
| 8762 | + if (yych <= 0x9F)
|
| 8763 | + goto yy534;
|
| 8764 | + goto yy506;
|
| 8765 | + yy538:
|
| 8766 | + ++p;
|
| 8767 | + yych = *p;
|
| 8768 | + if (yych <= 0x8F)
|
| 8769 | + goto yy506;
|
| 8770 | + if (yych <= 0xBF)
|
| 8771 | + goto yy536;
|
| 8772 | + goto yy506;
|
| 8773 | + yy539:
|
| 8774 | + ++p;
|
| 8775 | + yych = *p;
|
| 8776 | + if (yych <= 0x7F)
|
| 8777 | + goto yy506;
|
| 8778 | + if (yych <= 0xBF)
|
| 8779 | + goto yy536;
|
| 8780 | + goto yy506;
|
| 8781 | + yy540:
|
| 8782 | + ++p;
|
| 8783 | + yych = *p;
|
| 8784 | + if (yych <= 0x7F)
|
| 8785 | + goto yy506;
|
| 8786 | + if (yych <= 0x8F)
|
| 8787 | + goto yy536;
|
| 8788 | + goto yy506;
|
| 8789 | + yy541:
|
| 8790 | + ++p;
|
| 8791 | + yych = *p;
|
| 8792 | + if (yych <= '@') {
|
| 8793 | + if (yych <= '"') {
|
| 8794 | + if (yych <= '\r') {
|
| 8795 | + if (yych <= 0x00)
|
| 8796 | + goto yy506;
|
| 8797 | + if (yych <= 0x08)
|
| 8798 | + goto yy527;
|
| 8799 | + goto yy541;
|
| 8800 | + } else {
|
| 8801 | + if (yych == ' ')
|
| 8802 | + goto yy541;
|
| 8803 | + if (yych <= '!')
|
| 8804 | + goto yy527;
|
| 8805 | + goto yy506;
|
| 8806 | + }
|
| 8807 | + } else {
|
| 8808 | + if (yych <= ':') {
|
| 8809 | + if (yych == '\'')
|
| 8810 | + goto yy506;
|
| 8811 | + if (yych <= '9')
|
| 8812 | + goto yy527;
|
| 8813 | + goto yy560;
|
| 8814 | + } else {
|
| 8815 | + if (yych <= ';')
|
| 8816 | + goto yy527;
|
| 8817 | + if (yych <= '=')
|
| 8818 | + goto yy506;
|
| 8819 | + if (yych <= '>')
|
| 8820 | + goto yy514;
|
| 8821 | + goto yy527;
|
| 8822 | + }
|
| 8823 | + }
|
| 8824 | + } else {
|
| 8825 | + if (yych <= 0xDF) {
|
| 8826 | + if (yych <= '`') {
|
| 8827 | + if (yych <= 'Z')
|
| 8828 | + goto yy560;
|
| 8829 | + if (yych <= '^')
|
| 8830 | + goto yy527;
|
| 8831 | + if (yych <= '_')
|
| 8832 | + goto yy560;
|
| 8833 | + goto yy506;
|
| 8834 | + } else {
|
| 8835 | + if (yych <= 'z')
|
| 8836 | + goto yy560;
|
| 8837 | + if (yych <= 0x7F)
|
| 8838 | + goto yy527;
|
| 8839 | + if (yych <= 0xC1)
|
| 8840 | + goto yy506;
|
| 8841 | + goto yy534;
|
| 8842 | + }
|
| 8843 | + } else {
|
| 8844 | + if (yych <= 0xEF) {
|
| 8845 | + if (yych <= 0xE0)
|
| 8846 | + goto yy535;
|
| 8847 | + if (yych == 0xED)
|
| 8848 | + goto yy537;
|
| 8849 | + goto yy536;
|
| 8850 | + } else {
|
| 8851 | + if (yych <= 0xF0)
|
| 8852 | + goto yy538;
|
| 8853 | + if (yych <= 0xF3)
|
| 8854 | + goto yy539;
|
| 8855 | + if (yych <= 0xF4)
|
| 8856 | + goto yy540;
|
| 8857 | + goto yy506;
|
| 8858 | + }
|
| 8859 | + }
|
| 8860 | + }
|
| 8861 | + yy543:
|
| 8862 | + ++p;
|
| 8863 | + yych = *p;
|
| 8864 | + if (yych <= '@') {
|
| 8865 | + if (yych <= '"') {
|
| 8866 | + if (yych <= '\r') {
|
| 8867 | + if (yych <= 0x00)
|
| 8868 | + goto yy506;
|
| 8869 | + if (yych <= 0x08)
|
| 8870 | + goto yy527;
|
| 8871 | + goto yy543;
|
| 8872 | + } else {
|
| 8873 | + if (yych == ' ')
|
| 8874 | + goto yy543;
|
| 8875 | + if (yych <= '!')
|
| 8876 | + goto yy527;
|
| 8877 | + goto yy530;
|
| 8878 | + }
|
| 8879 | + } else {
|
| 8880 | + if (yych <= ':') {
|
| 8881 | + if (yych == '\'')
|
| 8882 | + goto yy532;
|
| 8883 | + if (yych <= '9')
|
| 8884 | + goto yy527;
|
| 8885 | + goto yy560;
|
| 8886 | + } else {
|
| 8887 | + if (yych <= ';')
|
| 8888 | + goto yy527;
|
| 8889 | + if (yych <= '=')
|
| 8890 | + goto yy506;
|
| 8891 | + if (yych <= '>')
|
| 8892 | + goto yy514;
|
| 8893 | + goto yy527;
|
| 8894 | + }
|
| 8895 | + }
|
| 8896 | + } else {
|
| 8897 | + if (yych <= 0xDF) {
|
| 8898 | + if (yych <= '`') {
|
| 8899 | + if (yych <= 'Z')
|
| 8900 | + goto yy560;
|
| 8901 | + if (yych <= '^')
|
| 8902 | + goto yy527;
|
| 8903 | + if (yych <= '_')
|
| 8904 | + goto yy560;
|
| 8905 | + goto yy506;
|
| 8906 | + } else {
|
| 8907 | + if (yych <= 'z')
|
| 8908 | + goto yy560;
|
| 8909 | + if (yych <= 0x7F)
|
| 8910 | + goto yy527;
|
| 8911 | + if (yych <= 0xC1)
|
| 8912 | + goto yy506;
|
| 8913 | + goto yy534;
|
| 8914 | + }
|
| 8915 | + } else {
|
| 8916 | + if (yych <= 0xEF) {
|
| 8917 | + if (yych <= 0xE0)
|
| 8918 | + goto yy535;
|
| 8919 | + if (yych == 0xED)
|
| 8920 | + goto yy537;
|
| 8921 | + goto yy536;
|
| 8922 | + } else {
|
| 8923 | + if (yych <= 0xF0)
|
| 8924 | + goto yy538;
|
| 8925 | + if (yych <= 0xF3)
|
| 8926 | + goto yy539;
|
| 8927 | + if (yych <= 0xF4)
|
| 8928 | + goto yy540;
|
| 8929 | + goto yy506;
|
| 8930 | + }
|
| 8931 | + }
|
| 8932 | + }
|
| 8933 | + yy545:
|
| 8934 | + ++p;
|
| 8935 | + yych = *p;
|
| 8936 | + if (yybm[0 + yych] & 2) {
|
| 8937 | + goto yy511;
|
| 8938 | + }
|
| 8939 | + if (yych == '/')
|
| 8940 | + goto yy513;
|
| 8941 | + if (yych == '>')
|
| 8942 | + goto yy514;
|
| 8943 | + goto yy506;
|
| 8944 | + yy546:
|
| 8945 | + ++p;
|
| 8946 | + yych = *p;
|
| 8947 | + if (yych <= 0x7F)
|
| 8948 | + goto yy506;
|
| 8949 | + if (yych <= 0xBF)
|
| 8950 | + goto yy530;
|
| 8951 | + goto yy506;
|
| 8952 | + yy547:
|
| 8953 | + ++p;
|
| 8954 | + yych = *p;
|
| 8955 | + if (yych <= 0x9F)
|
| 8956 | + goto yy506;
|
| 8957 | + if (yych <= 0xBF)
|
| 8958 | + goto yy546;
|
| 8959 | + goto yy506;
|
| 8960 | + yy548:
|
| 8961 | + ++p;
|
| 8962 | + yych = *p;
|
| 8963 | + if (yych <= 0x7F)
|
| 8964 | + goto yy506;
|
| 8965 | + if (yych <= 0xBF)
|
| 8966 | + goto yy546;
|
| 8967 | + goto yy506;
|
| 8968 | + yy549:
|
| 8969 | + ++p;
|
| 8970 | + yych = *p;
|
| 8971 | + if (yych <= 0x7F)
|
| 8972 | + goto yy506;
|
| 8973 | + if (yych <= 0x9F)
|
| 8974 | + goto yy546;
|
| 8975 | + goto yy506;
|
| 8976 | + yy550:
|
| 8977 | + ++p;
|
| 8978 | + yych = *p;
|
| 8979 | + if (yych <= 0x8F)
|
| 8980 | + goto yy506;
|
| 8981 | + if (yych <= 0xBF)
|
| 8982 | + goto yy548;
|
| 8983 | + goto yy506;
|
| 8984 | + yy551:
|
| 8985 | + ++p;
|
| 8986 | + yych = *p;
|
| 8987 | + if (yych <= 0x7F)
|
| 8988 | + goto yy506;
|
| 8989 | + if (yych <= 0xBF)
|
| 8990 | + goto yy548;
|
| 8991 | + goto yy506;
|
| 8992 | + yy552:
|
| 8993 | + ++p;
|
| 8994 | + yych = *p;
|
| 8995 | + if (yych <= 0x7F)
|
| 8996 | + goto yy506;
|
| 8997 | + if (yych <= 0x8F)
|
| 8998 | + goto yy548;
|
| 8999 | + goto yy506;
|
| 9000 | + yy553:
|
| 9001 | + ++p;
|
| 9002 | + yych = *p;
|
| 9003 | + if (yych <= 0x7F)
|
| 9004 | + goto yy506;
|
| 9005 | + if (yych <= 0xBF)
|
| 9006 | + goto yy532;
|
| 9007 | + goto yy506;
|
| 9008 | + yy554:
|
| 9009 | + ++p;
|
| 9010 | + yych = *p;
|
| 9011 | + if (yych <= 0x9F)
|
| 9012 | + goto yy506;
|
| 9013 | + if (yych <= 0xBF)
|
| 9014 | + goto yy553;
|
| 9015 | + goto yy506;
|
| 9016 | + yy555:
|
| 9017 | + ++p;
|
| 9018 | + yych = *p;
|
| 9019 | + if (yych <= 0x7F)
|
| 9020 | + goto yy506;
|
| 9021 | + if (yych <= 0xBF)
|
| 9022 | + goto yy553;
|
| 9023 | + goto yy506;
|
| 9024 | + yy556:
|
| 9025 | + ++p;
|
| 9026 | + yych = *p;
|
| 9027 | + if (yych <= 0x7F)
|
| 9028 | + goto yy506;
|
| 9029 | + if (yych <= 0x9F)
|
| 9030 | + goto yy553;
|
| 9031 | + goto yy506;
|
| 9032 | + yy557:
|
| 9033 | + ++p;
|
| 9034 | + yych = *p;
|
| 9035 | + if (yych <= 0x8F)
|
| 9036 | + goto yy506;
|
| 9037 | + if (yych <= 0xBF)
|
| 9038 | + goto yy555;
|
| 9039 | + goto yy506;
|
| 9040 | + yy558:
|
| 9041 | + ++p;
|
| 9042 | + yych = *p;
|
| 9043 | + if (yych <= 0x7F)
|
| 9044 | + goto yy506;
|
| 9045 | + if (yych <= 0xBF)
|
| 9046 | + goto yy555;
|
| 9047 | + goto yy506;
|
| 9048 | + yy559:
|
| 9049 | + ++p;
|
| 9050 | + yych = *p;
|
| 9051 | + if (yych <= 0x7F)
|
| 9052 | + goto yy506;
|
| 9053 | + if (yych <= 0x8F)
|
| 9054 | + goto yy555;
|
| 9055 | + goto yy506;
|
| 9056 | + yy560:
|
| 9057 | + ++p;
|
| 9058 | + yych = *p;
|
| 9059 | + if (yych <= '>') {
|
| 9060 | + if (yych <= '&') {
|
| 9061 | + if (yych <= 0x1F) {
|
| 9062 | + if (yych <= 0x00)
|
| 9063 | + goto yy506;
|
| 9064 | + if (yych <= 0x08)
|
| 9065 | + goto yy527;
|
| 9066 | + if (yych >= 0x0E)
|
| 9067 | + goto yy527;
|
| 9068 | + } else {
|
| 9069 | + if (yych <= ' ')
|
| 9070 | + goto yy562;
|
| 9071 | + if (yych == '"')
|
| 9072 | + goto yy506;
|
| 9073 | + goto yy527;
|
| 9074 | + }
|
| 9075 | + } else {
|
| 9076 | + if (yych <= '/') {
|
| 9077 | + if (yych <= '\'')
|
| 9078 | + goto yy506;
|
| 9079 | + if (yych <= ',')
|
| 9080 | + goto yy527;
|
| 9081 | + if (yych <= '.')
|
| 9082 | + goto yy560;
|
| 9083 | + goto yy527;
|
| 9084 | + } else {
|
| 9085 | + if (yych <= ';') {
|
| 9086 | + if (yych <= ':')
|
| 9087 | + goto yy560;
|
| 9088 | + goto yy527;
|
| 9089 | + } else {
|
| 9090 | + if (yych <= '<')
|
| 9091 | + goto yy506;
|
| 9092 | + if (yych <= '=')
|
| 9093 | + goto yy526;
|
| 9094 | + goto yy514;
|
| 9095 | + }
|
| 9096 | + }
|
| 9097 | + }
|
| 9098 | + } else {
|
| 9099 | + if (yych <= 0xC1) {
|
| 9100 | + if (yych <= '_') {
|
| 9101 | + if (yych <= '@')
|
| 9102 | + goto yy527;
|
| 9103 | + if (yych <= 'Z')
|
| 9104 | + goto yy560;
|
| 9105 | + if (yych <= '^')
|
| 9106 | + goto yy527;
|
| 9107 | + goto yy560;
|
| 9108 | + } else {
|
| 9109 | + if (yych <= '`')
|
| 9110 | + goto yy506;
|
| 9111 | + if (yych <= 'z')
|
| 9112 | + goto yy560;
|
| 9113 | + if (yych <= 0x7F)
|
| 9114 | + goto yy527;
|
| 9115 | + goto yy506;
|
| 9116 | + }
|
| 9117 | + } else {
|
| 9118 | + if (yych <= 0xED) {
|
| 9119 | + if (yych <= 0xDF)
|
| 9120 | + goto yy534;
|
| 9121 | + if (yych <= 0xE0)
|
| 9122 | + goto yy535;
|
| 9123 | + if (yych <= 0xEC)
|
| 9124 | + goto yy536;
|
| 9125 | + goto yy537;
|
| 9126 | + } else {
|
| 9127 | + if (yych <= 0xF0) {
|
| 9128 | + if (yych <= 0xEF)
|
| 9129 | + goto yy536;
|
| 9130 | + goto yy538;
|
| 9131 | + } else {
|
| 9132 | + if (yych <= 0xF3)
|
| 9133 | + goto yy539;
|
| 9134 | + if (yych <= 0xF4)
|
| 9135 | + goto yy540;
|
| 9136 | + goto yy506;
|
| 9137 | + }
|
| 9138 | + }
|
| 9139 | + }
|
| 9140 | + }
|
| 9141 | + yy562:
|
| 9142 | + ++p;
|
| 9143 | + yych = *p;
|
| 9144 | + if (yych <= '@') {
|
| 9145 | + if (yych <= '&') {
|
| 9146 | + if (yych <= 0x1F) {
|
| 9147 | + if (yych <= 0x00)
|
| 9148 | + goto yy506;
|
| 9149 | + if (yych <= 0x08)
|
| 9150 | + goto yy527;
|
| 9151 | + if (yych <= '\r')
|
| 9152 | + goto yy562;
|
| 9153 | + goto yy527;
|
| 9154 | + } else {
|
| 9155 | + if (yych <= ' ')
|
| 9156 | + goto yy562;
|
| 9157 | + if (yych == '"')
|
| 9158 | + goto yy506;
|
| 9159 | + goto yy527;
|
| 9160 | + }
|
| 9161 | + } else {
|
| 9162 | + if (yych <= ';') {
|
| 9163 | + if (yych <= '\'')
|
| 9164 | + goto yy506;
|
| 9165 | + if (yych == ':')
|
| 9166 | + goto yy560;
|
| 9167 | + goto yy527;
|
| 9168 | + } else {
|
| 9169 | + if (yych <= '<')
|
| 9170 | + goto yy506;
|
| 9171 | + if (yych <= '=')
|
| 9172 | + goto yy526;
|
| 9173 | + if (yych <= '>')
|
| 9174 | + goto yy514;
|
| 9175 | + goto yy527;
|
| 9176 | + }
|
| 9177 | + }
|
| 9178 | + } else {
|
| 9179 | + if (yych <= 0xDF) {
|
| 9180 | + if (yych <= '`') {
|
| 9181 | + if (yych <= 'Z')
|
| 9182 | + goto yy560;
|
| 9183 | + if (yych <= '^')
|
| 9184 | + goto yy527;
|
| 9185 | + if (yych <= '_')
|
| 9186 | + goto yy560;
|
| 9187 | + goto yy506;
|
| 9188 | + } else {
|
| 9189 | + if (yych <= 'z')
|
| 9190 | + goto yy560;
|
| 9191 | + if (yych <= 0x7F)
|
| 9192 | + goto yy527;
|
| 9193 | + if (yych <= 0xC1)
|
| 9194 | + goto yy506;
|
| 9195 | + goto yy534;
|
| 9196 | + }
|
| 9197 | + } else {
|
| 9198 | + if (yych <= 0xEF) {
|
| 9199 | + if (yych <= 0xE0)
|
| 9200 | + goto yy535;
|
| 9201 | + if (yych == 0xED)
|
| 9202 | + goto yy537;
|
| 9203 | + goto yy536;
|
| 9204 | + } else {
|
| 9205 | + if (yych <= 0xF0)
|
| 9206 | + goto yy538;
|
| 9207 | + if (yych <= 0xF3)
|
| 9208 | + goto yy539;
|
| 9209 | + if (yych <= 0xF4)
|
| 9210 | + goto yy540;
|
| 9211 | + goto yy506;
|
| 9212 | + }
|
| 9213 | + }
|
| 9214 | + }
|
| 9215 | + }
|
| 9216 | +}
|
| 9217 | +
|
| 9218 | +// Try to match an HTML block end line of type 1
|
| 9219 | +bufsize_t _scan_html_block_end_1(const unsigned char *p) {
|
| 9220 | + const unsigned char *marker = NULL;
|
| 9221 | + const unsigned char *start = p;
|
| 9222 | +
|
| 9223 | + {
|
| 9224 | + unsigned char yych;
|
| 9225 | + unsigned int yyaccept = 0;
|
| 9226 | + static const unsigned char yybm[] = {
|
| 9227 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64,
|
| 9228 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 9229 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 9230 | + 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 9231 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 9232 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 9233 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 9234 | + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9235 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9236 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9237 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9238 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9239 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9240 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 9241 | + 0, 0, 0, 0,
|
| 9242 | + };
|
| 9243 | + yych = *p;
|
| 9244 | + if (yych <= 0xDF) {
|
| 9245 | + if (yych <= ';') {
|
| 9246 | + if (yych == '\n')
|
| 9247 | + goto yy568;
|
| 9248 | + } else {
|
| 9249 | + if (yych <= '<')
|
| 9250 | + goto yy569;
|
| 9251 | + if (yych <= 0x7F)
|
| 9252 | + goto yy566;
|
| 9253 | + if (yych <= 0xC1)
|
| 9254 | + goto yy568;
|
| 9255 | + goto yy570;
|
| 9256 | + }
|
| 9257 | + } else {
|
| 9258 | + if (yych <= 0xEF) {
|
| 9259 | + if (yych <= 0xE0)
|
| 9260 | + goto yy571;
|
| 9261 | + if (yych == 0xED)
|
| 9262 | + goto yy573;
|
| 9263 | + goto yy572;
|
| 9264 | + } else {
|
| 9265 | + if (yych <= 0xF0)
|
| 9266 | + goto yy574;
|
| 9267 | + if (yych <= 0xF3)
|
| 9268 | + goto yy575;
|
| 9269 | + if (yych <= 0xF4)
|
| 9270 | + goto yy576;
|
| 9271 | + goto yy568;
|
| 9272 | + }
|
| 9273 | + }
|
| 9274 | + yy566:
|
| 9275 | + yyaccept = 0;
|
| 9276 | + yych = *(marker = ++p);
|
| 9277 | + if (yych <= 0x7F) {
|
| 9278 | + if (yych != '\n')
|
| 9279 | + goto yy578;
|
| 9280 | + } else {
|
| 9281 | + if (yych <= 0xC1)
|
| 9282 | + goto yy567;
|
| 9283 | + if (yych <= 0xF4)
|
| 9284 | + goto yy578;
|
| 9285 | + }
|
| 9286 | + yy567 : { return 0; }
|
| 9287 | + yy568:
|
| 9288 | + yych = *++p;
|
| 9289 | + goto yy567;
|
| 9290 | + yy569:
|
| 9291 | + yyaccept = 0;
|
| 9292 | + yych = *(marker = ++p);
|
| 9293 | + if (yych <= '/') {
|
| 9294 | + if (yych == '\n')
|
| 9295 | + goto yy567;
|
| 9296 | + if (yych <= '.')
|
| 9297 | + goto yy578;
|
| 9298 | + goto yy589;
|
| 9299 | + } else {
|
| 9300 | + if (yych <= 0x7F)
|
| 9301 | + goto yy578;
|
| 9302 | + if (yych <= 0xC1)
|
| 9303 | + goto yy567;
|
| 9304 | + if (yych <= 0xF4)
|
| 9305 | + goto yy578;
|
| 9306 | + goto yy567;
|
| 9307 | + }
|
| 9308 | + yy570:
|
| 9309 | + yyaccept = 0;
|
| 9310 | + yych = *(marker = ++p);
|
| 9311 | + if (yych <= 0x7F)
|
| 9312 | + goto yy567;
|
| 9313 | + if (yych <= 0xBF)
|
| 9314 | + goto yy577;
|
| 9315 | + goto yy567;
|
| 9316 | + yy571:
|
| 9317 | + yyaccept = 0;
|
| 9318 | + yych = *(marker = ++p);
|
| 9319 | + if (yych <= 0x9F)
|
| 9320 | + goto yy567;
|
| 9321 | + if (yych <= 0xBF)
|
| 9322 | + goto yy582;
|
| 9323 | + goto yy567;
|
| 9324 | + yy572:
|
| 9325 | + yyaccept = 0;
|
| 9326 | + yych = *(marker = ++p);
|
| 9327 | + if (yych <= 0x7F)
|
| 9328 | + goto yy567;
|
| 9329 | + if (yych <= 0xBF)
|
| 9330 | + goto yy582;
|
| 9331 | + goto yy567;
|
| 9332 | + yy573:
|
| 9333 | + yyaccept = 0;
|
| 9334 | + yych = *(marker = ++p);
|
| 9335 | + if (yych <= 0x7F)
|
| 9336 | + goto yy567;
|
| 9337 | + if (yych <= 0x9F)
|
| 9338 | + goto yy582;
|
| 9339 | + goto yy567;
|
| 9340 | + yy574:
|
| 9341 | + yyaccept = 0;
|
| 9342 | + yych = *(marker = ++p);
|
| 9343 | + if (yych <= 0x8F)
|
| 9344 | + goto yy567;
|
| 9345 | + if (yych <= 0xBF)
|
| 9346 | + goto yy584;
|
| 9347 | + goto yy567;
|
| 9348 | + yy575:
|
| 9349 | + yyaccept = 0;
|
| 9350 | + yych = *(marker = ++p);
|
| 9351 | + if (yych <= 0x7F)
|
| 9352 | + goto yy567;
|
| 9353 | + if (yych <= 0xBF)
|
| 9354 | + goto yy584;
|
| 9355 | + goto yy567;
|
| 9356 | + yy576:
|
| 9357 | + yyaccept = 0;
|
| 9358 | + yych = *(marker = ++p);
|
| 9359 | + if (yych <= 0x7F)
|
| 9360 | + goto yy567;
|
| 9361 | + if (yych <= 0x8F)
|
| 9362 | + goto yy584;
|
| 9363 | + goto yy567;
|
| 9364 | + yy577:
|
| 9365 | + ++p;
|
| 9366 | + yych = *p;
|
| 9367 | + yy578:
|
| 9368 | + if (yybm[0 + yych] & 64) {
|
| 9369 | + goto yy577;
|
| 9370 | + }
|
| 9371 | + if (yych <= 0xEC) {
|
| 9372 | + if (yych <= 0xC1) {
|
| 9373 | + if (yych <= '\n')
|
| 9374 | + goto yy579;
|
| 9375 | + if (yych <= '<')
|
| 9376 | + goto yy580;
|
| 9377 | + } else {
|
| 9378 | + if (yych <= 0xDF)
|
| 9379 | + goto yy582;
|
| 9380 | + if (yych <= 0xE0)
|
| 9381 | + goto yy583;
|
| 9382 | + goto yy584;
|
| 9383 | + }
|
| 9384 | + } else {
|
| 9385 | + if (yych <= 0xF0) {
|
| 9386 | + if (yych <= 0xED)
|
| 9387 | + goto yy585;
|
| 9388 | + if (yych <= 0xEF)
|
| 9389 | + goto yy584;
|
| 9390 | + goto yy586;
|
| 9391 | + } else {
|
| 9392 | + if (yych <= 0xF3)
|
| 9393 | + goto yy587;
|
| 9394 | + if (yych <= 0xF4)
|
| 9395 | + goto yy588;
|
| 9396 | + }
|
| 9397 | + }
|
| 9398 | + yy579:
|
| 9399 | + p = marker;
|
| 9400 | + if (yyaccept == 0) {
|
| 9401 | + goto yy567;
|
| 9402 | + } else {
|
| 9403 | + goto yy599;
|
| 9404 | + }
|
| 9405 | + yy580:
|
| 9406 | + ++p;
|
| 9407 | + yych = *p;
|
| 9408 | + if (yybm[0 + yych] & 128) {
|
| 9409 | + goto yy580;
|
| 9410 | + }
|
| 9411 | + if (yych <= 0xDF) {
|
| 9412 | + if (yych <= '.') {
|
| 9413 | + if (yych == '\n')
|
| 9414 | + goto yy579;
|
| 9415 | + goto yy577;
|
| 9416 | + } else {
|
| 9417 | + if (yych <= '/')
|
| 9418 | + goto yy589;
|
| 9419 | + if (yych <= 0x7F)
|
| 9420 | + goto yy577;
|
| 9421 | + if (yych <= 0xC1)
|
| 9422 | + goto yy579;
|
| 9423 | + }
|
| 9424 | + } else {
|
| 9425 | + if (yych <= 0xEF) {
|
| 9426 | + if (yych <= 0xE0)
|
| 9427 | + goto yy583;
|
| 9428 | + if (yych == 0xED)
|
| 9429 | + goto yy585;
|
| 9430 | + goto yy584;
|
| 9431 | + } else {
|
| 9432 | + if (yych <= 0xF0)
|
| 9433 | + goto yy586;
|
| 9434 | + if (yych <= 0xF3)
|
| 9435 | + goto yy587;
|
| 9436 | + if (yych <= 0xF4)
|
| 9437 | + goto yy588;
|
| 9438 | + goto yy579;
|
| 9439 | + }
|
| 9440 | + }
|
| 9441 | + yy582:
|
| 9442 | + ++p;
|
| 9443 | + yych = *p;
|
| 9444 | + if (yych <= 0x7F)
|
| 9445 | + goto yy579;
|
| 9446 | + if (yych <= 0xBF)
|
| 9447 | + goto yy577;
|
| 9448 | + goto yy579;
|
| 9449 | + yy583:
|
| 9450 | + ++p;
|
| 9451 | + yych = *p;
|
| 9452 | + if (yych <= 0x9F)
|
| 9453 | + goto yy579;
|
| 9454 | + if (yych <= 0xBF)
|
| 9455 | + goto yy582;
|
| 9456 | + goto yy579;
|
| 9457 | + yy584:
|
| 9458 | + ++p;
|
| 9459 | + yych = *p;
|
| 9460 | + if (yych <= 0x7F)
|
| 9461 | + goto yy579;
|
| 9462 | + if (yych <= 0xBF)
|
| 9463 | + goto yy582;
|
| 9464 | + goto yy579;
|
| 9465 | + yy585:
|
| 9466 | + ++p;
|
| 9467 | + yych = *p;
|
| 9468 | + if (yych <= 0x7F)
|
| 9469 | + goto yy579;
|
| 9470 | + if (yych <= 0x9F)
|
| 9471 | + goto yy582;
|
| 9472 | + goto yy579;
|
| 9473 | + yy586:
|
| 9474 | + ++p;
|
| 9475 | + yych = *p;
|
| 9476 | + if (yych <= 0x8F)
|
| 9477 | + goto yy579;
|
| 9478 | + if (yych <= 0xBF)
|
| 9479 | + goto yy584;
|
| 9480 | + goto yy579;
|
| 9481 | + yy587:
|
| 9482 | + ++p;
|
| 9483 | + yych = *p;
|
| 9484 | + if (yych <= 0x7F)
|
| 9485 | + goto yy579;
|
| 9486 | + if (yych <= 0xBF)
|
| 9487 | + goto yy584;
|
| 9488 | + goto yy579;
|
| 9489 | + yy588:
|
| 9490 | + ++p;
|
| 9491 | + yych = *p;
|
| 9492 | + if (yych <= 0x7F)
|
| 9493 | + goto yy579;
|
| 9494 | + if (yych <= 0x8F)
|
| 9495 | + goto yy584;
|
| 9496 | + goto yy579;
|
| 9497 | + yy589:
|
| 9498 | + ++p;
|
| 9499 | + yych = *p;
|
| 9500 | + if (yybm[0 + yych] & 128) {
|
| 9501 | + goto yy580;
|
| 9502 | + }
|
| 9503 | + if (yych <= 's') {
|
| 9504 | + if (yych <= 'R') {
|
| 9505 | + if (yych <= '\n') {
|
| 9506 | + if (yych <= '\t')
|
| 9507 | + goto yy577;
|
| 9508 | + goto yy579;
|
| 9509 | + } else {
|
| 9510 | + if (yych != 'P')
|
| 9511 | + goto yy577;
|
| 9512 | + }
|
| 9513 | + } else {
|
| 9514 | + if (yych <= 'o') {
|
| 9515 | + if (yych <= 'S')
|
| 9516 | + goto yy591;
|
| 9517 | + goto yy577;
|
| 9518 | + } else {
|
| 9519 | + if (yych <= 'p')
|
| 9520 | + goto yy590;
|
| 9521 | + if (yych <= 'r')
|
| 9522 | + goto yy577;
|
| 9523 | + goto yy591;
|
| 9524 | + }
|
| 9525 | + }
|
| 9526 | + } else {
|
| 9527 | + if (yych <= 0xEC) {
|
| 9528 | + if (yych <= 0xC1) {
|
| 9529 | + if (yych <= 0x7F)
|
| 9530 | + goto yy577;
|
| 9531 | + goto yy579;
|
| 9532 | + } else {
|
| 9533 | + if (yych <= 0xDF)
|
| 9534 | + goto yy582;
|
| 9535 | + if (yych <= 0xE0)
|
| 9536 | + goto yy583;
|
| 9537 | + goto yy584;
|
| 9538 | + }
|
| 9539 | + } else {
|
| 9540 | + if (yych <= 0xF0) {
|
| 9541 | + if (yych <= 0xED)
|
| 9542 | + goto yy585;
|
| 9543 | + if (yych <= 0xEF)
|
| 9544 | + goto yy584;
|
| 9545 | + goto yy586;
|
| 9546 | + } else {
|
| 9547 | + if (yych <= 0xF3)
|
| 9548 | + goto yy587;
|
| 9549 | + if (yych <= 0xF4)
|
| 9550 | + goto yy588;
|
| 9551 | + goto yy579;
|
| 9552 | + }
|
| 9553 | + }
|
| 9554 | + }
|
| 9555 | + yy590:
|
| 9556 | + ++p;
|
| 9557 | + yych = *p;
|
| 9558 | + if (yybm[0 + yych] & 128) {
|
| 9559 | + goto yy580;
|
| 9560 | + }
|
| 9561 | + if (yych <= 0xC1) {
|
| 9562 | + if (yych <= 'R') {
|
| 9563 | + if (yych == '\n')
|
| 9564 | + goto yy579;
|
| 9565 | + if (yych <= 'Q')
|
| 9566 | + goto yy577;
|
| 9567 | + goto yy592;
|
| 9568 | + } else {
|
| 9569 | + if (yych == 'r')
|
| 9570 | + goto yy592;
|
| 9571 | + if (yych <= 0x7F)
|
| 9572 | + goto yy577;
|
| 9573 | + goto yy579;
|
| 9574 | + }
|
| 9575 | + } else {
|
| 9576 | + if (yych <= 0xED) {
|
| 9577 | + if (yych <= 0xDF)
|
| 9578 | + goto yy582;
|
| 9579 | + if (yych <= 0xE0)
|
| 9580 | + goto yy583;
|
| 9581 | + if (yych <= 0xEC)
|
| 9582 | + goto yy584;
|
| 9583 | + goto yy585;
|
| 9584 | + } else {
|
| 9585 | + if (yych <= 0xF0) {
|
| 9586 | + if (yych <= 0xEF)
|
| 9587 | + goto yy584;
|
| 9588 | + goto yy586;
|
| 9589 | + } else {
|
| 9590 | + if (yych <= 0xF3)
|
| 9591 | + goto yy587;
|
| 9592 | + if (yych <= 0xF4)
|
| 9593 | + goto yy588;
|
| 9594 | + goto yy579;
|
| 9595 | + }
|
| 9596 | + }
|
| 9597 | + }
|
| 9598 | + yy591:
|
| 9599 | + ++p;
|
| 9600 | + yych = *p;
|
| 9601 | + if (yybm[0 + yych] & 128) {
|
| 9602 | + goto yy580;
|
| 9603 | + }
|
| 9604 | + if (yych <= 't') {
|
| 9605 | + if (yych <= 'S') {
|
| 9606 | + if (yych <= '\n') {
|
| 9607 | + if (yych <= '\t')
|
| 9608 | + goto yy577;
|
| 9609 | + goto yy579;
|
| 9610 | + } else {
|
| 9611 | + if (yych == 'C')
|
| 9612 | + goto yy593;
|
| 9613 | + goto yy577;
|
| 9614 | + }
|
| 9615 | + } else {
|
| 9616 | + if (yych <= 'b') {
|
| 9617 | + if (yych <= 'T')
|
| 9618 | + goto yy594;
|
| 9619 | + goto yy577;
|
| 9620 | + } else {
|
| 9621 | + if (yych <= 'c')
|
| 9622 | + goto yy593;
|
| 9623 | + if (yych <= 's')
|
| 9624 | + goto yy577;
|
| 9625 | + goto yy594;
|
| 9626 | + }
|
| 9627 | + }
|
| 9628 | + } else {
|
| 9629 | + if (yych <= 0xEC) {
|
| 9630 | + if (yych <= 0xC1) {
|
| 9631 | + if (yych <= 0x7F)
|
| 9632 | + goto yy577;
|
| 9633 | + goto yy579;
|
| 9634 | + } else {
|
| 9635 | + if (yych <= 0xDF)
|
| 9636 | + goto yy582;
|
| 9637 | + if (yych <= 0xE0)
|
| 9638 | + goto yy583;
|
| 9639 | + goto yy584;
|
| 9640 | + }
|
| 9641 | + } else {
|
| 9642 | + if (yych <= 0xF0) {
|
| 9643 | + if (yych <= 0xED)
|
| 9644 | + goto yy585;
|
| 9645 | + if (yych <= 0xEF)
|
| 9646 | + goto yy584;
|
| 9647 | + goto yy586;
|
| 9648 | + } else {
|
| 9649 | + if (yych <= 0xF3)
|
| 9650 | + goto yy587;
|
| 9651 | + if (yych <= 0xF4)
|
| 9652 | + goto yy588;
|
| 9653 | + goto yy579;
|
| 9654 | + }
|
| 9655 | + }
|
| 9656 | + }
|
| 9657 | + yy592:
|
| 9658 | + ++p;
|
| 9659 | + yych = *p;
|
| 9660 | + if (yybm[0 + yych] & 128) {
|
| 9661 | + goto yy580;
|
| 9662 | + }
|
| 9663 | + if (yych <= 0xC1) {
|
| 9664 | + if (yych <= 'E') {
|
| 9665 | + if (yych == '\n')
|
| 9666 | + goto yy579;
|
| 9667 | + if (yych <= 'D')
|
| 9668 | + goto yy577;
|
| 9669 | + goto yy595;
|
| 9670 | + } else {
|
| 9671 | + if (yych == 'e')
|
| 9672 | + goto yy595;
|
| 9673 | + if (yych <= 0x7F)
|
| 9674 | + goto yy577;
|
| 9675 | + goto yy579;
|
| 9676 | + }
|
| 9677 | + } else {
|
| 9678 | + if (yych <= 0xED) {
|
| 9679 | + if (yych <= 0xDF)
|
| 9680 | + goto yy582;
|
| 9681 | + if (yych <= 0xE0)
|
| 9682 | + goto yy583;
|
| 9683 | + if (yych <= 0xEC)
|
| 9684 | + goto yy584;
|
| 9685 | + goto yy585;
|
| 9686 | + } else {
|
| 9687 | + if (yych <= 0xF0) {
|
| 9688 | + if (yych <= 0xEF)
|
| 9689 | + goto yy584;
|
| 9690 | + goto yy586;
|
| 9691 | + } else {
|
| 9692 | + if (yych <= 0xF3)
|
| 9693 | + goto yy587;
|
| 9694 | + if (yych <= 0xF4)
|
| 9695 | + goto yy588;
|
| 9696 | + goto yy579;
|
| 9697 | + }
|
| 9698 | + }
|
| 9699 | + }
|
| 9700 | + yy593:
|
| 9701 | + ++p;
|
| 9702 | + yych = *p;
|
| 9703 | + if (yybm[0 + yych] & 128) {
|
| 9704 | + goto yy580;
|
| 9705 | + }
|
| 9706 | + if (yych <= 0xC1) {
|
| 9707 | + if (yych <= 'R') {
|
| 9708 | + if (yych == '\n')
|
| 9709 | + goto yy579;
|
| 9710 | + if (yych <= 'Q')
|
| 9711 | + goto yy577;
|
| 9712 | + goto yy596;
|
| 9713 | + } else {
|
| 9714 | + if (yych == 'r')
|
| 9715 | + goto yy596;
|
| 9716 | + if (yych <= 0x7F)
|
| 9717 | + goto yy577;
|
| 9718 | + goto yy579;
|
| 9719 | + }
|
| 9720 | + } else {
|
| 9721 | + if (yych <= 0xED) {
|
| 9722 | + if (yych <= 0xDF)
|
| 9723 | + goto yy582;
|
| 9724 | + if (yych <= 0xE0)
|
| 9725 | + goto yy583;
|
| 9726 | + if (yych <= 0xEC)
|
| 9727 | + goto yy584;
|
| 9728 | + goto yy585;
|
| 9729 | + } else {
|
| 9730 | + if (yych <= 0xF0) {
|
| 9731 | + if (yych <= 0xEF)
|
| 9732 | + goto yy584;
|
| 9733 | + goto yy586;
|
| 9734 | + } else {
|
| 9735 | + if (yych <= 0xF3)
|
| 9736 | + goto yy587;
|
| 9737 | + if (yych <= 0xF4)
|
| 9738 | + goto yy588;
|
| 9739 | + goto yy579;
|
| 9740 | + }
|
| 9741 | + }
|
| 9742 | + }
|
| 9743 | + yy594:
|
| 9744 | + ++p;
|
| 9745 | + yych = *p;
|
| 9746 | + if (yybm[0 + yych] & 128) {
|
| 9747 | + goto yy580;
|
| 9748 | + }
|
| 9749 | + if (yych <= 0xC1) {
|
| 9750 | + if (yych <= 'Y') {
|
| 9751 | + if (yych == '\n')
|
| 9752 | + goto yy579;
|
| 9753 | + if (yych <= 'X')
|
| 9754 | + goto yy577;
|
| 9755 | + goto yy597;
|
| 9756 | + } else {
|
| 9757 | + if (yych == 'y')
|
| 9758 | + goto yy597;
|
| 9759 | + if (yych <= 0x7F)
|
| 9760 | + goto yy577;
|
| 9761 | + goto yy579;
|
| 9762 | + }
|
| 9763 | + } else {
|
| 9764 | + if (yych <= 0xED) {
|
| 9765 | + if (yych <= 0xDF)
|
| 9766 | + goto yy582;
|
| 9767 | + if (yych <= 0xE0)
|
| 9768 | + goto yy583;
|
| 9769 | + if (yych <= 0xEC)
|
| 9770 | + goto yy584;
|
| 9771 | + goto yy585;
|
| 9772 | + } else {
|
| 9773 | + if (yych <= 0xF0) {
|
| 9774 | + if (yych <= 0xEF)
|
| 9775 | + goto yy584;
|
| 9776 | + goto yy586;
|
| 9777 | + } else {
|
| 9778 | + if (yych <= 0xF3)
|
| 9779 | + goto yy587;
|
| 9780 | + if (yych <= 0xF4)
|
| 9781 | + goto yy588;
|
| 9782 | + goto yy579;
|
| 9783 | + }
|
| 9784 | + }
|
| 9785 | + }
|
| 9786 | + yy595:
|
| 9787 | + ++p;
|
| 9788 | + yych = *p;
|
| 9789 | + if (yybm[0 + yych] & 128) {
|
| 9790 | + goto yy580;
|
| 9791 | + }
|
| 9792 | + if (yych <= 0xDF) {
|
| 9793 | + if (yych <= '=') {
|
| 9794 | + if (yych == '\n')
|
| 9795 | + goto yy579;
|
| 9796 | + goto yy577;
|
| 9797 | + } else {
|
| 9798 | + if (yych <= '>')
|
| 9799 | + goto yy598;
|
| 9800 | + if (yych <= 0x7F)
|
| 9801 | + goto yy577;
|
| 9802 | + if (yych <= 0xC1)
|
| 9803 | + goto yy579;
|
| 9804 | + goto yy582;
|
| 9805 | + }
|
| 9806 | + } else {
|
| 9807 | + if (yych <= 0xEF) {
|
| 9808 | + if (yych <= 0xE0)
|
| 9809 | + goto yy583;
|
| 9810 | + if (yych == 0xED)
|
| 9811 | + goto yy585;
|
| 9812 | + goto yy584;
|
| 9813 | + } else {
|
| 9814 | + if (yych <= 0xF0)
|
| 9815 | + goto yy586;
|
| 9816 | + if (yych <= 0xF3)
|
| 9817 | + goto yy587;
|
| 9818 | + if (yych <= 0xF4)
|
| 9819 | + goto yy588;
|
| 9820 | + goto yy579;
|
| 9821 | + }
|
| 9822 | + }
|
| 9823 | + yy596:
|
| 9824 | + ++p;
|
| 9825 | + yych = *p;
|
| 9826 | + if (yybm[0 + yych] & 128) {
|
| 9827 | + goto yy580;
|
| 9828 | + }
|
| 9829 | + if (yych <= 0xC1) {
|
| 9830 | + if (yych <= 'I') {
|
| 9831 | + if (yych == '\n')
|
| 9832 | + goto yy579;
|
| 9833 | + if (yych <= 'H')
|
| 9834 | + goto yy577;
|
| 9835 | + goto yy600;
|
| 9836 | + } else {
|
| 9837 | + if (yych == 'i')
|
| 9838 | + goto yy600;
|
| 9839 | + if (yych <= 0x7F)
|
| 9840 | + goto yy577;
|
| 9841 | + goto yy579;
|
| 9842 | + }
|
| 9843 | + } else {
|
| 9844 | + if (yych <= 0xED) {
|
| 9845 | + if (yych <= 0xDF)
|
| 9846 | + goto yy582;
|
| 9847 | + if (yych <= 0xE0)
|
| 9848 | + goto yy583;
|
| 9849 | + if (yych <= 0xEC)
|
| 9850 | + goto yy584;
|
| 9851 | + goto yy585;
|
| 9852 | + } else {
|
| 9853 | + if (yych <= 0xF0) {
|
| 9854 | + if (yych <= 0xEF)
|
| 9855 | + goto yy584;
|
| 9856 | + goto yy586;
|
| 9857 | + } else {
|
| 9858 | + if (yych <= 0xF3)
|
| 9859 | + goto yy587;
|
| 9860 | + if (yych <= 0xF4)
|
| 9861 | + goto yy588;
|
| 9862 | + goto yy579;
|
| 9863 | + }
|
| 9864 | + }
|
| 9865 | + }
|
| 9866 | + yy597:
|
| 9867 | + ++p;
|
| 9868 | + yych = *p;
|
| 9869 | + if (yybm[0 + yych] & 128) {
|
| 9870 | + goto yy580;
|
| 9871 | + }
|
| 9872 | + if (yych <= 0xC1) {
|
| 9873 | + if (yych <= 'L') {
|
| 9874 | + if (yych == '\n')
|
| 9875 | + goto yy579;
|
| 9876 | + if (yych <= 'K')
|
| 9877 | + goto yy577;
|
| 9878 | + goto yy592;
|
| 9879 | + } else {
|
| 9880 | + if (yych == 'l')
|
| 9881 | + goto yy592;
|
| 9882 | + if (yych <= 0x7F)
|
| 9883 | + goto yy577;
|
| 9884 | + goto yy579;
|
| 9885 | + }
|
| 9886 | + } else {
|
| 9887 | + if (yych <= 0xED) {
|
| 9888 | + if (yych <= 0xDF)
|
| 9889 | + goto yy582;
|
| 9890 | + if (yych <= 0xE0)
|
| 9891 | + goto yy583;
|
| 9892 | + if (yych <= 0xEC)
|
| 9893 | + goto yy584;
|
| 9894 | + goto yy585;
|
| 9895 | + } else {
|
| 9896 | + if (yych <= 0xF0) {
|
| 9897 | + if (yych <= 0xEF)
|
| 9898 | + goto yy584;
|
| 9899 | + goto yy586;
|
| 9900 | + } else {
|
| 9901 | + if (yych <= 0xF3)
|
| 9902 | + goto yy587;
|
| 9903 | + if (yych <= 0xF4)
|
| 9904 | + goto yy588;
|
| 9905 | + goto yy579;
|
| 9906 | + }
|
| 9907 | + }
|
| 9908 | + }
|
| 9909 | + yy598:
|
| 9910 | + yyaccept = 1;
|
| 9911 | + marker = ++p;
|
| 9912 | + yych = *p;
|
| 9913 | + if (yybm[0 + yych] & 64) {
|
| 9914 | + goto yy577;
|
| 9915 | + }
|
| 9916 | + if (yych <= 0xEC) {
|
| 9917 | + if (yych <= 0xC1) {
|
| 9918 | + if (yych <= '\n')
|
| 9919 | + goto yy599;
|
| 9920 | + if (yych <= '<')
|
| 9921 | + goto yy580;
|
| 9922 | + } else {
|
| 9923 | + if (yych <= 0xDF)
|
| 9924 | + goto yy582;
|
| 9925 | + if (yych <= 0xE0)
|
| 9926 | + goto yy583;
|
| 9927 | + goto yy584;
|
| 9928 | + }
|
| 9929 | + } else {
|
| 9930 | + if (yych <= 0xF0) {
|
| 9931 | + if (yych <= 0xED)
|
| 9932 | + goto yy585;
|
| 9933 | + if (yych <= 0xEF)
|
| 9934 | + goto yy584;
|
| 9935 | + goto yy586;
|
| 9936 | + } else {
|
| 9937 | + if (yych <= 0xF3)
|
| 9938 | + goto yy587;
|
| 9939 | + if (yych <= 0xF4)
|
| 9940 | + goto yy588;
|
| 9941 | + }
|
| 9942 | + }
|
| 9943 | + yy599 : { return (bufsize_t)(p - start); }
|
| 9944 | + yy600:
|
| 9945 | + ++p;
|
| 9946 | + yych = *p;
|
| 9947 | + if (yybm[0 + yych] & 128) {
|
| 9948 | + goto yy580;
|
| 9949 | + }
|
| 9950 | + if (yych <= 0xC1) {
|
| 9951 | + if (yych <= 'P') {
|
| 9952 | + if (yych == '\n')
|
| 9953 | + goto yy579;
|
| 9954 | + if (yych <= 'O')
|
| 9955 | + goto yy577;
|
| 9956 | + } else {
|
| 9957 | + if (yych == 'p')
|
| 9958 | + goto yy601;
|
| 9959 | + if (yych <= 0x7F)
|
| 9960 | + goto yy577;
|
| 9961 | + goto yy579;
|
| 9962 | + }
|
| 9963 | + } else {
|
| 9964 | + if (yych <= 0xED) {
|
| 9965 | + if (yych <= 0xDF)
|
| 9966 | + goto yy582;
|
| 9967 | + if (yych <= 0xE0)
|
| 9968 | + goto yy583;
|
| 9969 | + if (yych <= 0xEC)
|
| 9970 | + goto yy584;
|
| 9971 | + goto yy585;
|
| 9972 | + } else {
|
| 9973 | + if (yych <= 0xF0) {
|
| 9974 | + if (yych <= 0xEF)
|
| 9975 | + goto yy584;
|
| 9976 | + goto yy586;
|
| 9977 | + } else {
|
| 9978 | + if (yych <= 0xF3)
|
| 9979 | + goto yy587;
|
| 9980 | + if (yych <= 0xF4)
|
| 9981 | + goto yy588;
|
| 9982 | + goto yy579;
|
| 9983 | + }
|
| 9984 | + }
|
| 9985 | + }
|
| 9986 | + yy601:
|
| 9987 | + ++p;
|
| 9988 | + yych = *p;
|
| 9989 | + if (yybm[0 + yych] & 128) {
|
| 9990 | + goto yy580;
|
| 9991 | + }
|
| 9992 | + if (yych <= 0xC1) {
|
| 9993 | + if (yych <= 'T') {
|
| 9994 | + if (yych == '\n')
|
| 9995 | + goto yy579;
|
| 9996 | + if (yych <= 'S')
|
| 9997 | + goto yy577;
|
| 9998 | + goto yy595;
|
| 9999 | + } else {
|
| 10000 | + if (yych == 't')
|
| 10001 | + goto yy595;
|
| 10002 | + if (yych <= 0x7F)
|
| 10003 | + goto yy577;
|
| 10004 | + goto yy579;
|
| 10005 | + }
|
| 10006 | + } else {
|
| 10007 | + if (yych <= 0xED) {
|
| 10008 | + if (yych <= 0xDF)
|
| 10009 | + goto yy582;
|
| 10010 | + if (yych <= 0xE0)
|
| 10011 | + goto yy583;
|
| 10012 | + if (yych <= 0xEC)
|
| 10013 | + goto yy584;
|
| 10014 | + goto yy585;
|
| 10015 | + } else {
|
| 10016 | + if (yych <= 0xF0) {
|
| 10017 | + if (yych <= 0xEF)
|
| 10018 | + goto yy584;
|
| 10019 | + goto yy586;
|
| 10020 | + } else {
|
| 10021 | + if (yych <= 0xF3)
|
| 10022 | + goto yy587;
|
| 10023 | + if (yych <= 0xF4)
|
| 10024 | + goto yy588;
|
| 10025 | + goto yy579;
|
| 10026 | + }
|
| 10027 | + }
|
| 10028 | + }
|
| 10029 | + }
|
| 10030 | +}
|
| 10031 | +
|
| 10032 | +// Try to match an HTML block end line of type 2
|
| 10033 | +bufsize_t _scan_html_block_end_2(const unsigned char *p) {
|
| 10034 | + const unsigned char *marker = NULL;
|
| 10035 | + const unsigned char *start = p;
|
| 10036 | +
|
| 10037 | + {
|
| 10038 | + unsigned char yych;
|
| 10039 | + unsigned int yyaccept = 0;
|
| 10040 | + static const unsigned char yybm[] = {
|
| 10041 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64,
|
| 10042 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10043 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10044 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10045 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10046 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10047 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10048 | + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10049 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10050 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10051 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10052 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10053 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10054 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10055 | + 0, 0, 0, 0,
|
| 10056 | + };
|
| 10057 | + yych = *p;
|
| 10058 | + if (yych <= 0xDF) {
|
| 10059 | + if (yych <= ',') {
|
| 10060 | + if (yych == '\n')
|
| 10061 | + goto yy606;
|
| 10062 | + } else {
|
| 10063 | + if (yych <= '-')
|
| 10064 | + goto yy607;
|
| 10065 | + if (yych <= 0x7F)
|
| 10066 | + goto yy604;
|
| 10067 | + if (yych <= 0xC1)
|
| 10068 | + goto yy606;
|
| 10069 | + goto yy608;
|
| 10070 | + }
|
| 10071 | + } else {
|
| 10072 | + if (yych <= 0xEF) {
|
| 10073 | + if (yych <= 0xE0)
|
| 10074 | + goto yy609;
|
| 10075 | + if (yych == 0xED)
|
| 10076 | + goto yy611;
|
| 10077 | + goto yy610;
|
| 10078 | + } else {
|
| 10079 | + if (yych <= 0xF0)
|
| 10080 | + goto yy612;
|
| 10081 | + if (yych <= 0xF3)
|
| 10082 | + goto yy613;
|
| 10083 | + if (yych <= 0xF4)
|
| 10084 | + goto yy614;
|
| 10085 | + goto yy606;
|
| 10086 | + }
|
| 10087 | + }
|
| 10088 | + yy604:
|
| 10089 | + yyaccept = 0;
|
| 10090 | + yych = *(marker = ++p);
|
| 10091 | + if (yych <= 0x7F) {
|
| 10092 | + if (yych != '\n')
|
| 10093 | + goto yy616;
|
| 10094 | + } else {
|
| 10095 | + if (yych <= 0xC1)
|
| 10096 | + goto yy605;
|
| 10097 | + if (yych <= 0xF4)
|
| 10098 | + goto yy616;
|
| 10099 | + }
|
| 10100 | + yy605 : { return 0; }
|
| 10101 | + yy606:
|
| 10102 | + yych = *++p;
|
| 10103 | + goto yy605;
|
| 10104 | + yy607:
|
| 10105 | + yyaccept = 0;
|
| 10106 | + yych = *(marker = ++p);
|
| 10107 | + if (yybm[0 + yych] & 128) {
|
| 10108 | + goto yy626;
|
| 10109 | + }
|
| 10110 | + if (yych <= 0x7F) {
|
| 10111 | + if (yych == '\n')
|
| 10112 | + goto yy605;
|
| 10113 | + goto yy616;
|
| 10114 | + } else {
|
| 10115 | + if (yych <= 0xC1)
|
| 10116 | + goto yy605;
|
| 10117 | + if (yych <= 0xF4)
|
| 10118 | + goto yy616;
|
| 10119 | + goto yy605;
|
| 10120 | + }
|
| 10121 | + yy608:
|
| 10122 | + yyaccept = 0;
|
| 10123 | + yych = *(marker = ++p);
|
| 10124 | + if (yych <= 0x7F)
|
| 10125 | + goto yy605;
|
| 10126 | + if (yych <= 0xBF)
|
| 10127 | + goto yy615;
|
| 10128 | + goto yy605;
|
| 10129 | + yy609:
|
| 10130 | + yyaccept = 0;
|
| 10131 | + yych = *(marker = ++p);
|
| 10132 | + if (yych <= 0x9F)
|
| 10133 | + goto yy605;
|
| 10134 | + if (yych <= 0xBF)
|
| 10135 | + goto yy619;
|
| 10136 | + goto yy605;
|
| 10137 | + yy610:
|
| 10138 | + yyaccept = 0;
|
| 10139 | + yych = *(marker = ++p);
|
| 10140 | + if (yych <= 0x7F)
|
| 10141 | + goto yy605;
|
| 10142 | + if (yych <= 0xBF)
|
| 10143 | + goto yy619;
|
| 10144 | + goto yy605;
|
| 10145 | + yy611:
|
| 10146 | + yyaccept = 0;
|
| 10147 | + yych = *(marker = ++p);
|
| 10148 | + if (yych <= 0x7F)
|
| 10149 | + goto yy605;
|
| 10150 | + if (yych <= 0x9F)
|
| 10151 | + goto yy619;
|
| 10152 | + goto yy605;
|
| 10153 | + yy612:
|
| 10154 | + yyaccept = 0;
|
| 10155 | + yych = *(marker = ++p);
|
| 10156 | + if (yych <= 0x8F)
|
| 10157 | + goto yy605;
|
| 10158 | + if (yych <= 0xBF)
|
| 10159 | + goto yy621;
|
| 10160 | + goto yy605;
|
| 10161 | + yy613:
|
| 10162 | + yyaccept = 0;
|
| 10163 | + yych = *(marker = ++p);
|
| 10164 | + if (yych <= 0x7F)
|
| 10165 | + goto yy605;
|
| 10166 | + if (yych <= 0xBF)
|
| 10167 | + goto yy621;
|
| 10168 | + goto yy605;
|
| 10169 | + yy614:
|
| 10170 | + yyaccept = 0;
|
| 10171 | + yych = *(marker = ++p);
|
| 10172 | + if (yych <= 0x7F)
|
| 10173 | + goto yy605;
|
| 10174 | + if (yych <= 0x8F)
|
| 10175 | + goto yy621;
|
| 10176 | + goto yy605;
|
| 10177 | + yy615:
|
| 10178 | + ++p;
|
| 10179 | + yych = *p;
|
| 10180 | + yy616:
|
| 10181 | + if (yybm[0 + yych] & 64) {
|
| 10182 | + goto yy615;
|
| 10183 | + }
|
| 10184 | + if (yych <= 0xEC) {
|
| 10185 | + if (yych <= 0xC1) {
|
| 10186 | + if (yych <= '\n')
|
| 10187 | + goto yy617;
|
| 10188 | + if (yych <= '-')
|
| 10189 | + goto yy618;
|
| 10190 | + } else {
|
| 10191 | + if (yych <= 0xDF)
|
| 10192 | + goto yy619;
|
| 10193 | + if (yych <= 0xE0)
|
| 10194 | + goto yy620;
|
| 10195 | + goto yy621;
|
| 10196 | + }
|
| 10197 | + } else {
|
| 10198 | + if (yych <= 0xF0) {
|
| 10199 | + if (yych <= 0xED)
|
| 10200 | + goto yy622;
|
| 10201 | + if (yych <= 0xEF)
|
| 10202 | + goto yy621;
|
| 10203 | + goto yy623;
|
| 10204 | + } else {
|
| 10205 | + if (yych <= 0xF3)
|
| 10206 | + goto yy624;
|
| 10207 | + if (yych <= 0xF4)
|
| 10208 | + goto yy625;
|
| 10209 | + }
|
| 10210 | + }
|
| 10211 | + yy617:
|
| 10212 | + p = marker;
|
| 10213 | + if (yyaccept == 0) {
|
| 10214 | + goto yy605;
|
| 10215 | + } else {
|
| 10216 | + goto yy629;
|
| 10217 | + }
|
| 10218 | + yy618:
|
| 10219 | + ++p;
|
| 10220 | + yych = *p;
|
| 10221 | + if (yybm[0 + yych] & 64) {
|
| 10222 | + goto yy615;
|
| 10223 | + }
|
| 10224 | + if (yych <= 0xEC) {
|
| 10225 | + if (yych <= 0xC1) {
|
| 10226 | + if (yych <= '\n')
|
| 10227 | + goto yy617;
|
| 10228 | + if (yych <= '-')
|
| 10229 | + goto yy626;
|
| 10230 | + goto yy617;
|
| 10231 | + } else {
|
| 10232 | + if (yych <= 0xDF)
|
| 10233 | + goto yy619;
|
| 10234 | + if (yych <= 0xE0)
|
| 10235 | + goto yy620;
|
| 10236 | + goto yy621;
|
| 10237 | + }
|
| 10238 | + } else {
|
| 10239 | + if (yych <= 0xF0) {
|
| 10240 | + if (yych <= 0xED)
|
| 10241 | + goto yy622;
|
| 10242 | + if (yych <= 0xEF)
|
| 10243 | + goto yy621;
|
| 10244 | + goto yy623;
|
| 10245 | + } else {
|
| 10246 | + if (yych <= 0xF3)
|
| 10247 | + goto yy624;
|
| 10248 | + if (yych <= 0xF4)
|
| 10249 | + goto yy625;
|
| 10250 | + goto yy617;
|
| 10251 | + }
|
| 10252 | + }
|
| 10253 | + yy619:
|
| 10254 | + ++p;
|
| 10255 | + yych = *p;
|
| 10256 | + if (yych <= 0x7F)
|
| 10257 | + goto yy617;
|
| 10258 | + if (yych <= 0xBF)
|
| 10259 | + goto yy615;
|
| 10260 | + goto yy617;
|
| 10261 | + yy620:
|
| 10262 | + ++p;
|
| 10263 | + yych = *p;
|
| 10264 | + if (yych <= 0x9F)
|
| 10265 | + goto yy617;
|
| 10266 | + if (yych <= 0xBF)
|
| 10267 | + goto yy619;
|
| 10268 | + goto yy617;
|
| 10269 | + yy621:
|
| 10270 | + ++p;
|
| 10271 | + yych = *p;
|
| 10272 | + if (yych <= 0x7F)
|
| 10273 | + goto yy617;
|
| 10274 | + if (yych <= 0xBF)
|
| 10275 | + goto yy619;
|
| 10276 | + goto yy617;
|
| 10277 | + yy622:
|
| 10278 | + ++p;
|
| 10279 | + yych = *p;
|
| 10280 | + if (yych <= 0x7F)
|
| 10281 | + goto yy617;
|
| 10282 | + if (yych <= 0x9F)
|
| 10283 | + goto yy619;
|
| 10284 | + goto yy617;
|
| 10285 | + yy623:
|
| 10286 | + ++p;
|
| 10287 | + yych = *p;
|
| 10288 | + if (yych <= 0x8F)
|
| 10289 | + goto yy617;
|
| 10290 | + if (yych <= 0xBF)
|
| 10291 | + goto yy621;
|
| 10292 | + goto yy617;
|
| 10293 | + yy624:
|
| 10294 | + ++p;
|
| 10295 | + yych = *p;
|
| 10296 | + if (yych <= 0x7F)
|
| 10297 | + goto yy617;
|
| 10298 | + if (yych <= 0xBF)
|
| 10299 | + goto yy621;
|
| 10300 | + goto yy617;
|
| 10301 | + yy625:
|
| 10302 | + ++p;
|
| 10303 | + yych = *p;
|
| 10304 | + if (yych <= 0x7F)
|
| 10305 | + goto yy617;
|
| 10306 | + if (yych <= 0x8F)
|
| 10307 | + goto yy621;
|
| 10308 | + goto yy617;
|
| 10309 | + yy626:
|
| 10310 | + ++p;
|
| 10311 | + yych = *p;
|
| 10312 | + if (yybm[0 + yych] & 128) {
|
| 10313 | + goto yy626;
|
| 10314 | + }
|
| 10315 | + if (yych <= 0xDF) {
|
| 10316 | + if (yych <= '=') {
|
| 10317 | + if (yych == '\n')
|
| 10318 | + goto yy617;
|
| 10319 | + goto yy615;
|
| 10320 | + } else {
|
| 10321 | + if (yych <= '>')
|
| 10322 | + goto yy628;
|
| 10323 | + if (yych <= 0x7F)
|
| 10324 | + goto yy615;
|
| 10325 | + if (yych <= 0xC1)
|
| 10326 | + goto yy617;
|
| 10327 | + goto yy619;
|
| 10328 | + }
|
| 10329 | + } else {
|
| 10330 | + if (yych <= 0xEF) {
|
| 10331 | + if (yych <= 0xE0)
|
| 10332 | + goto yy620;
|
| 10333 | + if (yych == 0xED)
|
| 10334 | + goto yy622;
|
| 10335 | + goto yy621;
|
| 10336 | + } else {
|
| 10337 | + if (yych <= 0xF0)
|
| 10338 | + goto yy623;
|
| 10339 | + if (yych <= 0xF3)
|
| 10340 | + goto yy624;
|
| 10341 | + if (yych <= 0xF4)
|
| 10342 | + goto yy625;
|
| 10343 | + goto yy617;
|
| 10344 | + }
|
| 10345 | + }
|
| 10346 | + yy628:
|
| 10347 | + yyaccept = 1;
|
| 10348 | + marker = ++p;
|
| 10349 | + yych = *p;
|
| 10350 | + if (yybm[0 + yych] & 64) {
|
| 10351 | + goto yy615;
|
| 10352 | + }
|
| 10353 | + if (yych <= 0xEC) {
|
| 10354 | + if (yych <= 0xC1) {
|
| 10355 | + if (yych <= '\n')
|
| 10356 | + goto yy629;
|
| 10357 | + if (yych <= '-')
|
| 10358 | + goto yy618;
|
| 10359 | + } else {
|
| 10360 | + if (yych <= 0xDF)
|
| 10361 | + goto yy619;
|
| 10362 | + if (yych <= 0xE0)
|
| 10363 | + goto yy620;
|
| 10364 | + goto yy621;
|
| 10365 | + }
|
| 10366 | + } else {
|
| 10367 | + if (yych <= 0xF0) {
|
| 10368 | + if (yych <= 0xED)
|
| 10369 | + goto yy622;
|
| 10370 | + if (yych <= 0xEF)
|
| 10371 | + goto yy621;
|
| 10372 | + goto yy623;
|
| 10373 | + } else {
|
| 10374 | + if (yych <= 0xF3)
|
| 10375 | + goto yy624;
|
| 10376 | + if (yych <= 0xF4)
|
| 10377 | + goto yy625;
|
| 10378 | + }
|
| 10379 | + }
|
| 10380 | + yy629 : { return (bufsize_t)(p - start); }
|
| 10381 | + }
|
| 10382 | +}
|
| 10383 | +
|
| 10384 | +// Try to match an HTML block end line of type 3
|
| 10385 | +bufsize_t _scan_html_block_end_3(const unsigned char *p) {
|
| 10386 | + const unsigned char *marker = NULL;
|
| 10387 | + const unsigned char *start = p;
|
| 10388 | +
|
| 10389 | + {
|
| 10390 | + unsigned char yych;
|
| 10391 | + unsigned int yyaccept = 0;
|
| 10392 | + static const unsigned char yybm[] = {
|
| 10393 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64,
|
| 10394 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10395 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10396 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10397 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10398 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10399 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10400 | + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10401 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10402 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10403 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10404 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10405 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10406 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10407 | + 0, 0, 0, 0,
|
| 10408 | + };
|
| 10409 | + yych = *p;
|
| 10410 | + if (yych <= 0xDF) {
|
| 10411 | + if (yych <= '>') {
|
| 10412 | + if (yych == '\n')
|
| 10413 | + goto yy634;
|
| 10414 | + } else {
|
| 10415 | + if (yych <= '?')
|
| 10416 | + goto yy635;
|
| 10417 | + if (yych <= 0x7F)
|
| 10418 | + goto yy632;
|
| 10419 | + if (yych <= 0xC1)
|
| 10420 | + goto yy634;
|
| 10421 | + goto yy636;
|
| 10422 | + }
|
| 10423 | + } else {
|
| 10424 | + if (yych <= 0xEF) {
|
| 10425 | + if (yych <= 0xE0)
|
| 10426 | + goto yy637;
|
| 10427 | + if (yych == 0xED)
|
| 10428 | + goto yy639;
|
| 10429 | + goto yy638;
|
| 10430 | + } else {
|
| 10431 | + if (yych <= 0xF0)
|
| 10432 | + goto yy640;
|
| 10433 | + if (yych <= 0xF3)
|
| 10434 | + goto yy641;
|
| 10435 | + if (yych <= 0xF4)
|
| 10436 | + goto yy642;
|
| 10437 | + goto yy634;
|
| 10438 | + }
|
| 10439 | + }
|
| 10440 | + yy632:
|
| 10441 | + yyaccept = 0;
|
| 10442 | + yych = *(marker = ++p);
|
| 10443 | + if (yych <= 0x7F) {
|
| 10444 | + if (yych != '\n')
|
| 10445 | + goto yy644;
|
| 10446 | + } else {
|
| 10447 | + if (yych <= 0xC1)
|
| 10448 | + goto yy633;
|
| 10449 | + if (yych <= 0xF4)
|
| 10450 | + goto yy644;
|
| 10451 | + }
|
| 10452 | + yy633 : { return 0; }
|
| 10453 | + yy634:
|
| 10454 | + yych = *++p;
|
| 10455 | + goto yy633;
|
| 10456 | + yy635:
|
| 10457 | + yyaccept = 0;
|
| 10458 | + yych = *(marker = ++p);
|
| 10459 | + if (yych <= '>') {
|
| 10460 | + if (yych == '\n')
|
| 10461 | + goto yy633;
|
| 10462 | + if (yych <= '=')
|
| 10463 | + goto yy644;
|
| 10464 | + goto yy655;
|
| 10465 | + } else {
|
| 10466 | + if (yych <= 0x7F)
|
| 10467 | + goto yy644;
|
| 10468 | + if (yych <= 0xC1)
|
| 10469 | + goto yy633;
|
| 10470 | + if (yych <= 0xF4)
|
| 10471 | + goto yy644;
|
| 10472 | + goto yy633;
|
| 10473 | + }
|
| 10474 | + yy636:
|
| 10475 | + yyaccept = 0;
|
| 10476 | + yych = *(marker = ++p);
|
| 10477 | + if (yych <= 0x7F)
|
| 10478 | + goto yy633;
|
| 10479 | + if (yych <= 0xBF)
|
| 10480 | + goto yy643;
|
| 10481 | + goto yy633;
|
| 10482 | + yy637:
|
| 10483 | + yyaccept = 0;
|
| 10484 | + yych = *(marker = ++p);
|
| 10485 | + if (yych <= 0x9F)
|
| 10486 | + goto yy633;
|
| 10487 | + if (yych <= 0xBF)
|
| 10488 | + goto yy648;
|
| 10489 | + goto yy633;
|
| 10490 | + yy638:
|
| 10491 | + yyaccept = 0;
|
| 10492 | + yych = *(marker = ++p);
|
| 10493 | + if (yych <= 0x7F)
|
| 10494 | + goto yy633;
|
| 10495 | + if (yych <= 0xBF)
|
| 10496 | + goto yy648;
|
| 10497 | + goto yy633;
|
| 10498 | + yy639:
|
| 10499 | + yyaccept = 0;
|
| 10500 | + yych = *(marker = ++p);
|
| 10501 | + if (yych <= 0x7F)
|
| 10502 | + goto yy633;
|
| 10503 | + if (yych <= 0x9F)
|
| 10504 | + goto yy648;
|
| 10505 | + goto yy633;
|
| 10506 | + yy640:
|
| 10507 | + yyaccept = 0;
|
| 10508 | + yych = *(marker = ++p);
|
| 10509 | + if (yych <= 0x8F)
|
| 10510 | + goto yy633;
|
| 10511 | + if (yych <= 0xBF)
|
| 10512 | + goto yy650;
|
| 10513 | + goto yy633;
|
| 10514 | + yy641:
|
| 10515 | + yyaccept = 0;
|
| 10516 | + yych = *(marker = ++p);
|
| 10517 | + if (yych <= 0x7F)
|
| 10518 | + goto yy633;
|
| 10519 | + if (yych <= 0xBF)
|
| 10520 | + goto yy650;
|
| 10521 | + goto yy633;
|
| 10522 | + yy642:
|
| 10523 | + yyaccept = 0;
|
| 10524 | + yych = *(marker = ++p);
|
| 10525 | + if (yych <= 0x7F)
|
| 10526 | + goto yy633;
|
| 10527 | + if (yych <= 0x8F)
|
| 10528 | + goto yy650;
|
| 10529 | + goto yy633;
|
| 10530 | + yy643:
|
| 10531 | + ++p;
|
| 10532 | + yych = *p;
|
| 10533 | + yy644:
|
| 10534 | + if (yybm[0 + yych] & 64) {
|
| 10535 | + goto yy643;
|
| 10536 | + }
|
| 10537 | + if (yych <= 0xEC) {
|
| 10538 | + if (yych <= 0xC1) {
|
| 10539 | + if (yych <= '\n')
|
| 10540 | + goto yy645;
|
| 10541 | + if (yych <= '?')
|
| 10542 | + goto yy646;
|
| 10543 | + } else {
|
| 10544 | + if (yych <= 0xDF)
|
| 10545 | + goto yy648;
|
| 10546 | + if (yych <= 0xE0)
|
| 10547 | + goto yy649;
|
| 10548 | + goto yy650;
|
| 10549 | + }
|
| 10550 | + } else {
|
| 10551 | + if (yych <= 0xF0) {
|
| 10552 | + if (yych <= 0xED)
|
| 10553 | + goto yy651;
|
| 10554 | + if (yych <= 0xEF)
|
| 10555 | + goto yy650;
|
| 10556 | + goto yy652;
|
| 10557 | + } else {
|
| 10558 | + if (yych <= 0xF3)
|
| 10559 | + goto yy653;
|
| 10560 | + if (yych <= 0xF4)
|
| 10561 | + goto yy654;
|
| 10562 | + }
|
| 10563 | + }
|
| 10564 | + yy645:
|
| 10565 | + p = marker;
|
| 10566 | + if (yyaccept == 0) {
|
| 10567 | + goto yy633;
|
| 10568 | + } else {
|
| 10569 | + goto yy656;
|
| 10570 | + }
|
| 10571 | + yy646:
|
| 10572 | + ++p;
|
| 10573 | + yych = *p;
|
| 10574 | + if (yybm[0 + yych] & 128) {
|
| 10575 | + goto yy646;
|
| 10576 | + }
|
| 10577 | + if (yych <= 0xDF) {
|
| 10578 | + if (yych <= '=') {
|
| 10579 | + if (yych == '\n')
|
| 10580 | + goto yy645;
|
| 10581 | + goto yy643;
|
| 10582 | + } else {
|
| 10583 | + if (yych <= '>')
|
| 10584 | + goto yy655;
|
| 10585 | + if (yych <= 0x7F)
|
| 10586 | + goto yy643;
|
| 10587 | + if (yych <= 0xC1)
|
| 10588 | + goto yy645;
|
| 10589 | + }
|
| 10590 | + } else {
|
| 10591 | + if (yych <= 0xEF) {
|
| 10592 | + if (yych <= 0xE0)
|
| 10593 | + goto yy649;
|
| 10594 | + if (yych == 0xED)
|
| 10595 | + goto yy651;
|
| 10596 | + goto yy650;
|
| 10597 | + } else {
|
| 10598 | + if (yych <= 0xF0)
|
| 10599 | + goto yy652;
|
| 10600 | + if (yych <= 0xF3)
|
| 10601 | + goto yy653;
|
| 10602 | + if (yych <= 0xF4)
|
| 10603 | + goto yy654;
|
| 10604 | + goto yy645;
|
| 10605 | + }
|
| 10606 | + }
|
| 10607 | + yy648:
|
| 10608 | + ++p;
|
| 10609 | + yych = *p;
|
| 10610 | + if (yych <= 0x7F)
|
| 10611 | + goto yy645;
|
| 10612 | + if (yych <= 0xBF)
|
| 10613 | + goto yy643;
|
| 10614 | + goto yy645;
|
| 10615 | + yy649:
|
| 10616 | + ++p;
|
| 10617 | + yych = *p;
|
| 10618 | + if (yych <= 0x9F)
|
| 10619 | + goto yy645;
|
| 10620 | + if (yych <= 0xBF)
|
| 10621 | + goto yy648;
|
| 10622 | + goto yy645;
|
| 10623 | + yy650:
|
| 10624 | + ++p;
|
| 10625 | + yych = *p;
|
| 10626 | + if (yych <= 0x7F)
|
| 10627 | + goto yy645;
|
| 10628 | + if (yych <= 0xBF)
|
| 10629 | + goto yy648;
|
| 10630 | + goto yy645;
|
| 10631 | + yy651:
|
| 10632 | + ++p;
|
| 10633 | + yych = *p;
|
| 10634 | + if (yych <= 0x7F)
|
| 10635 | + goto yy645;
|
| 10636 | + if (yych <= 0x9F)
|
| 10637 | + goto yy648;
|
| 10638 | + goto yy645;
|
| 10639 | + yy652:
|
| 10640 | + ++p;
|
| 10641 | + yych = *p;
|
| 10642 | + if (yych <= 0x8F)
|
| 10643 | + goto yy645;
|
| 10644 | + if (yych <= 0xBF)
|
| 10645 | + goto yy650;
|
| 10646 | + goto yy645;
|
| 10647 | + yy653:
|
| 10648 | + ++p;
|
| 10649 | + yych = *p;
|
| 10650 | + if (yych <= 0x7F)
|
| 10651 | + goto yy645;
|
| 10652 | + if (yych <= 0xBF)
|
| 10653 | + goto yy650;
|
| 10654 | + goto yy645;
|
| 10655 | + yy654:
|
| 10656 | + ++p;
|
| 10657 | + yych = *p;
|
| 10658 | + if (yych <= 0x7F)
|
| 10659 | + goto yy645;
|
| 10660 | + if (yych <= 0x8F)
|
| 10661 | + goto yy650;
|
| 10662 | + goto yy645;
|
| 10663 | + yy655:
|
| 10664 | + yyaccept = 1;
|
| 10665 | + marker = ++p;
|
| 10666 | + yych = *p;
|
| 10667 | + if (yybm[0 + yych] & 64) {
|
| 10668 | + goto yy643;
|
| 10669 | + }
|
| 10670 | + if (yych <= 0xEC) {
|
| 10671 | + if (yych <= 0xC1) {
|
| 10672 | + if (yych <= '\n')
|
| 10673 | + goto yy656;
|
| 10674 | + if (yych <= '?')
|
| 10675 | + goto yy646;
|
| 10676 | + } else {
|
| 10677 | + if (yych <= 0xDF)
|
| 10678 | + goto yy648;
|
| 10679 | + if (yych <= 0xE0)
|
| 10680 | + goto yy649;
|
| 10681 | + goto yy650;
|
| 10682 | + }
|
| 10683 | + } else {
|
| 10684 | + if (yych <= 0xF0) {
|
| 10685 | + if (yych <= 0xED)
|
| 10686 | + goto yy651;
|
| 10687 | + if (yych <= 0xEF)
|
| 10688 | + goto yy650;
|
| 10689 | + goto yy652;
|
| 10690 | + } else {
|
| 10691 | + if (yych <= 0xF3)
|
| 10692 | + goto yy653;
|
| 10693 | + if (yych <= 0xF4)
|
| 10694 | + goto yy654;
|
| 10695 | + }
|
| 10696 | + }
|
| 10697 | + yy656 : { return (bufsize_t)(p - start); }
|
| 10698 | + }
|
| 10699 | +}
|
| 10700 | +
|
| 10701 | +// Try to match an HTML block end line of type 4
|
| 10702 | +bufsize_t _scan_html_block_end_4(const unsigned char *p) {
|
| 10703 | + const unsigned char *marker = NULL;
|
| 10704 | + const unsigned char *start = p;
|
| 10705 | +
|
| 10706 | + {
|
| 10707 | + unsigned char yych;
|
| 10708 | + unsigned int yyaccept = 0;
|
| 10709 | + static const unsigned char yybm[] = {
|
| 10710 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128,
|
| 10711 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10712 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10713 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10714 | + 128, 128, 128, 128, 128, 128, 64, 128, 128, 128, 128, 128, 128, 128,
|
| 10715 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10716 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10717 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10718 | + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
|
| 10719 | + 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10720 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10721 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10722 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10723 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10724 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10725 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10726 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10727 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10728 | + 0, 0, 0, 0,
|
| 10729 | + };
|
| 10730 | + yych = *p;
|
| 10731 | + if (yybm[0 + yych] & 64) {
|
| 10732 | + goto yy662;
|
| 10733 | + }
|
| 10734 | + if (yych <= 0xE0) {
|
| 10735 | + if (yych <= 0x7F) {
|
| 10736 | + if (yych == '\n')
|
| 10737 | + goto yy661;
|
| 10738 | + } else {
|
| 10739 | + if (yych <= 0xC1)
|
| 10740 | + goto yy661;
|
| 10741 | + if (yych <= 0xDF)
|
| 10742 | + goto yy665;
|
| 10743 | + goto yy666;
|
| 10744 | + }
|
| 10745 | + } else {
|
| 10746 | + if (yych <= 0xEF) {
|
| 10747 | + if (yych == 0xED)
|
| 10748 | + goto yy668;
|
| 10749 | + goto yy667;
|
| 10750 | + } else {
|
| 10751 | + if (yych <= 0xF0)
|
| 10752 | + goto yy669;
|
| 10753 | + if (yych <= 0xF3)
|
| 10754 | + goto yy670;
|
| 10755 | + if (yych <= 0xF4)
|
| 10756 | + goto yy671;
|
| 10757 | + goto yy661;
|
| 10758 | + }
|
| 10759 | + }
|
| 10760 | + yyaccept = 0;
|
| 10761 | + yych = *(marker = ++p);
|
| 10762 | + if (yych <= 0x7F) {
|
| 10763 | + if (yych != '\n')
|
| 10764 | + goto yy673;
|
| 10765 | + } else {
|
| 10766 | + if (yych <= 0xC1)
|
| 10767 | + goto yy660;
|
| 10768 | + if (yych <= 0xF4)
|
| 10769 | + goto yy673;
|
| 10770 | + }
|
| 10771 | + yy660 : { return 0; }
|
| 10772 | + yy661:
|
| 10773 | + yych = *++p;
|
| 10774 | + goto yy660;
|
| 10775 | + yy662:
|
| 10776 | + yyaccept = 1;
|
| 10777 | + marker = ++p;
|
| 10778 | + yych = *p;
|
| 10779 | + if (yybm[0 + yych] & 128) {
|
| 10780 | + goto yy672;
|
| 10781 | + }
|
| 10782 | + if (yych <= 0xEC) {
|
| 10783 | + if (yych <= 0xC1) {
|
| 10784 | + if (yych <= '\n')
|
| 10785 | + goto yy664;
|
| 10786 | + if (yych <= '>')
|
| 10787 | + goto yy662;
|
| 10788 | + } else {
|
| 10789 | + if (yych <= 0xDF)
|
| 10790 | + goto yy675;
|
| 10791 | + if (yych <= 0xE0)
|
| 10792 | + goto yy676;
|
| 10793 | + goto yy677;
|
| 10794 | + }
|
| 10795 | + } else {
|
| 10796 | + if (yych <= 0xF0) {
|
| 10797 | + if (yych <= 0xED)
|
| 10798 | + goto yy678;
|
| 10799 | + if (yych <= 0xEF)
|
| 10800 | + goto yy677;
|
| 10801 | + goto yy679;
|
| 10802 | + } else {
|
| 10803 | + if (yych <= 0xF3)
|
| 10804 | + goto yy680;
|
| 10805 | + if (yych <= 0xF4)
|
| 10806 | + goto yy681;
|
| 10807 | + }
|
| 10808 | + }
|
| 10809 | + yy664 : { return (bufsize_t)(p - start); }
|
| 10810 | + yy665:
|
| 10811 | + yyaccept = 0;
|
| 10812 | + yych = *(marker = ++p);
|
| 10813 | + if (yych <= 0x7F)
|
| 10814 | + goto yy660;
|
| 10815 | + if (yych <= 0xBF)
|
| 10816 | + goto yy672;
|
| 10817 | + goto yy660;
|
| 10818 | + yy666:
|
| 10819 | + yyaccept = 0;
|
| 10820 | + yych = *(marker = ++p);
|
| 10821 | + if (yych <= 0x9F)
|
| 10822 | + goto yy660;
|
| 10823 | + if (yych <= 0xBF)
|
| 10824 | + goto yy675;
|
| 10825 | + goto yy660;
|
| 10826 | + yy667:
|
| 10827 | + yyaccept = 0;
|
| 10828 | + yych = *(marker = ++p);
|
| 10829 | + if (yych <= 0x7F)
|
| 10830 | + goto yy660;
|
| 10831 | + if (yych <= 0xBF)
|
| 10832 | + goto yy675;
|
| 10833 | + goto yy660;
|
| 10834 | + yy668:
|
| 10835 | + yyaccept = 0;
|
| 10836 | + yych = *(marker = ++p);
|
| 10837 | + if (yych <= 0x7F)
|
| 10838 | + goto yy660;
|
| 10839 | + if (yych <= 0x9F)
|
| 10840 | + goto yy675;
|
| 10841 | + goto yy660;
|
| 10842 | + yy669:
|
| 10843 | + yyaccept = 0;
|
| 10844 | + yych = *(marker = ++p);
|
| 10845 | + if (yych <= 0x8F)
|
| 10846 | + goto yy660;
|
| 10847 | + if (yych <= 0xBF)
|
| 10848 | + goto yy677;
|
| 10849 | + goto yy660;
|
| 10850 | + yy670:
|
| 10851 | + yyaccept = 0;
|
| 10852 | + yych = *(marker = ++p);
|
| 10853 | + if (yych <= 0x7F)
|
| 10854 | + goto yy660;
|
| 10855 | + if (yych <= 0xBF)
|
| 10856 | + goto yy677;
|
| 10857 | + goto yy660;
|
| 10858 | + yy671:
|
| 10859 | + yyaccept = 0;
|
| 10860 | + yych = *(marker = ++p);
|
| 10861 | + if (yych <= 0x7F)
|
| 10862 | + goto yy660;
|
| 10863 | + if (yych <= 0x8F)
|
| 10864 | + goto yy677;
|
| 10865 | + goto yy660;
|
| 10866 | + yy672:
|
| 10867 | + ++p;
|
| 10868 | + yych = *p;
|
| 10869 | + yy673:
|
| 10870 | + if (yybm[0 + yych] & 128) {
|
| 10871 | + goto yy672;
|
| 10872 | + }
|
| 10873 | + if (yych <= 0xEC) {
|
| 10874 | + if (yych <= 0xC1) {
|
| 10875 | + if (yych <= '\n')
|
| 10876 | + goto yy674;
|
| 10877 | + if (yych <= '>')
|
| 10878 | + goto yy662;
|
| 10879 | + } else {
|
| 10880 | + if (yych <= 0xDF)
|
| 10881 | + goto yy675;
|
| 10882 | + if (yych <= 0xE0)
|
| 10883 | + goto yy676;
|
| 10884 | + goto yy677;
|
| 10885 | + }
|
| 10886 | + } else {
|
| 10887 | + if (yych <= 0xF0) {
|
| 10888 | + if (yych <= 0xED)
|
| 10889 | + goto yy678;
|
| 10890 | + if (yych <= 0xEF)
|
| 10891 | + goto yy677;
|
| 10892 | + goto yy679;
|
| 10893 | + } else {
|
| 10894 | + if (yych <= 0xF3)
|
| 10895 | + goto yy680;
|
| 10896 | + if (yych <= 0xF4)
|
| 10897 | + goto yy681;
|
| 10898 | + }
|
| 10899 | + }
|
| 10900 | + yy674:
|
| 10901 | + p = marker;
|
| 10902 | + if (yyaccept == 0) {
|
| 10903 | + goto yy660;
|
| 10904 | + } else {
|
| 10905 | + goto yy664;
|
| 10906 | + }
|
| 10907 | + yy675:
|
| 10908 | + ++p;
|
| 10909 | + yych = *p;
|
| 10910 | + if (yych <= 0x7F)
|
| 10911 | + goto yy674;
|
| 10912 | + if (yych <= 0xBF)
|
| 10913 | + goto yy672;
|
| 10914 | + goto yy674;
|
| 10915 | + yy676:
|
| 10916 | + ++p;
|
| 10917 | + yych = *p;
|
| 10918 | + if (yych <= 0x9F)
|
| 10919 | + goto yy674;
|
| 10920 | + if (yych <= 0xBF)
|
| 10921 | + goto yy675;
|
| 10922 | + goto yy674;
|
| 10923 | + yy677:
|
| 10924 | + ++p;
|
| 10925 | + yych = *p;
|
| 10926 | + if (yych <= 0x7F)
|
| 10927 | + goto yy674;
|
| 10928 | + if (yych <= 0xBF)
|
| 10929 | + goto yy675;
|
| 10930 | + goto yy674;
|
| 10931 | + yy678:
|
| 10932 | + ++p;
|
| 10933 | + yych = *p;
|
| 10934 | + if (yych <= 0x7F)
|
| 10935 | + goto yy674;
|
| 10936 | + if (yych <= 0x9F)
|
| 10937 | + goto yy675;
|
| 10938 | + goto yy674;
|
| 10939 | + yy679:
|
| 10940 | + ++p;
|
| 10941 | + yych = *p;
|
| 10942 | + if (yych <= 0x8F)
|
| 10943 | + goto yy674;
|
| 10944 | + if (yych <= 0xBF)
|
| 10945 | + goto yy677;
|
| 10946 | + goto yy674;
|
| 10947 | + yy680:
|
| 10948 | + ++p;
|
| 10949 | + yych = *p;
|
| 10950 | + if (yych <= 0x7F)
|
| 10951 | + goto yy674;
|
| 10952 | + if (yych <= 0xBF)
|
| 10953 | + goto yy677;
|
| 10954 | + goto yy674;
|
| 10955 | + yy681:
|
| 10956 | + ++p;
|
| 10957 | + yych = *p;
|
| 10958 | + if (yych <= 0x7F)
|
| 10959 | + goto yy674;
|
| 10960 | + if (yych <= 0x8F)
|
| 10961 | + goto yy677;
|
| 10962 | + goto yy674;
|
| 10963 | + }
|
| 10964 | +}
|
| 10965 | +
|
| 10966 | +// Try to match an HTML block end line of type 5
|
| 10967 | +bufsize_t _scan_html_block_end_5(const unsigned char *p) {
|
| 10968 | + const unsigned char *marker = NULL;
|
| 10969 | + const unsigned char *start = p;
|
| 10970 | +
|
| 10971 | + {
|
| 10972 | + unsigned char yych;
|
| 10973 | + unsigned int yyaccept = 0;
|
| 10974 | + static const unsigned char yybm[] = {
|
| 10975 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64,
|
| 10976 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10977 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10978 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10979 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10980 | + 64, 64, 64, 128, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10981 | + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
| 10982 | + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10983 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10984 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10985 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10986 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10987 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10988 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 10989 | + 0, 0, 0, 0,
|
| 10990 | + };
|
| 10991 | + yych = *p;
|
| 10992 | + if (yych <= 0xDF) {
|
| 10993 | + if (yych <= '\\') {
|
| 10994 | + if (yych == '\n')
|
| 10995 | + goto yy686;
|
| 10996 | + } else {
|
| 10997 | + if (yych <= ']')
|
| 10998 | + goto yy687;
|
| 10999 | + if (yych <= 0x7F)
|
| 11000 | + goto yy684;
|
| 11001 | + if (yych <= 0xC1)
|
| 11002 | + goto yy686;
|
| 11003 | + goto yy688;
|
| 11004 | + }
|
| 11005 | + } else {
|
| 11006 | + if (yych <= 0xEF) {
|
| 11007 | + if (yych <= 0xE0)
|
| 11008 | + goto yy689;
|
| 11009 | + if (yych == 0xED)
|
| 11010 | + goto yy691;
|
| 11011 | + goto yy690;
|
| 11012 | + } else {
|
| 11013 | + if (yych <= 0xF0)
|
| 11014 | + goto yy692;
|
| 11015 | + if (yych <= 0xF3)
|
| 11016 | + goto yy693;
|
| 11017 | + if (yych <= 0xF4)
|
| 11018 | + goto yy694;
|
| 11019 | + goto yy686;
|
| 11020 | + }
|
| 11021 | + }
|
| 11022 | + yy684:
|
| 11023 | + yyaccept = 0;
|
| 11024 | + yych = *(marker = ++p);
|
| 11025 | + if (yych <= 0x7F) {
|
| 11026 | + if (yych != '\n')
|
| 11027 | + goto yy696;
|
| 11028 | + } else {
|
| 11029 | + if (yych <= 0xC1)
|
| 11030 | + goto yy685;
|
| 11031 | + if (yych <= 0xF4)
|
| 11032 | + goto yy696;
|
| 11033 | + }
|
| 11034 | + yy685 : { return 0; }
|
| 11035 | + yy686:
|
| 11036 | + yych = *++p;
|
| 11037 | + goto yy685;
|
| 11038 | + yy687:
|
| 11039 | + yyaccept = 0;
|
| 11040 | + yych = *(marker = ++p);
|
| 11041 | + if (yybm[0 + yych] & 128) {
|
| 11042 | + goto yy706;
|
| 11043 | + }
|
| 11044 | + if (yych <= 0x7F) {
|
| 11045 | + if (yych == '\n')
|
| 11046 | + goto yy685;
|
| 11047 | + goto yy696;
|
| 11048 | + } else {
|
| 11049 | + if (yych <= 0xC1)
|
| 11050 | + goto yy685;
|
| 11051 | + if (yych <= 0xF4)
|
| 11052 | + goto yy696;
|
| 11053 | + goto yy685;
|
| 11054 | + }
|
| 11055 | + yy688:
|
| 11056 | + yyaccept = 0;
|
| 11057 | + yych = *(marker = ++p);
|
| 11058 | + if (yych <= 0x7F)
|
| 11059 | + goto yy685;
|
| 11060 | + if (yych <= 0xBF)
|
| 11061 | + goto yy695;
|
| 11062 | + goto yy685;
|
| 11063 | + yy689:
|
| 11064 | + yyaccept = 0;
|
| 11065 | + yych = *(marker = ++p);
|
| 11066 | + if (yych <= 0x9F)
|
| 11067 | + goto yy685;
|
| 11068 | + if (yych <= 0xBF)
|
| 11069 | + goto yy699;
|
| 11070 | + goto yy685;
|
| 11071 | + yy690:
|
| 11072 | + yyaccept = 0;
|
| 11073 | + yych = *(marker = ++p);
|
| 11074 | + if (yych <= 0x7F)
|
| 11075 | + goto yy685;
|
| 11076 | + if (yych <= 0xBF)
|
| 11077 | + goto yy699;
|
| 11078 | + goto yy685;
|
| 11079 | + yy691:
|
| 11080 | + yyaccept = 0;
|
| 11081 | + yych = *(marker = ++p);
|
| 11082 | + if (yych <= 0x7F)
|
| 11083 | + goto yy685;
|
| 11084 | + if (yych <= 0x9F)
|
| 11085 | + goto yy699;
|
| 11086 | + goto yy685;
|
| 11087 | + yy692:
|
| 11088 | + yyaccept = 0;
|
| 11089 | + yych = *(marker = ++p);
|
| 11090 | + if (yych <= 0x8F)
|
| 11091 | + goto yy685;
|
| 11092 | + if (yych <= 0xBF)
|
| 11093 | + goto yy701;
|
| 11094 | + goto yy685;
|
| 11095 | + yy693:
|
| 11096 | + yyaccept = 0;
|
| 11097 | + yych = *(marker = ++p);
|
| 11098 | + if (yych <= 0x7F)
|
| 11099 | + goto yy685;
|
| 11100 | + if (yych <= 0xBF)
|
| 11101 | + goto yy701;
|
| 11102 | + goto yy685;
|
| 11103 | + yy694:
|
| 11104 | + yyaccept = 0;
|
| 11105 | + yych = *(marker = ++p);
|
| 11106 | + if (yych <= 0x7F)
|
| 11107 | + goto yy685;
|
| 11108 | + if (yych <= 0x8F)
|
| 11109 | + goto yy701;
|
| 11110 | + goto yy685;
|
| 11111 | + yy695:
|
| 11112 | + ++p;
|
| 11113 | + yych = *p;
|
| 11114 | + yy696:
|
| 11115 | + if (yybm[0 + yych] & 64) {
|
| 11116 | + goto yy695;
|
| 11117 | + }
|
| 11118 | + if (yych <= 0xEC) {
|
| 11119 | + if (yych <= 0xC1) {
|
| 11120 | + if (yych <= '\n')
|
| 11121 | + goto yy697;
|
| 11122 | + if (yych <= ']')
|
| 11123 | + goto yy698;
|
| 11124 | + } else {
|
| 11125 | + if (yych <= 0xDF)
|
| 11126 | + goto yy699;
|
| 11127 | + if (yych <= 0xE0)
|
| 11128 | + goto yy700;
|
| 11129 | + goto yy701;
|
| 11130 | + }
|
| 11131 | + } else {
|
| 11132 | + if (yych <= 0xF0) {
|
| 11133 | + if (yych <= 0xED)
|
| 11134 | + goto yy702;
|
| 11135 | + if (yych <= 0xEF)
|
| 11136 | + goto yy701;
|
| 11137 | + goto yy703;
|
| 11138 | + } else {
|
| 11139 | + if (yych <= 0xF3)
|
| 11140 | + goto yy704;
|
| 11141 | + if (yych <= 0xF4)
|
| 11142 | + goto yy705;
|
| 11143 | + }
|
| 11144 | + }
|
| 11145 | + yy697:
|
| 11146 | + p = marker;
|
| 11147 | + if (yyaccept == 0) {
|
| 11148 | + goto yy685;
|
| 11149 | + } else {
|
| 11150 | + goto yy709;
|
| 11151 | + }
|
| 11152 | + yy698:
|
| 11153 | + ++p;
|
| 11154 | + yych = *p;
|
| 11155 | + if (yybm[0 + yych] & 64) {
|
| 11156 | + goto yy695;
|
| 11157 | + }
|
| 11158 | + if (yych <= 0xEC) {
|
| 11159 | + if (yych <= 0xC1) {
|
| 11160 | + if (yych <= '\n')
|
| 11161 | + goto yy697;
|
| 11162 | + if (yych <= ']')
|
| 11163 | + goto yy706;
|
| 11164 | + goto yy697;
|
| 11165 | + } else {
|
| 11166 | + if (yych <= 0xDF)
|
| 11167 | + goto yy699;
|
| 11168 | + if (yych <= 0xE0)
|
| 11169 | + goto yy700;
|
| 11170 | + goto yy701;
|
| 11171 | + }
|
| 11172 | + } else {
|
| 11173 | + if (yych <= 0xF0) {
|
| 11174 | + if (yych <= 0xED)
|
| 11175 | + goto yy702;
|
| 11176 | + if (yych <= 0xEF)
|
| 11177 | + goto yy701;
|
| 11178 | + goto yy703;
|
| 11179 | + } else {
|
| 11180 | + if (yych <= 0xF3)
|
| 11181 | + goto yy704;
|
| 11182 | + if (yych <= 0xF4)
|
| 11183 | + goto yy705;
|
| 11184 | + goto yy697;
|
| 11185 | + }
|
| 11186 | + }
|
| 11187 | + yy699:
|
| 11188 | + ++p;
|
| 11189 | + yych = *p;
|
| 11190 | + if (yych <= 0x7F)
|
| 11191 | + goto yy697;
|
| 11192 | + if (yych <= 0xBF)
|
| 11193 | + goto yy695;
|
| 11194 | + goto yy697;
|
| 11195 | + yy700:
|
| 11196 | + ++p;
|
| 11197 | + yych = *p;
|
| 11198 | + if (yych <= 0x9F)
|
| 11199 | + goto yy697;
|
| 11200 | + if (yych <= 0xBF)
|
| 11201 | + goto yy699;
|
| 11202 | + goto yy697;
|
| 11203 | + yy701:
|
| 11204 | + ++p;
|
| 11205 | + yych = *p;
|
| 11206 | + if (yych <= 0x7F)
|
| 11207 | + goto yy697;
|
| 11208 | + if (yych <= 0xBF)
|
| 11209 | + goto yy699;
|
| 11210 | + goto yy697;
|
| 11211 | + yy702:
|
| 11212 | + ++p;
|
| 11213 | + yych = *p;
|
| 11214 | + if (yych <= 0x7F)
|
| 11215 | + goto yy697;
|
| 11216 | + if (yych <= 0x9F)
|
| 11217 | + goto yy699;
|
| 11218 | + goto yy697;
|
| 11219 | + yy703:
|
| 11220 | + ++p;
|
| 11221 | + yych = *p;
|
| 11222 | + if (yych <= 0x8F)
|
| 11223 | + goto yy697;
|
| 11224 | + if (yych <= 0xBF)
|
| 11225 | + goto yy701;
|
| 11226 | + goto yy697;
|
| 11227 | + yy704:
|
| 11228 | + ++p;
|
| 11229 | + yych = *p;
|
| 11230 | + if (yych <= 0x7F)
|
| 11231 | + goto yy697;
|
| 11232 | + if (yych <= 0xBF)
|
| 11233 | + goto yy701;
|
| 11234 | + goto yy697;
|
| 11235 | + yy705:
|
| 11236 | + ++p;
|
| 11237 | + yych = *p;
|
| 11238 | + if (yych <= 0x7F)
|
| 11239 | + goto yy697;
|
| 11240 | + if (yych <= 0x8F)
|
| 11241 | + goto yy701;
|
| 11242 | + goto yy697;
|
| 11243 | + yy706:
|
| 11244 | + ++p;
|
| 11245 | + yych = *p;
|
| 11246 | + if (yybm[0 + yych] & 128) {
|
| 11247 | + goto yy706;
|
| 11248 | + }
|
| 11249 | + if (yych <= 0xDF) {
|
| 11250 | + if (yych <= '=') {
|
| 11251 | + if (yych == '\n')
|
| 11252 | + goto yy697;
|
| 11253 | + goto yy695;
|
| 11254 | + } else {
|
| 11255 | + if (yych <= '>')
|
| 11256 | + goto yy708;
|
| 11257 | + if (yych <= 0x7F)
|
| 11258 | + goto yy695;
|
| 11259 | + if (yych <= 0xC1)
|
| 11260 | + goto yy697;
|
| 11261 | + goto yy699;
|
| 11262 | + }
|
| 11263 | + } else {
|
| 11264 | + if (yych <= 0xEF) {
|
| 11265 | + if (yych <= 0xE0)
|
| 11266 | + goto yy700;
|
| 11267 | + if (yych == 0xED)
|
| 11268 | + goto yy702;
|
| 11269 | + goto yy701;
|
| 11270 | + } else {
|
| 11271 | + if (yych <= 0xF0)
|
| 11272 | + goto yy703;
|
| 11273 | + if (yych <= 0xF3)
|
| 11274 | + goto yy704;
|
| 11275 | + if (yych <= 0xF4)
|
| 11276 | + goto yy705;
|
| 11277 | + goto yy697;
|
| 11278 | + }
|
| 11279 | + }
|
| 11280 | + yy708:
|
| 11281 | + yyaccept = 1;
|
| 11282 | + marker = ++p;
|
| 11283 | + yych = *p;
|
| 11284 | + if (yybm[0 + yych] & 64) {
|
| 11285 | + goto yy695;
|
| 11286 | + }
|
| 11287 | + if (yych <= 0xEC) {
|
| 11288 | + if (yych <= 0xC1) {
|
| 11289 | + if (yych <= '\n')
|
| 11290 | + goto yy709;
|
| 11291 | + if (yych <= ']')
|
| 11292 | + goto yy698;
|
| 11293 | + } else {
|
| 11294 | + if (yych <= 0xDF)
|
| 11295 | + goto yy699;
|
| 11296 | + if (yych <= 0xE0)
|
| 11297 | + goto yy700;
|
| 11298 | + goto yy701;
|
| 11299 | + }
|
| 11300 | + } else {
|
| 11301 | + if (yych <= 0xF0) {
|
| 11302 | + if (yych <= 0xED)
|
| 11303 | + goto yy702;
|
| 11304 | + if (yych <= 0xEF)
|
| 11305 | + goto yy701;
|
| 11306 | + goto yy703;
|
| 11307 | + } else {
|
| 11308 | + if (yych <= 0xF3)
|
| 11309 | + goto yy704;
|
| 11310 | + if (yych <= 0xF4)
|
| 11311 | + goto yy705;
|
| 11312 | + }
|
| 11313 | + }
|
| 11314 | + yy709 : { return (bufsize_t)(p - start); }
|
| 11315 | + }
|
| 11316 | +}
|
| 11317 | +
|
| 11318 | +// Try to match a link title (in single quotes, in double quotes, or
|
| 11319 | +// in parentheses), returning number of chars matched. Allow one
|
| 11320 | +// level of internal nesting (quotes within quotes).
|
| 11321 | +bufsize_t _scan_link_title(const unsigned char *p) {
|
| 11322 | + const unsigned char *marker = NULL;
|
| 11323 | + const unsigned char *start = p;
|
| 11324 | +
|
| 11325 | + {
|
| 11326 | + unsigned char yych;
|
| 11327 | + unsigned int yyaccept = 0;
|
| 11328 | + static const unsigned char yybm[] = {
|
| 11329 | + 0, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11330 | + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11331 | + 208, 208, 208, 208, 208, 208, 192, 208, 208, 208, 208, 144, 208, 80,
|
| 11332 | + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11333 | + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11334 | + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11335 | + 208, 208, 208, 208, 208, 208, 208, 208, 32, 208, 208, 208, 208, 208,
|
| 11336 | + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11337 | + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
|
| 11338 | + 208, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11339 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11340 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11341 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11342 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11343 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11344 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11345 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11346 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11347 | + 0, 0, 0, 0,
|
| 11348 | + };
|
| 11349 | + yych = *p;
|
| 11350 | + if (yych <= '&') {
|
| 11351 | + if (yych == '"')
|
| 11352 | + goto yy714;
|
| 11353 | + } else {
|
| 11354 | + if (yych <= '\'')
|
| 11355 | + goto yy715;
|
| 11356 | + if (yych <= '(')
|
| 11357 | + goto yy716;
|
| 11358 | + }
|
| 11359 | + ++p;
|
| 11360 | + yy713 : { return 0; }
|
| 11361 | + yy714:
|
| 11362 | + yyaccept = 0;
|
| 11363 | + yych = *(marker = ++p);
|
| 11364 | + if (yych <= 0x00)
|
| 11365 | + goto yy713;
|
| 11366 | + if (yych <= 0x7F)
|
| 11367 | + goto yy718;
|
| 11368 | + if (yych <= 0xC1)
|
| 11369 | + goto yy713;
|
| 11370 | + if (yych <= 0xF4)
|
| 11371 | + goto yy718;
|
| 11372 | + goto yy713;
|
| 11373 | + yy715:
|
| 11374 | + yyaccept = 0;
|
| 11375 | + yych = *(marker = ++p);
|
| 11376 | + if (yych <= 0x00)
|
| 11377 | + goto yy713;
|
| 11378 | + if (yych <= 0x7F)
|
| 11379 | + goto yy732;
|
| 11380 | + if (yych <= 0xC1)
|
| 11381 | + goto yy713;
|
| 11382 | + if (yych <= 0xF4)
|
| 11383 | + goto yy732;
|
| 11384 | + goto yy713;
|
| 11385 | + yy716:
|
| 11386 | + yyaccept = 0;
|
| 11387 | + yych = *(marker = ++p);
|
| 11388 | + if (yych <= 0x00)
|
| 11389 | + goto yy713;
|
| 11390 | + if (yych <= 0x7F)
|
| 11391 | + goto yy745;
|
| 11392 | + if (yych <= 0xC1)
|
| 11393 | + goto yy713;
|
| 11394 | + if (yych <= 0xF4)
|
| 11395 | + goto yy745;
|
| 11396 | + goto yy713;
|
| 11397 | + yy717:
|
| 11398 | + ++p;
|
| 11399 | + yych = *p;
|
| 11400 | + yy718:
|
| 11401 | + if (yybm[0 + yych] & 16) {
|
| 11402 | + goto yy717;
|
| 11403 | + }
|
| 11404 | + if (yych <= 0xE0) {
|
| 11405 | + if (yych <= '\\') {
|
| 11406 | + if (yych <= 0x00)
|
| 11407 | + goto yy719;
|
| 11408 | + if (yych <= '"')
|
| 11409 | + goto yy720;
|
| 11410 | + goto yy722;
|
| 11411 | + } else {
|
| 11412 | + if (yych <= 0xC1)
|
| 11413 | + goto yy719;
|
| 11414 | + if (yych <= 0xDF)
|
| 11415 | + goto yy724;
|
| 11416 | + goto yy725;
|
| 11417 | + }
|
| 11418 | + } else {
|
| 11419 | + if (yych <= 0xEF) {
|
| 11420 | + if (yych == 0xED)
|
| 11421 | + goto yy727;
|
| 11422 | + goto yy726;
|
| 11423 | + } else {
|
| 11424 | + if (yych <= 0xF0)
|
| 11425 | + goto yy728;
|
| 11426 | + if (yych <= 0xF3)
|
| 11427 | + goto yy729;
|
| 11428 | + if (yych <= 0xF4)
|
| 11429 | + goto yy730;
|
| 11430 | + }
|
| 11431 | + }
|
| 11432 | + yy719:
|
| 11433 | + p = marker;
|
| 11434 | + if (yyaccept <= 1) {
|
| 11435 | + if (yyaccept == 0) {
|
| 11436 | + goto yy713;
|
| 11437 | + } else {
|
| 11438 | + goto yy721;
|
| 11439 | + }
|
| 11440 | + } else {
|
| 11441 | + if (yyaccept == 2) {
|
| 11442 | + goto yy734;
|
| 11443 | + } else {
|
| 11444 | + goto yy747;
|
| 11445 | + }
|
| 11446 | + }
|
| 11447 | + yy720:
|
| 11448 | + ++p;
|
| 11449 | + yy721 : { return (bufsize_t)(p - start); }
|
| 11450 | + yy722:
|
| 11451 | + ++p;
|
| 11452 | + yych = *p;
|
| 11453 | + if (yybm[0 + yych] & 16) {
|
| 11454 | + goto yy717;
|
| 11455 | + }
|
| 11456 | + if (yych <= 0xE0) {
|
| 11457 | + if (yych <= '\\') {
|
| 11458 | + if (yych <= 0x00)
|
| 11459 | + goto yy719;
|
| 11460 | + if (yych <= '"')
|
| 11461 | + goto yy757;
|
| 11462 | + goto yy722;
|
| 11463 | + } else {
|
| 11464 | + if (yych <= 0xC1)
|
| 11465 | + goto yy719;
|
| 11466 | + if (yych >= 0xE0)
|
| 11467 | + goto yy725;
|
| 11468 | + }
|
| 11469 | + } else {
|
| 11470 | + if (yych <= 0xEF) {
|
| 11471 | + if (yych == 0xED)
|
| 11472 | + goto yy727;
|
| 11473 | + goto yy726;
|
| 11474 | + } else {
|
| 11475 | + if (yych <= 0xF0)
|
| 11476 | + goto yy728;
|
| 11477 | + if (yych <= 0xF3)
|
| 11478 | + goto yy729;
|
| 11479 | + if (yych <= 0xF4)
|
| 11480 | + goto yy730;
|
| 11481 | + goto yy719;
|
| 11482 | + }
|
| 11483 | + }
|
| 11484 | + yy724:
|
| 11485 | + ++p;
|
| 11486 | + yych = *p;
|
| 11487 | + if (yych <= 0x7F)
|
| 11488 | + goto yy719;
|
| 11489 | + if (yych <= 0xBF)
|
| 11490 | + goto yy717;
|
| 11491 | + goto yy719;
|
| 11492 | + yy725:
|
| 11493 | + ++p;
|
| 11494 | + yych = *p;
|
| 11495 | + if (yych <= 0x9F)
|
| 11496 | + goto yy719;
|
| 11497 | + if (yych <= 0xBF)
|
| 11498 | + goto yy724;
|
| 11499 | + goto yy719;
|
| 11500 | + yy726:
|
| 11501 | + ++p;
|
| 11502 | + yych = *p;
|
| 11503 | + if (yych <= 0x7F)
|
| 11504 | + goto yy719;
|
| 11505 | + if (yych <= 0xBF)
|
| 11506 | + goto yy724;
|
| 11507 | + goto yy719;
|
| 11508 | + yy727:
|
| 11509 | + ++p;
|
| 11510 | + yych = *p;
|
| 11511 | + if (yych <= 0x7F)
|
| 11512 | + goto yy719;
|
| 11513 | + if (yych <= 0x9F)
|
| 11514 | + goto yy724;
|
| 11515 | + goto yy719;
|
| 11516 | + yy728:
|
| 11517 | + ++p;
|
| 11518 | + yych = *p;
|
| 11519 | + if (yych <= 0x8F)
|
| 11520 | + goto yy719;
|
| 11521 | + if (yych <= 0xBF)
|
| 11522 | + goto yy726;
|
| 11523 | + goto yy719;
|
| 11524 | + yy729:
|
| 11525 | + ++p;
|
| 11526 | + yych = *p;
|
| 11527 | + if (yych <= 0x7F)
|
| 11528 | + goto yy719;
|
| 11529 | + if (yych <= 0xBF)
|
| 11530 | + goto yy726;
|
| 11531 | + goto yy719;
|
| 11532 | + yy730:
|
| 11533 | + ++p;
|
| 11534 | + yych = *p;
|
| 11535 | + if (yych <= 0x7F)
|
| 11536 | + goto yy719;
|
| 11537 | + if (yych <= 0x8F)
|
| 11538 | + goto yy726;
|
| 11539 | + goto yy719;
|
| 11540 | + yy731:
|
| 11541 | + ++p;
|
| 11542 | + yych = *p;
|
| 11543 | + yy732:
|
| 11544 | + if (yybm[0 + yych] & 64) {
|
| 11545 | + goto yy731;
|
| 11546 | + }
|
| 11547 | + if (yych <= 0xE0) {
|
| 11548 | + if (yych <= '\\') {
|
| 11549 | + if (yych <= 0x00)
|
| 11550 | + goto yy719;
|
| 11551 | + if (yych >= '(')
|
| 11552 | + goto yy735;
|
| 11553 | + } else {
|
| 11554 | + if (yych <= 0xC1)
|
| 11555 | + goto yy719;
|
| 11556 | + if (yych <= 0xDF)
|
| 11557 | + goto yy737;
|
| 11558 | + goto yy738;
|
| 11559 | + }
|
| 11560 | + } else {
|
| 11561 | + if (yych <= 0xEF) {
|
| 11562 | + if (yych == 0xED)
|
| 11563 | + goto yy740;
|
| 11564 | + goto yy739;
|
| 11565 | + } else {
|
| 11566 | + if (yych <= 0xF0)
|
| 11567 | + goto yy741;
|
| 11568 | + if (yych <= 0xF3)
|
| 11569 | + goto yy742;
|
| 11570 | + if (yych <= 0xF4)
|
| 11571 | + goto yy743;
|
| 11572 | + goto yy719;
|
| 11573 | + }
|
| 11574 | + }
|
| 11575 | + yy733:
|
| 11576 | + ++p;
|
| 11577 | + yy734 : { return (bufsize_t)(p - start); }
|
| 11578 | + yy735:
|
| 11579 | + ++p;
|
| 11580 | + yych = *p;
|
| 11581 | + if (yybm[0 + yych] & 64) {
|
| 11582 | + goto yy731;
|
| 11583 | + }
|
| 11584 | + if (yych <= 0xE0) {
|
| 11585 | + if (yych <= '\\') {
|
| 11586 | + if (yych <= 0x00)
|
| 11587 | + goto yy719;
|
| 11588 | + if (yych <= '\'')
|
| 11589 | + goto yy758;
|
| 11590 | + goto yy735;
|
| 11591 | + } else {
|
| 11592 | + if (yych <= 0xC1)
|
| 11593 | + goto yy719;
|
| 11594 | + if (yych >= 0xE0)
|
| 11595 | + goto yy738;
|
| 11596 | + }
|
| 11597 | + } else {
|
| 11598 | + if (yych <= 0xEF) {
|
| 11599 | + if (yych == 0xED)
|
| 11600 | + goto yy740;
|
| 11601 | + goto yy739;
|
| 11602 | + } else {
|
| 11603 | + if (yych <= 0xF0)
|
| 11604 | + goto yy741;
|
| 11605 | + if (yych <= 0xF3)
|
| 11606 | + goto yy742;
|
| 11607 | + if (yych <= 0xF4)
|
| 11608 | + goto yy743;
|
| 11609 | + goto yy719;
|
| 11610 | + }
|
| 11611 | + }
|
| 11612 | + yy737:
|
| 11613 | + ++p;
|
| 11614 | + yych = *p;
|
| 11615 | + if (yych <= 0x7F)
|
| 11616 | + goto yy719;
|
| 11617 | + if (yych <= 0xBF)
|
| 11618 | + goto yy731;
|
| 11619 | + goto yy719;
|
| 11620 | + yy738:
|
| 11621 | + ++p;
|
| 11622 | + yych = *p;
|
| 11623 | + if (yych <= 0x9F)
|
| 11624 | + goto yy719;
|
| 11625 | + if (yych <= 0xBF)
|
| 11626 | + goto yy737;
|
| 11627 | + goto yy719;
|
| 11628 | + yy739:
|
| 11629 | + ++p;
|
| 11630 | + yych = *p;
|
| 11631 | + if (yych <= 0x7F)
|
| 11632 | + goto yy719;
|
| 11633 | + if (yych <= 0xBF)
|
| 11634 | + goto yy737;
|
| 11635 | + goto yy719;
|
| 11636 | + yy740:
|
| 11637 | + ++p;
|
| 11638 | + yych = *p;
|
| 11639 | + if (yych <= 0x7F)
|
| 11640 | + goto yy719;
|
| 11641 | + if (yych <= 0x9F)
|
| 11642 | + goto yy737;
|
| 11643 | + goto yy719;
|
| 11644 | + yy741:
|
| 11645 | + ++p;
|
| 11646 | + yych = *p;
|
| 11647 | + if (yych <= 0x8F)
|
| 11648 | + goto yy719;
|
| 11649 | + if (yych <= 0xBF)
|
| 11650 | + goto yy739;
|
| 11651 | + goto yy719;
|
| 11652 | + yy742:
|
| 11653 | + ++p;
|
| 11654 | + yych = *p;
|
| 11655 | + if (yych <= 0x7F)
|
| 11656 | + goto yy719;
|
| 11657 | + if (yych <= 0xBF)
|
| 11658 | + goto yy739;
|
| 11659 | + goto yy719;
|
| 11660 | + yy743:
|
| 11661 | + ++p;
|
| 11662 | + yych = *p;
|
| 11663 | + if (yych <= 0x7F)
|
| 11664 | + goto yy719;
|
| 11665 | + if (yych <= 0x8F)
|
| 11666 | + goto yy739;
|
| 11667 | + goto yy719;
|
| 11668 | + yy744:
|
| 11669 | + ++p;
|
| 11670 | + yych = *p;
|
| 11671 | + yy745:
|
| 11672 | + if (yybm[0 + yych] & 128) {
|
| 11673 | + goto yy744;
|
| 11674 | + }
|
| 11675 | + if (yych <= 0xE0) {
|
| 11676 | + if (yych <= '\\') {
|
| 11677 | + if (yych <= 0x00)
|
| 11678 | + goto yy719;
|
| 11679 | + if (yych >= '*')
|
| 11680 | + goto yy748;
|
| 11681 | + } else {
|
| 11682 | + if (yych <= 0xC1)
|
| 11683 | + goto yy719;
|
| 11684 | + if (yych <= 0xDF)
|
| 11685 | + goto yy750;
|
| 11686 | + goto yy751;
|
| 11687 | + }
|
| 11688 | + } else {
|
| 11689 | + if (yych <= 0xEF) {
|
| 11690 | + if (yych == 0xED)
|
| 11691 | + goto yy753;
|
| 11692 | + goto yy752;
|
| 11693 | + } else {
|
| 11694 | + if (yych <= 0xF0)
|
| 11695 | + goto yy754;
|
| 11696 | + if (yych <= 0xF3)
|
| 11697 | + goto yy755;
|
| 11698 | + if (yych <= 0xF4)
|
| 11699 | + goto yy756;
|
| 11700 | + goto yy719;
|
| 11701 | + }
|
| 11702 | + }
|
| 11703 | + yy746:
|
| 11704 | + ++p;
|
| 11705 | + yy747 : { return (bufsize_t)(p - start); }
|
| 11706 | + yy748:
|
| 11707 | + ++p;
|
| 11708 | + yych = *p;
|
| 11709 | + if (yybm[0 + yych] & 128) {
|
| 11710 | + goto yy744;
|
| 11711 | + }
|
| 11712 | + if (yych <= 0xE0) {
|
| 11713 | + if (yych <= '\\') {
|
| 11714 | + if (yych <= 0x00)
|
| 11715 | + goto yy719;
|
| 11716 | + if (yych <= ')')
|
| 11717 | + goto yy759;
|
| 11718 | + goto yy748;
|
| 11719 | + } else {
|
| 11720 | + if (yych <= 0xC1)
|
| 11721 | + goto yy719;
|
| 11722 | + if (yych >= 0xE0)
|
| 11723 | + goto yy751;
|
| 11724 | + }
|
| 11725 | + } else {
|
| 11726 | + if (yych <= 0xEF) {
|
| 11727 | + if (yych == 0xED)
|
| 11728 | + goto yy753;
|
| 11729 | + goto yy752;
|
| 11730 | + } else {
|
| 11731 | + if (yych <= 0xF0)
|
| 11732 | + goto yy754;
|
| 11733 | + if (yych <= 0xF3)
|
| 11734 | + goto yy755;
|
| 11735 | + if (yych <= 0xF4)
|
| 11736 | + goto yy756;
|
| 11737 | + goto yy719;
|
| 11738 | + }
|
| 11739 | + }
|
| 11740 | + yy750:
|
| 11741 | + ++p;
|
| 11742 | + yych = *p;
|
| 11743 | + if (yych <= 0x7F)
|
| 11744 | + goto yy719;
|
| 11745 | + if (yych <= 0xBF)
|
| 11746 | + goto yy744;
|
| 11747 | + goto yy719;
|
| 11748 | + yy751:
|
| 11749 | + ++p;
|
| 11750 | + yych = *p;
|
| 11751 | + if (yych <= 0x9F)
|
| 11752 | + goto yy719;
|
| 11753 | + if (yych <= 0xBF)
|
| 11754 | + goto yy750;
|
| 11755 | + goto yy719;
|
| 11756 | + yy752:
|
| 11757 | + ++p;
|
| 11758 | + yych = *p;
|
| 11759 | + if (yych <= 0x7F)
|
| 11760 | + goto yy719;
|
| 11761 | + if (yych <= 0xBF)
|
| 11762 | + goto yy750;
|
| 11763 | + goto yy719;
|
| 11764 | + yy753:
|
| 11765 | + ++p;
|
| 11766 | + yych = *p;
|
| 11767 | + if (yych <= 0x7F)
|
| 11768 | + goto yy719;
|
| 11769 | + if (yych <= 0x9F)
|
| 11770 | + goto yy750;
|
| 11771 | + goto yy719;
|
| 11772 | + yy754:
|
| 11773 | + ++p;
|
| 11774 | + yych = *p;
|
| 11775 | + if (yych <= 0x8F)
|
| 11776 | + goto yy719;
|
| 11777 | + if (yych <= 0xBF)
|
| 11778 | + goto yy752;
|
| 11779 | + goto yy719;
|
| 11780 | + yy755:
|
| 11781 | + ++p;
|
| 11782 | + yych = *p;
|
| 11783 | + if (yych <= 0x7F)
|
| 11784 | + goto yy719;
|
| 11785 | + if (yych <= 0xBF)
|
| 11786 | + goto yy752;
|
| 11787 | + goto yy719;
|
| 11788 | + yy756:
|
| 11789 | + ++p;
|
| 11790 | + yych = *p;
|
| 11791 | + if (yych <= 0x7F)
|
| 11792 | + goto yy719;
|
| 11793 | + if (yych <= 0x8F)
|
| 11794 | + goto yy752;
|
| 11795 | + goto yy719;
|
| 11796 | + yy757:
|
| 11797 | + yyaccept = 1;
|
| 11798 | + marker = ++p;
|
| 11799 | + yych = *p;
|
| 11800 | + if (yybm[0 + yych] & 16) {
|
| 11801 | + goto yy717;
|
| 11802 | + }
|
| 11803 | + if (yych <= 0xE0) {
|
| 11804 | + if (yych <= '\\') {
|
| 11805 | + if (yych <= 0x00)
|
| 11806 | + goto yy721;
|
| 11807 | + if (yych <= '"')
|
| 11808 | + goto yy720;
|
| 11809 | + goto yy722;
|
| 11810 | + } else {
|
| 11811 | + if (yych <= 0xC1)
|
| 11812 | + goto yy721;
|
| 11813 | + if (yych <= 0xDF)
|
| 11814 | + goto yy724;
|
| 11815 | + goto yy725;
|
| 11816 | + }
|
| 11817 | + } else {
|
| 11818 | + if (yych <= 0xEF) {
|
| 11819 | + if (yych == 0xED)
|
| 11820 | + goto yy727;
|
| 11821 | + goto yy726;
|
| 11822 | + } else {
|
| 11823 | + if (yych <= 0xF0)
|
| 11824 | + goto yy728;
|
| 11825 | + if (yych <= 0xF3)
|
| 11826 | + goto yy729;
|
| 11827 | + if (yych <= 0xF4)
|
| 11828 | + goto yy730;
|
| 11829 | + goto yy721;
|
| 11830 | + }
|
| 11831 | + }
|
| 11832 | + yy758:
|
| 11833 | + yyaccept = 2;
|
| 11834 | + marker = ++p;
|
| 11835 | + yych = *p;
|
| 11836 | + if (yybm[0 + yych] & 64) {
|
| 11837 | + goto yy731;
|
| 11838 | + }
|
| 11839 | + if (yych <= 0xE0) {
|
| 11840 | + if (yych <= '\\') {
|
| 11841 | + if (yych <= 0x00)
|
| 11842 | + goto yy734;
|
| 11843 | + if (yych <= '\'')
|
| 11844 | + goto yy733;
|
| 11845 | + goto yy735;
|
| 11846 | + } else {
|
| 11847 | + if (yych <= 0xC1)
|
| 11848 | + goto yy734;
|
| 11849 | + if (yych <= 0xDF)
|
| 11850 | + goto yy737;
|
| 11851 | + goto yy738;
|
| 11852 | + }
|
| 11853 | + } else {
|
| 11854 | + if (yych <= 0xEF) {
|
| 11855 | + if (yych == 0xED)
|
| 11856 | + goto yy740;
|
| 11857 | + goto yy739;
|
| 11858 | + } else {
|
| 11859 | + if (yych <= 0xF0)
|
| 11860 | + goto yy741;
|
| 11861 | + if (yych <= 0xF3)
|
| 11862 | + goto yy742;
|
| 11863 | + if (yych <= 0xF4)
|
| 11864 | + goto yy743;
|
| 11865 | + goto yy734;
|
| 11866 | + }
|
| 11867 | + }
|
| 11868 | + yy759:
|
| 11869 | + yyaccept = 3;
|
| 11870 | + marker = ++p;
|
| 11871 | + yych = *p;
|
| 11872 | + if (yybm[0 + yych] & 128) {
|
| 11873 | + goto yy744;
|
| 11874 | + }
|
| 11875 | + if (yych <= 0xE0) {
|
| 11876 | + if (yych <= '\\') {
|
| 11877 | + if (yych <= 0x00)
|
| 11878 | + goto yy747;
|
| 11879 | + if (yych <= ')')
|
| 11880 | + goto yy746;
|
| 11881 | + goto yy748;
|
| 11882 | + } else {
|
| 11883 | + if (yych <= 0xC1)
|
| 11884 | + goto yy747;
|
| 11885 | + if (yych <= 0xDF)
|
| 11886 | + goto yy750;
|
| 11887 | + goto yy751;
|
| 11888 | + }
|
| 11889 | + } else {
|
| 11890 | + if (yych <= 0xEF) {
|
| 11891 | + if (yych == 0xED)
|
| 11892 | + goto yy753;
|
| 11893 | + goto yy752;
|
| 11894 | + } else {
|
| 11895 | + if (yych <= 0xF0)
|
| 11896 | + goto yy754;
|
| 11897 | + if (yych <= 0xF3)
|
| 11898 | + goto yy755;
|
| 11899 | + if (yych <= 0xF4)
|
| 11900 | + goto yy756;
|
| 11901 | + goto yy747;
|
| 11902 | + }
|
| 11903 | + }
|
| 11904 | + }
|
| 11905 | +}
|
| 11906 | +
|
| 11907 | +// Match space characters, including newlines.
|
| 11908 | +bufsize_t _scan_spacechars(const unsigned char *p) {
|
| 11909 | + const unsigned char *start = p;
|
| 11910 | +
|
| 11911 | + {
|
| 11912 | + unsigned char yych;
|
| 11913 | + static const unsigned char yybm[] = {
|
| 11914 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
|
| 11915 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0,
|
| 11916 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11917 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11918 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11919 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11920 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11921 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11922 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11923 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11924 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11925 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11926 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11927 | + };
|
| 11928 | + yych = *p;
|
| 11929 | + if (yybm[0 + yych] & 128) {
|
| 11930 | + goto yy764;
|
| 11931 | + }
|
| 11932 | + ++p;
|
| 11933 | + { return 0; }
|
| 11934 | + yy764:
|
| 11935 | + ++p;
|
| 11936 | + yych = *p;
|
| 11937 | + if (yybm[0 + yych] & 128) {
|
| 11938 | + goto yy764;
|
| 11939 | + }
|
| 11940 | + { return (bufsize_t)(p - start); }
|
| 11941 | + }
|
| 11942 | +}
|
| 11943 | +
|
| 11944 | +// Match ATX heading start.
|
| 11945 | +bufsize_t _scan_atx_heading_start(const unsigned char *p) {
|
| 11946 | + const unsigned char *marker = NULL;
|
| 11947 | + const unsigned char *start = p;
|
| 11948 | +
|
| 11949 | + {
|
| 11950 | + unsigned char yych;
|
| 11951 | + static const unsigned char yybm[] = {
|
| 11952 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11953 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11954 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11955 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11956 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11957 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11958 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11959 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11960 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11961 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11962 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11963 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 11964 | + };
|
| 11965 | + yych = *p;
|
| 11966 | + if (yych == '#')
|
| 11967 | + goto yy771;
|
| 11968 | + ++p;
|
| 11969 | + yy770 : { return 0; }
|
| 11970 | + yy771:
|
| 11971 | + yych = *(marker = ++p);
|
| 11972 | + if (yybm[0 + yych] & 128) {
|
| 11973 | + goto yy772;
|
| 11974 | + }
|
| 11975 | + if (yych <= '\f') {
|
| 11976 | + if (yych <= 0x08)
|
| 11977 | + goto yy770;
|
| 11978 | + if (yych <= '\n')
|
| 11979 | + goto yy775;
|
| 11980 | + goto yy770;
|
| 11981 | + } else {
|
| 11982 | + if (yych <= '\r')
|
| 11983 | + goto yy775;
|
| 11984 | + if (yych == '#')
|
| 11985 | + goto yy776;
|
| 11986 | + goto yy770;
|
| 11987 | + }
|
| 11988 | + yy772:
|
| 11989 | + ++p;
|
| 11990 | + yych = *p;
|
| 11991 | + if (yybm[0 + yych] & 128) {
|
| 11992 | + goto yy772;
|
| 11993 | + }
|
| 11994 | + yy774 : { return (bufsize_t)(p - start); }
|
| 11995 | + yy775:
|
| 11996 | + yych = *++p;
|
| 11997 | + goto yy774;
|
| 11998 | + yy776:
|
| 11999 | + yych = *++p;
|
| 12000 | + if (yybm[0 + yych] & 128) {
|
| 12001 | + goto yy772;
|
| 12002 | + }
|
| 12003 | + if (yych <= '\f') {
|
| 12004 | + if (yych <= 0x08)
|
| 12005 | + goto yy777;
|
| 12006 | + if (yych <= '\n')
|
| 12007 | + goto yy775;
|
| 12008 | + } else {
|
| 12009 | + if (yych <= '\r')
|
| 12010 | + goto yy775;
|
| 12011 | + if (yych == '#')
|
| 12012 | + goto yy778;
|
| 12013 | + }
|
| 12014 | + yy777:
|
| 12015 | + p = marker;
|
| 12016 | + goto yy770;
|
| 12017 | + yy778:
|
| 12018 | + yych = *++p;
|
| 12019 | + if (yybm[0 + yych] & 128) {
|
| 12020 | + goto yy772;
|
| 12021 | + }
|
| 12022 | + if (yych <= '\f') {
|
| 12023 | + if (yych <= 0x08)
|
| 12024 | + goto yy777;
|
| 12025 | + if (yych <= '\n')
|
| 12026 | + goto yy775;
|
| 12027 | + goto yy777;
|
| 12028 | + } else {
|
| 12029 | + if (yych <= '\r')
|
| 12030 | + goto yy775;
|
| 12031 | + if (yych != '#')
|
| 12032 | + goto yy777;
|
| 12033 | + }
|
| 12034 | + yych = *++p;
|
| 12035 | + if (yybm[0 + yych] & 128) {
|
| 12036 | + goto yy772;
|
| 12037 | + }
|
| 12038 | + if (yych <= '\f') {
|
| 12039 | + if (yych <= 0x08)
|
| 12040 | + goto yy777;
|
| 12041 | + if (yych <= '\n')
|
| 12042 | + goto yy775;
|
| 12043 | + goto yy777;
|
| 12044 | + } else {
|
| 12045 | + if (yych <= '\r')
|
| 12046 | + goto yy775;
|
| 12047 | + if (yych != '#')
|
| 12048 | + goto yy777;
|
| 12049 | + }
|
| 12050 | + yych = *++p;
|
| 12051 | + if (yybm[0 + yych] & 128) {
|
| 12052 | + goto yy772;
|
| 12053 | + }
|
| 12054 | + if (yych <= '\f') {
|
| 12055 | + if (yych <= 0x08)
|
| 12056 | + goto yy777;
|
| 12057 | + if (yych <= '\n')
|
| 12058 | + goto yy775;
|
| 12059 | + goto yy777;
|
| 12060 | + } else {
|
| 12061 | + if (yych <= '\r')
|
| 12062 | + goto yy775;
|
| 12063 | + if (yych != '#')
|
| 12064 | + goto yy777;
|
| 12065 | + }
|
| 12066 | + ++p;
|
| 12067 | + if (yybm[0 + (yych = *p)] & 128) {
|
| 12068 | + goto yy772;
|
| 12069 | + }
|
| 12070 | + if (yych <= 0x08)
|
| 12071 | + goto yy777;
|
| 12072 | + if (yych <= '\n')
|
| 12073 | + goto yy775;
|
| 12074 | + if (yych == '\r')
|
| 12075 | + goto yy775;
|
| 12076 | + goto yy777;
|
| 12077 | + }
|
| 12078 | +}
|
| 12079 | +
|
| 12080 | +// Match setext heading line. Return 1 for level-1 heading,
|
| 12081 | +// 2 for level-2, 0 for no match.
|
| 12082 | +bufsize_t _scan_setext_heading_line(const unsigned char *p) {
|
| 12083 | + const unsigned char *marker = NULL;
|
| 12084 | +
|
| 12085 | + {
|
| 12086 | + unsigned char yych;
|
| 12087 | + static const unsigned char yybm[] = {
|
| 12088 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12089 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12090 | + 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
|
| 12091 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12092 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12093 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12094 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12095 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12096 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12097 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12098 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12099 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12100 | + };
|
| 12101 | + yych = *p;
|
| 12102 | + if (yych == '-')
|
| 12103 | + goto yy786;
|
| 12104 | + if (yych == '=')
|
| 12105 | + goto yy787;
|
| 12106 | + ++p;
|
| 12107 | + yy785 : { return 0; }
|
| 12108 | + yy786:
|
| 12109 | + yych = *(marker = ++p);
|
| 12110 | + if (yybm[0 + yych] & 64) {
|
| 12111 | + goto yy793;
|
| 12112 | + }
|
| 12113 | + if (yych <= '\f') {
|
| 12114 | + if (yych <= 0x08)
|
| 12115 | + goto yy785;
|
| 12116 | + if (yych <= '\n')
|
| 12117 | + goto yy789;
|
| 12118 | + goto yy785;
|
| 12119 | + } else {
|
| 12120 | + if (yych <= '\r')
|
| 12121 | + goto yy789;
|
| 12122 | + if (yych == ' ')
|
| 12123 | + goto yy789;
|
| 12124 | + goto yy785;
|
| 12125 | + }
|
| 12126 | + yy787:
|
| 12127 | + yych = *(marker = ++p);
|
| 12128 | + if (yybm[0 + yych] & 128) {
|
| 12129 | + goto yy799;
|
| 12130 | + }
|
| 12131 | + if (yych <= '\f') {
|
| 12132 | + if (yych <= 0x08)
|
| 12133 | + goto yy785;
|
| 12134 | + if (yych <= '\n')
|
| 12135 | + goto yy796;
|
| 12136 | + goto yy785;
|
| 12137 | + } else {
|
| 12138 | + if (yych <= '\r')
|
| 12139 | + goto yy796;
|
| 12140 | + if (yych == ' ')
|
| 12141 | + goto yy796;
|
| 12142 | + goto yy785;
|
| 12143 | + }
|
| 12144 | + yy788:
|
| 12145 | + ++p;
|
| 12146 | + yych = *p;
|
| 12147 | + yy789:
|
| 12148 | + if (yybm[0 + yych] & 32) {
|
| 12149 | + goto yy788;
|
| 12150 | + }
|
| 12151 | + if (yych <= 0x08)
|
| 12152 | + goto yy790;
|
| 12153 | + if (yych <= '\n')
|
| 12154 | + goto yy791;
|
| 12155 | + if (yych == '\r')
|
| 12156 | + goto yy791;
|
| 12157 | + yy790:
|
| 12158 | + p = marker;
|
| 12159 | + goto yy785;
|
| 12160 | + yy791:
|
| 12161 | + ++p;
|
| 12162 | + { return 2; }
|
| 12163 | + yy793:
|
| 12164 | + ++p;
|
| 12165 | + yych = *p;
|
| 12166 | + if (yybm[0 + yych] & 32) {
|
| 12167 | + goto yy788;
|
| 12168 | + }
|
| 12169 | + if (yych <= '\f') {
|
| 12170 | + if (yych <= 0x08)
|
| 12171 | + goto yy790;
|
| 12172 | + if (yych <= '\n')
|
| 12173 | + goto yy791;
|
| 12174 | + goto yy790;
|
| 12175 | + } else {
|
| 12176 | + if (yych <= '\r')
|
| 12177 | + goto yy791;
|
| 12178 | + if (yych == '-')
|
| 12179 | + goto yy793;
|
| 12180 | + goto yy790;
|
| 12181 | + }
|
| 12182 | + yy795:
|
| 12183 | + ++p;
|
| 12184 | + yych = *p;
|
| 12185 | + yy796:
|
| 12186 | + if (yych <= '\f') {
|
| 12187 | + if (yych <= 0x08)
|
| 12188 | + goto yy790;
|
| 12189 | + if (yych <= '\t')
|
| 12190 | + goto yy795;
|
| 12191 | + if (yych >= '\v')
|
| 12192 | + goto yy790;
|
| 12193 | + } else {
|
| 12194 | + if (yych <= '\r')
|
| 12195 | + goto yy797;
|
| 12196 | + if (yych == ' ')
|
| 12197 | + goto yy795;
|
| 12198 | + goto yy790;
|
| 12199 | + }
|
| 12200 | + yy797:
|
| 12201 | + ++p;
|
| 12202 | + { return 1; }
|
| 12203 | + yy799:
|
| 12204 | + ++p;
|
| 12205 | + yych = *p;
|
| 12206 | + if (yybm[0 + yych] & 128) {
|
| 12207 | + goto yy799;
|
| 12208 | + }
|
| 12209 | + if (yych <= '\f') {
|
| 12210 | + if (yych <= 0x08)
|
| 12211 | + goto yy790;
|
| 12212 | + if (yych <= '\t')
|
| 12213 | + goto yy795;
|
| 12214 | + if (yych <= '\n')
|
| 12215 | + goto yy797;
|
| 12216 | + goto yy790;
|
| 12217 | + } else {
|
| 12218 | + if (yych <= '\r')
|
| 12219 | + goto yy797;
|
| 12220 | + if (yych == ' ')
|
| 12221 | + goto yy795;
|
| 12222 | + goto yy790;
|
| 12223 | + }
|
| 12224 | + }
|
| 12225 | +}
|
| 12226 | +
|
| 12227 | +// Scan a thematic break line: "...three or more hyphens, asterisks,
|
| 12228 | +// or underscores on a line by themselves. If you wish, you may use
|
| 12229 | +// spaces between the hyphens or asterisks."
|
| 12230 | +bufsize_t _scan_thematic_break(const unsigned char *p) {
|
| 12231 | + const unsigned char *marker = NULL;
|
| 12232 | + const unsigned char *start = p;
|
| 12233 | +
|
| 12234 | + {
|
| 12235 | + unsigned char yych;
|
| 12236 | + static const unsigned char yybm[] = {
|
| 12237 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12238 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0,
|
| 12239 | + 0, 0, 32, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12240 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12241 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
|
| 12242 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12243 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12244 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12245 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12246 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12247 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12248 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12249 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12250 | + };
|
| 12251 | + yych = *p;
|
| 12252 | + if (yych <= ',') {
|
| 12253 | + if (yych == '*')
|
| 12254 | + goto yy805;
|
| 12255 | + } else {
|
| 12256 | + if (yych <= '-')
|
| 12257 | + goto yy806;
|
| 12258 | + if (yych == '_')
|
| 12259 | + goto yy807;
|
| 12260 | + }
|
| 12261 | + ++p;
|
| 12262 | + yy804 : { return 0; }
|
| 12263 | + yy805:
|
| 12264 | + yych = *(marker = ++p);
|
| 12265 | + if (yybm[0 + yych] & 16) {
|
| 12266 | + goto yy808;
|
| 12267 | + }
|
| 12268 | + if (yych == '*')
|
| 12269 | + goto yy811;
|
| 12270 | + goto yy804;
|
| 12271 | + yy806:
|
| 12272 | + yych = *(marker = ++p);
|
| 12273 | + if (yych <= 0x1F) {
|
| 12274 | + if (yych == '\t')
|
| 12275 | + goto yy813;
|
| 12276 | + goto yy804;
|
| 12277 | + } else {
|
| 12278 | + if (yych <= ' ')
|
| 12279 | + goto yy813;
|
| 12280 | + if (yych == '-')
|
| 12281 | + goto yy815;
|
| 12282 | + goto yy804;
|
| 12283 | + }
|
| 12284 | + yy807:
|
| 12285 | + yych = *(marker = ++p);
|
| 12286 | + if (yych <= 0x1F) {
|
| 12287 | + if (yych == '\t')
|
| 12288 | + goto yy817;
|
| 12289 | + goto yy804;
|
| 12290 | + } else {
|
| 12291 | + if (yych <= ' ')
|
| 12292 | + goto yy817;
|
| 12293 | + if (yych == '_')
|
| 12294 | + goto yy819;
|
| 12295 | + goto yy804;
|
| 12296 | + }
|
| 12297 | + yy808:
|
| 12298 | + ++p;
|
| 12299 | + yych = *p;
|
| 12300 | + if (yybm[0 + yych] & 16) {
|
| 12301 | + goto yy808;
|
| 12302 | + }
|
| 12303 | + if (yych == '*')
|
| 12304 | + goto yy811;
|
| 12305 | + yy810:
|
| 12306 | + p = marker;
|
| 12307 | + goto yy804;
|
| 12308 | + yy811:
|
| 12309 | + ++p;
|
| 12310 | + yych = *p;
|
| 12311 | + if (yych <= 0x1F) {
|
| 12312 | + if (yych == '\t')
|
| 12313 | + goto yy811;
|
| 12314 | + goto yy810;
|
| 12315 | + } else {
|
| 12316 | + if (yych <= ' ')
|
| 12317 | + goto yy811;
|
| 12318 | + if (yych == '*')
|
| 12319 | + goto yy821;
|
| 12320 | + goto yy810;
|
| 12321 | + }
|
| 12322 | + yy813:
|
| 12323 | + ++p;
|
| 12324 | + yych = *p;
|
| 12325 | + if (yych <= 0x1F) {
|
| 12326 | + if (yych == '\t')
|
| 12327 | + goto yy813;
|
| 12328 | + goto yy810;
|
| 12329 | + } else {
|
| 12330 | + if (yych <= ' ')
|
| 12331 | + goto yy813;
|
| 12332 | + if (yych != '-')
|
| 12333 | + goto yy810;
|
| 12334 | + }
|
| 12335 | + yy815:
|
| 12336 | + ++p;
|
| 12337 | + yych = *p;
|
| 12338 | + if (yych <= 0x1F) {
|
| 12339 | + if (yych == '\t')
|
| 12340 | + goto yy815;
|
| 12341 | + goto yy810;
|
| 12342 | + } else {
|
| 12343 | + if (yych <= ' ')
|
| 12344 | + goto yy815;
|
| 12345 | + if (yych == '-')
|
| 12346 | + goto yy823;
|
| 12347 | + goto yy810;
|
| 12348 | + }
|
| 12349 | + yy817:
|
| 12350 | + ++p;
|
| 12351 | + yych = *p;
|
| 12352 | + if (yych <= 0x1F) {
|
| 12353 | + if (yych == '\t')
|
| 12354 | + goto yy817;
|
| 12355 | + goto yy810;
|
| 12356 | + } else {
|
| 12357 | + if (yych <= ' ')
|
| 12358 | + goto yy817;
|
| 12359 | + if (yych != '_')
|
| 12360 | + goto yy810;
|
| 12361 | + }
|
| 12362 | + yy819:
|
| 12363 | + ++p;
|
| 12364 | + yych = *p;
|
| 12365 | + if (yych <= 0x1F) {
|
| 12366 | + if (yych == '\t')
|
| 12367 | + goto yy819;
|
| 12368 | + goto yy810;
|
| 12369 | + } else {
|
| 12370 | + if (yych <= ' ')
|
| 12371 | + goto yy819;
|
| 12372 | + if (yych == '_')
|
| 12373 | + goto yy825;
|
| 12374 | + goto yy810;
|
| 12375 | + }
|
| 12376 | + yy821:
|
| 12377 | + ++p;
|
| 12378 | + yych = *p;
|
| 12379 | + if (yybm[0 + yych] & 32) {
|
| 12380 | + goto yy821;
|
| 12381 | + }
|
| 12382 | + if (yych <= 0x08)
|
| 12383 | + goto yy810;
|
| 12384 | + if (yych <= '\n')
|
| 12385 | + goto yy827;
|
| 12386 | + if (yych == '\r')
|
| 12387 | + goto yy827;
|
| 12388 | + goto yy810;
|
| 12389 | + yy823:
|
| 12390 | + ++p;
|
| 12391 | + yych = *p;
|
| 12392 | + if (yybm[0 + yych] & 64) {
|
| 12393 | + goto yy823;
|
| 12394 | + }
|
| 12395 | + if (yych <= 0x08)
|
| 12396 | + goto yy810;
|
| 12397 | + if (yych <= '\n')
|
| 12398 | + goto yy829;
|
| 12399 | + if (yych == '\r')
|
| 12400 | + goto yy829;
|
| 12401 | + goto yy810;
|
| 12402 | + yy825:
|
| 12403 | + ++p;
|
| 12404 | + yych = *p;
|
| 12405 | + if (yybm[0 + yych] & 128) {
|
| 12406 | + goto yy825;
|
| 12407 | + }
|
| 12408 | + if (yych <= 0x08)
|
| 12409 | + goto yy810;
|
| 12410 | + if (yych <= '\n')
|
| 12411 | + goto yy831;
|
| 12412 | + if (yych == '\r')
|
| 12413 | + goto yy831;
|
| 12414 | + goto yy810;
|
| 12415 | + yy827:
|
| 12416 | + ++p;
|
| 12417 | + { return (bufsize_t)(p - start); }
|
| 12418 | + yy829:
|
| 12419 | + ++p;
|
| 12420 | + { return (bufsize_t)(p - start); }
|
| 12421 | + yy831:
|
| 12422 | + ++p;
|
| 12423 | + { return (bufsize_t)(p - start); }
|
| 12424 | + }
|
| 12425 | +}
|
| 12426 | +
|
| 12427 | +// Scan an opening code fence.
|
| 12428 | +bufsize_t _scan_open_code_fence(const unsigned char *p) {
|
| 12429 | + const unsigned char *marker = NULL;
|
| 12430 | + const unsigned char *start = p;
|
| 12431 | +
|
| 12432 | + {
|
| 12433 | + unsigned char yych;
|
| 12434 | + static const unsigned char yybm[] = {
|
| 12435 | + 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 192, 192, 0,
|
| 12436 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12437 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12438 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12439 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12440 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12441 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 144, 192,
|
| 12442 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12443 | + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
|
| 12444 | + 96, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12445 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12446 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12447 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12448 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12449 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12450 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12451 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12452 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12453 | + 0, 0, 0, 0,
|
| 12454 | + };
|
| 12455 | + yych = *p;
|
| 12456 | + if (yych == '`')
|
| 12457 | + goto yy837;
|
| 12458 | + if (yych == '~')
|
| 12459 | + goto yy838;
|
| 12460 | + ++p;
|
| 12461 | + yy836 : { return 0; }
|
| 12462 | + yy837:
|
| 12463 | + yych = *(marker = ++p);
|
| 12464 | + if (yych == '`')
|
| 12465 | + goto yy839;
|
| 12466 | + goto yy836;
|
| 12467 | + yy838:
|
| 12468 | + yych = *(marker = ++p);
|
| 12469 | + if (yych == '~')
|
| 12470 | + goto yy841;
|
| 12471 | + goto yy836;
|
| 12472 | + yy839:
|
| 12473 | + yych = *++p;
|
| 12474 | + if (yybm[0 + yych] & 16) {
|
| 12475 | + goto yy842;
|
| 12476 | + }
|
| 12477 | + yy840:
|
| 12478 | + p = marker;
|
| 12479 | + goto yy836;
|
| 12480 | + yy841:
|
| 12481 | + yych = *++p;
|
| 12482 | + if (yybm[0 + yych] & 32) {
|
| 12483 | + goto yy844;
|
| 12484 | + }
|
| 12485 | + goto yy840;
|
| 12486 | + yy842:
|
| 12487 | + ++p;
|
| 12488 | + yych = *p;
|
| 12489 | + marker = p;
|
| 12490 | + if (yybm[0 + yych] & 64) {
|
| 12491 | + goto yy846;
|
| 12492 | + }
|
| 12493 | + if (yych <= 0xE0) {
|
| 12494 | + if (yych <= '`') {
|
| 12495 | + if (yych <= 0x00)
|
| 12496 | + goto yy840;
|
| 12497 | + if (yych <= '\r')
|
| 12498 | + goto yy848;
|
| 12499 | + goto yy842;
|
| 12500 | + } else {
|
| 12501 | + if (yych <= 0xC1)
|
| 12502 | + goto yy840;
|
| 12503 | + if (yych <= 0xDF)
|
| 12504 | + goto yy850;
|
| 12505 | + goto yy851;
|
| 12506 | + }
|
| 12507 | + } else {
|
| 12508 | + if (yych <= 0xEF) {
|
| 12509 | + if (yych == 0xED)
|
| 12510 | + goto yy853;
|
| 12511 | + goto yy852;
|
| 12512 | + } else {
|
| 12513 | + if (yych <= 0xF0)
|
| 12514 | + goto yy854;
|
| 12515 | + if (yych <= 0xF3)
|
| 12516 | + goto yy855;
|
| 12517 | + if (yych <= 0xF4)
|
| 12518 | + goto yy856;
|
| 12519 | + goto yy840;
|
| 12520 | + }
|
| 12521 | + }
|
| 12522 | + yy844:
|
| 12523 | + ++p;
|
| 12524 | + yych = *p;
|
| 12525 | + marker = p;
|
| 12526 | + if (yybm[0 + yych] & 128) {
|
| 12527 | + goto yy857;
|
| 12528 | + }
|
| 12529 | + if (yych <= 0xE0) {
|
| 12530 | + if (yych <= '~') {
|
| 12531 | + if (yych <= 0x00)
|
| 12532 | + goto yy840;
|
| 12533 | + if (yych <= '\r')
|
| 12534 | + goto yy859;
|
| 12535 | + goto yy844;
|
| 12536 | + } else {
|
| 12537 | + if (yych <= 0xC1)
|
| 12538 | + goto yy840;
|
| 12539 | + if (yych <= 0xDF)
|
| 12540 | + goto yy861;
|
| 12541 | + goto yy862;
|
| 12542 | + }
|
| 12543 | + } else {
|
| 12544 | + if (yych <= 0xEF) {
|
| 12545 | + if (yych == 0xED)
|
| 12546 | + goto yy864;
|
| 12547 | + goto yy863;
|
| 12548 | + } else {
|
| 12549 | + if (yych <= 0xF0)
|
| 12550 | + goto yy865;
|
| 12551 | + if (yych <= 0xF3)
|
| 12552 | + goto yy866;
|
| 12553 | + if (yych <= 0xF4)
|
| 12554 | + goto yy867;
|
| 12555 | + goto yy840;
|
| 12556 | + }
|
| 12557 | + }
|
| 12558 | + yy846:
|
| 12559 | + ++p;
|
| 12560 | + yych = *p;
|
| 12561 | + if (yybm[0 + yych] & 64) {
|
| 12562 | + goto yy846;
|
| 12563 | + }
|
| 12564 | + if (yych <= 0xEC) {
|
| 12565 | + if (yych <= 0xC1) {
|
| 12566 | + if (yych <= 0x00)
|
| 12567 | + goto yy840;
|
| 12568 | + if (yych >= 0x0E)
|
| 12569 | + goto yy840;
|
| 12570 | + } else {
|
| 12571 | + if (yych <= 0xDF)
|
| 12572 | + goto yy850;
|
| 12573 | + if (yych <= 0xE0)
|
| 12574 | + goto yy851;
|
| 12575 | + goto yy852;
|
| 12576 | + }
|
| 12577 | + } else {
|
| 12578 | + if (yych <= 0xF0) {
|
| 12579 | + if (yych <= 0xED)
|
| 12580 | + goto yy853;
|
| 12581 | + if (yych <= 0xEF)
|
| 12582 | + goto yy852;
|
| 12583 | + goto yy854;
|
| 12584 | + } else {
|
| 12585 | + if (yych <= 0xF3)
|
| 12586 | + goto yy855;
|
| 12587 | + if (yych <= 0xF4)
|
| 12588 | + goto yy856;
|
| 12589 | + goto yy840;
|
| 12590 | + }
|
| 12591 | + }
|
| 12592 | + yy848:
|
| 12593 | + ++p;
|
| 12594 | + p = marker;
|
| 12595 | + { return (bufsize_t)(p - start); }
|
| 12596 | + yy850:
|
| 12597 | + ++p;
|
| 12598 | + yych = *p;
|
| 12599 | + if (yych <= 0x7F)
|
| 12600 | + goto yy840;
|
| 12601 | + if (yych <= 0xBF)
|
| 12602 | + goto yy846;
|
| 12603 | + goto yy840;
|
| 12604 | + yy851:
|
| 12605 | + ++p;
|
| 12606 | + yych = *p;
|
| 12607 | + if (yych <= 0x9F)
|
| 12608 | + goto yy840;
|
| 12609 | + if (yych <= 0xBF)
|
| 12610 | + goto yy850;
|
| 12611 | + goto yy840;
|
| 12612 | + yy852:
|
| 12613 | + ++p;
|
| 12614 | + yych = *p;
|
| 12615 | + if (yych <= 0x7F)
|
| 12616 | + goto yy840;
|
| 12617 | + if (yych <= 0xBF)
|
| 12618 | + goto yy850;
|
| 12619 | + goto yy840;
|
| 12620 | + yy853:
|
| 12621 | + ++p;
|
| 12622 | + yych = *p;
|
| 12623 | + if (yych <= 0x7F)
|
| 12624 | + goto yy840;
|
| 12625 | + if (yych <= 0x9F)
|
| 12626 | + goto yy850;
|
| 12627 | + goto yy840;
|
| 12628 | + yy854:
|
| 12629 | + ++p;
|
| 12630 | + yych = *p;
|
| 12631 | + if (yych <= 0x8F)
|
| 12632 | + goto yy840;
|
| 12633 | + if (yych <= 0xBF)
|
| 12634 | + goto yy852;
|
| 12635 | + goto yy840;
|
| 12636 | + yy855:
|
| 12637 | + ++p;
|
| 12638 | + yych = *p;
|
| 12639 | + if (yych <= 0x7F)
|
| 12640 | + goto yy840;
|
| 12641 | + if (yych <= 0xBF)
|
| 12642 | + goto yy852;
|
| 12643 | + goto yy840;
|
| 12644 | + yy856:
|
| 12645 | + ++p;
|
| 12646 | + yych = *p;
|
| 12647 | + if (yych <= 0x7F)
|
| 12648 | + goto yy840;
|
| 12649 | + if (yych <= 0x8F)
|
| 12650 | + goto yy852;
|
| 12651 | + goto yy840;
|
| 12652 | + yy857:
|
| 12653 | + ++p;
|
| 12654 | + yych = *p;
|
| 12655 | + if (yybm[0 + yych] & 128) {
|
| 12656 | + goto yy857;
|
| 12657 | + }
|
| 12658 | + if (yych <= 0xEC) {
|
| 12659 | + if (yych <= 0xC1) {
|
| 12660 | + if (yych <= 0x00)
|
| 12661 | + goto yy840;
|
| 12662 | + if (yych >= 0x0E)
|
| 12663 | + goto yy840;
|
| 12664 | + } else {
|
| 12665 | + if (yych <= 0xDF)
|
| 12666 | + goto yy861;
|
| 12667 | + if (yych <= 0xE0)
|
| 12668 | + goto yy862;
|
| 12669 | + goto yy863;
|
| 12670 | + }
|
| 12671 | + } else {
|
| 12672 | + if (yych <= 0xF0) {
|
| 12673 | + if (yych <= 0xED)
|
| 12674 | + goto yy864;
|
| 12675 | + if (yych <= 0xEF)
|
| 12676 | + goto yy863;
|
| 12677 | + goto yy865;
|
| 12678 | + } else {
|
| 12679 | + if (yych <= 0xF3)
|
| 12680 | + goto yy866;
|
| 12681 | + if (yych <= 0xF4)
|
| 12682 | + goto yy867;
|
| 12683 | + goto yy840;
|
| 12684 | + }
|
| 12685 | + }
|
| 12686 | + yy859:
|
| 12687 | + ++p;
|
| 12688 | + p = marker;
|
| 12689 | + { return (bufsize_t)(p - start); }
|
| 12690 | + yy861:
|
| 12691 | + ++p;
|
| 12692 | + yych = *p;
|
| 12693 | + if (yych <= 0x7F)
|
| 12694 | + goto yy840;
|
| 12695 | + if (yych <= 0xBF)
|
| 12696 | + goto yy857;
|
| 12697 | + goto yy840;
|
| 12698 | + yy862:
|
| 12699 | + ++p;
|
| 12700 | + yych = *p;
|
| 12701 | + if (yych <= 0x9F)
|
| 12702 | + goto yy840;
|
| 12703 | + if (yych <= 0xBF)
|
| 12704 | + goto yy861;
|
| 12705 | + goto yy840;
|
| 12706 | + yy863:
|
| 12707 | + ++p;
|
| 12708 | + yych = *p;
|
| 12709 | + if (yych <= 0x7F)
|
| 12710 | + goto yy840;
|
| 12711 | + if (yych <= 0xBF)
|
| 12712 | + goto yy861;
|
| 12713 | + goto yy840;
|
| 12714 | + yy864:
|
| 12715 | + ++p;
|
| 12716 | + yych = *p;
|
| 12717 | + if (yych <= 0x7F)
|
| 12718 | + goto yy840;
|
| 12719 | + if (yych <= 0x9F)
|
| 12720 | + goto yy861;
|
| 12721 | + goto yy840;
|
| 12722 | + yy865:
|
| 12723 | + ++p;
|
| 12724 | + yych = *p;
|
| 12725 | + if (yych <= 0x8F)
|
| 12726 | + goto yy840;
|
| 12727 | + if (yych <= 0xBF)
|
| 12728 | + goto yy863;
|
| 12729 | + goto yy840;
|
| 12730 | + yy866:
|
| 12731 | + ++p;
|
| 12732 | + yych = *p;
|
| 12733 | + if (yych <= 0x7F)
|
| 12734 | + goto yy840;
|
| 12735 | + if (yych <= 0xBF)
|
| 12736 | + goto yy863;
|
| 12737 | + goto yy840;
|
| 12738 | + yy867:
|
| 12739 | + ++p;
|
| 12740 | + yych = *p;
|
| 12741 | + if (yych <= 0x7F)
|
| 12742 | + goto yy840;
|
| 12743 | + if (yych <= 0x8F)
|
| 12744 | + goto yy863;
|
| 12745 | + goto yy840;
|
| 12746 | + }
|
| 12747 | +}
|
| 12748 | +
|
| 12749 | +// Scan a closing code fence with length at least len.
|
| 12750 | +bufsize_t _scan_close_code_fence(const unsigned char *p) {
|
| 12751 | + const unsigned char *marker = NULL;
|
| 12752 | + const unsigned char *start = p;
|
| 12753 | +
|
| 12754 | + {
|
| 12755 | + unsigned char yych;
|
| 12756 | + static const unsigned char yybm[] = {
|
| 12757 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12758 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12759 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12760 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12761 | + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12762 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
|
| 12763 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12764 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12765 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12766 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12767 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12768 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 12769 | + };
|
| 12770 | + yych = *p;
|
| 12771 | + if (yych == '`')
|
| 12772 | + goto yy872;
|
| 12773 | + if (yych == '~')
|
| 12774 | + goto yy873;
|
| 12775 | + ++p;
|
| 12776 | + yy871 : { return 0; }
|
| 12777 | + yy872:
|
| 12778 | + yych = *(marker = ++p);
|
| 12779 | + if (yych == '`')
|
| 12780 | + goto yy874;
|
| 12781 | + goto yy871;
|
| 12782 | + yy873:
|
| 12783 | + yych = *(marker = ++p);
|
| 12784 | + if (yych == '~')
|
| 12785 | + goto yy876;
|
| 12786 | + goto yy871;
|
| 12787 | + yy874:
|
| 12788 | + yych = *++p;
|
| 12789 | + if (yybm[0 + yych] & 32) {
|
| 12790 | + goto yy877;
|
| 12791 | + }
|
| 12792 | + yy875:
|
| 12793 | + p = marker;
|
| 12794 | + goto yy871;
|
| 12795 | + yy876:
|
| 12796 | + yych = *++p;
|
| 12797 | + if (yybm[0 + yych] & 64) {
|
| 12798 | + goto yy879;
|
| 12799 | + }
|
| 12800 | + goto yy875;
|
| 12801 | + yy877:
|
| 12802 | + ++p;
|
| 12803 | + yych = *p;
|
| 12804 | + marker = p;
|
| 12805 | + if (yybm[0 + yych] & 128) {
|
| 12806 | + goto yy881;
|
| 12807 | + }
|
| 12808 | + if (yych <= '\f') {
|
| 12809 | + if (yych <= 0x08)
|
| 12810 | + goto yy875;
|
| 12811 | + if (yych <= '\n')
|
| 12812 | + goto yy883;
|
| 12813 | + goto yy875;
|
| 12814 | + } else {
|
| 12815 | + if (yych <= '\r')
|
| 12816 | + goto yy883;
|
| 12817 | + if (yych == '`')
|
| 12818 | + goto yy877;
|
| 12819 | + goto yy875;
|
| 12820 | + }
|
| 12821 | + yy879:
|
| 12822 | + ++p;
|
| 12823 | + yych = *p;
|
| 12824 | + marker = p;
|
| 12825 | + if (yybm[0 + yych] & 64) {
|
| 12826 | + goto yy879;
|
| 12827 | + }
|
| 12828 | + if (yych <= '\f') {
|
| 12829 | + if (yych <= 0x08)
|
| 12830 | + goto yy875;
|
| 12831 | + if (yych <= '\t')
|
| 12832 | + goto yy885;
|
| 12833 | + if (yych <= '\n')
|
| 12834 | + goto yy887;
|
| 12835 | + goto yy875;
|
| 12836 | + } else {
|
| 12837 | + if (yych <= '\r')
|
| 12838 | + goto yy887;
|
| 12839 | + if (yych == ' ')
|
| 12840 | + goto yy885;
|
| 12841 | + goto yy875;
|
| 12842 | + }
|
| 12843 | + yy881:
|
| 12844 | + ++p;
|
| 12845 | + yych = *p;
|
| 12846 | + if (yybm[0 + yych] & 128) {
|
| 12847 | + goto yy881;
|
| 12848 | + }
|
| 12849 | + if (yych <= 0x08)
|
| 12850 | + goto yy875;
|
| 12851 | + if (yych <= '\n')
|
| 12852 | + goto yy883;
|
| 12853 | + if (yych != '\r')
|
| 12854 | + goto yy875;
|
| 12855 | + yy883:
|
| 12856 | + ++p;
|
| 12857 | + p = marker;
|
| 12858 | + { return (bufsize_t)(p - start); }
|
| 12859 | + yy885:
|
| 12860 | + ++p;
|
| 12861 | + yych = *p;
|
| 12862 | + if (yych <= '\f') {
|
| 12863 | + if (yych <= 0x08)
|
| 12864 | + goto yy875;
|
| 12865 | + if (yych <= '\t')
|
| 12866 | + goto yy885;
|
| 12867 | + if (yych >= '\v')
|
| 12868 | + goto yy875;
|
| 12869 | + } else {
|
| 12870 | + if (yych <= '\r')
|
| 12871 | + goto yy887;
|
| 12872 | + if (yych == ' ')
|
| 12873 | + goto yy885;
|
| 12874 | + goto yy875;
|
| 12875 | + }
|
| 12876 | + yy887:
|
| 12877 | + ++p;
|
| 12878 | + p = marker;
|
| 12879 | + { return (bufsize_t)(p - start); }
|
| 12880 | + }
|
| 12881 | +}
|
| 12882 | +
|
| 12883 | +// Scans an entity.
|
| 12884 | +// Returns number of chars matched.
|
| 12885 | +bufsize_t _scan_entity(const unsigned char *p) {
|
| 12886 | + const unsigned char *marker = NULL;
|
| 12887 | + const unsigned char *start = p;
|
| 12888 | +
|
| 12889 | + {
|
| 12890 | + unsigned char yych;
|
| 12891 | + yych = *p;
|
| 12892 | + if (yych == '&')
|
| 12893 | + goto yy893;
|
| 12894 | + ++p;
|
| 12895 | + yy892 : { return 0; }
|
| 12896 | + yy893:
|
| 12897 | + yych = *(marker = ++p);
|
| 12898 | + if (yych <= '@') {
|
| 12899 | + if (yych != '#')
|
| 12900 | + goto yy892;
|
| 12901 | + } else {
|
| 12902 | + if (yych <= 'Z')
|
| 12903 | + goto yy896;
|
| 12904 | + if (yych <= '`')
|
| 12905 | + goto yy892;
|
| 12906 | + if (yych <= 'z')
|
| 12907 | + goto yy896;
|
| 12908 | + goto yy892;
|
| 12909 | + }
|
| 12910 | + yych = *++p;
|
| 12911 | + if (yych <= 'W') {
|
| 12912 | + if (yych <= '/')
|
| 12913 | + goto yy895;
|
| 12914 | + if (yych <= '9')
|
| 12915 | + goto yy897;
|
| 12916 | + } else {
|
| 12917 | + if (yych <= 'X')
|
| 12918 | + goto yy898;
|
| 12919 | + if (yych == 'x')
|
| 12920 | + goto yy898;
|
| 12921 | + }
|
| 12922 | + yy895:
|
| 12923 | + p = marker;
|
| 12924 | + goto yy892;
|
| 12925 | + yy896:
|
| 12926 | + yych = *++p;
|
| 12927 | + if (yych <= '@') {
|
| 12928 | + if (yych <= '/')
|
| 12929 | + goto yy895;
|
| 12930 | + if (yych <= '9')
|
| 12931 | + goto yy899;
|
| 12932 | + goto yy895;
|
| 12933 | + } else {
|
| 12934 | + if (yych <= 'Z')
|
| 12935 | + goto yy899;
|
| 12936 | + if (yych <= '`')
|
| 12937 | + goto yy895;
|
| 12938 | + if (yych <= 'z')
|
| 12939 | + goto yy899;
|
| 12940 | + goto yy895;
|
| 12941 | + }
|
| 12942 | + yy897:
|
| 12943 | + yych = *++p;
|
| 12944 | + if (yych <= '/')
|
| 12945 | + goto yy895;
|
| 12946 | + if (yych <= '9')
|
| 12947 | + goto yy900;
|
| 12948 | + if (yych == ';')
|
| 12949 | + goto yy901;
|
| 12950 | + goto yy895;
|
| 12951 | + yy898:
|
| 12952 | + yych = *++p;
|
| 12953 | + if (yych <= '@') {
|
| 12954 | + if (yych <= '/')
|
| 12955 | + goto yy895;
|
| 12956 | + if (yych <= '9')
|
| 12957 | + goto yy903;
|
| 12958 | + goto yy895;
|
| 12959 | + } else {
|
| 12960 | + if (yych <= 'F')
|
| 12961 | + goto yy903;
|
| 12962 | + if (yych <= '`')
|
| 12963 | + goto yy895;
|
| 12964 | + if (yych <= 'f')
|
| 12965 | + goto yy903;
|
| 12966 | + goto yy895;
|
| 12967 | + }
|
| 12968 | + yy899:
|
| 12969 | + yych = *++p;
|
| 12970 | + if (yych <= ';') {
|
| 12971 | + if (yych <= '/')
|
| 12972 | + goto yy895;
|
| 12973 | + if (yych <= '9')
|
| 12974 | + goto yy904;
|
| 12975 | + if (yych <= ':')
|
| 12976 | + goto yy895;
|
| 12977 | + goto yy901;
|
| 12978 | + } else {
|
| 12979 | + if (yych <= 'Z') {
|
| 12980 | + if (yych <= '@')
|
| 12981 | + goto yy895;
|
| 12982 | + goto yy904;
|
| 12983 | + } else {
|
| 12984 | + if (yych <= '`')
|
| 12985 | + goto yy895;
|
| 12986 | + if (yych <= 'z')
|
| 12987 | + goto yy904;
|
| 12988 | + goto yy895;
|
| 12989 | + }
|
| 12990 | + }
|
| 12991 | + yy900:
|
| 12992 | + yych = *++p;
|
| 12993 | + if (yych <= '/')
|
| 12994 | + goto yy895;
|
| 12995 | + if (yych <= '9')
|
| 12996 | + goto yy905;
|
| 12997 | + if (yych != ';')
|
| 12998 | + goto yy895;
|
| 12999 | + yy901:
|
| 13000 | + ++p;
|
| 13001 | + { return (bufsize_t)(p - start); }
|
| 13002 | + yy903:
|
| 13003 | + yych = *++p;
|
| 13004 | + if (yych <= ';') {
|
| 13005 | + if (yych <= '/')
|
| 13006 | + goto yy895;
|
| 13007 | + if (yych <= '9')
|
| 13008 | + goto yy906;
|
| 13009 | + if (yych <= ':')
|
| 13010 | + goto yy895;
|
| 13011 | + goto yy901;
|
| 13012 | + } else {
|
| 13013 | + if (yych <= 'F') {
|
| 13014 | + if (yych <= '@')
|
| 13015 | + goto yy895;
|
| 13016 | + goto yy906;
|
| 13017 | + } else {
|
| 13018 | + if (yych <= '`')
|
| 13019 | + goto yy895;
|
| 13020 | + if (yych <= 'f')
|
| 13021 | + goto yy906;
|
| 13022 | + goto yy895;
|
| 13023 | + }
|
| 13024 | + }
|
| 13025 | + yy904:
|
| 13026 | + yych = *++p;
|
| 13027 | + if (yych <= ';') {
|
| 13028 | + if (yych <= '/')
|
| 13029 | + goto yy895;
|
| 13030 | + if (yych <= '9')
|
| 13031 | + goto yy907;
|
| 13032 | + if (yych <= ':')
|
| 13033 | + goto yy895;
|
| 13034 | + goto yy901;
|
| 13035 | + } else {
|
| 13036 | + if (yych <= 'Z') {
|
| 13037 | + if (yych <= '@')
|
| 13038 | + goto yy895;
|
| 13039 | + goto yy907;
|
| 13040 | + } else {
|
| 13041 | + if (yych <= '`')
|
| 13042 | + goto yy895;
|
| 13043 | + if (yych <= 'z')
|
| 13044 | + goto yy907;
|
| 13045 | + goto yy895;
|
| 13046 | + }
|
| 13047 | + }
|
| 13048 | + yy905:
|
| 13049 | + yych = *++p;
|
| 13050 | + if (yych <= '/')
|
| 13051 | + goto yy895;
|
| 13052 | + if (yych <= '9')
|
| 13053 | + goto yy908;
|
| 13054 | + if (yych == ';')
|
| 13055 | + goto yy901;
|
| 13056 | + goto yy895;
|
| 13057 | + yy906:
|
| 13058 | + yych = *++p;
|
| 13059 | + if (yych <= ';') {
|
| 13060 | + if (yych <= '/')
|
| 13061 | + goto yy895;
|
| 13062 | + if (yych <= '9')
|
| 13063 | + goto yy909;
|
| 13064 | + if (yych <= ':')
|
| 13065 | + goto yy895;
|
| 13066 | + goto yy901;
|
| 13067 | + } else {
|
| 13068 | + if (yych <= 'F') {
|
| 13069 | + if (yych <= '@')
|
| 13070 | + goto yy895;
|
| 13071 | + goto yy909;
|
| 13072 | + } else {
|
| 13073 | + if (yych <= '`')
|
| 13074 | + goto yy895;
|
| 13075 | + if (yych <= 'f')
|
| 13076 | + goto yy909;
|
| 13077 | + goto yy895;
|
| 13078 | + }
|
| 13079 | + }
|
| 13080 | + yy907:
|
| 13081 | + yych = *++p;
|
| 13082 | + if (yych <= ';') {
|
| 13083 | + if (yych <= '/')
|
| 13084 | + goto yy895;
|
| 13085 | + if (yych <= '9')
|
| 13086 | + goto yy910;
|
| 13087 | + if (yych <= ':')
|
| 13088 | + goto yy895;
|
| 13089 | + goto yy901;
|
| 13090 | + } else {
|
| 13091 | + if (yych <= 'Z') {
|
| 13092 | + if (yych <= '@')
|
| 13093 | + goto yy895;
|
| 13094 | + goto yy910;
|
| 13095 | + } else {
|
| 13096 | + if (yych <= '`')
|
| 13097 | + goto yy895;
|
| 13098 | + if (yych <= 'z')
|
| 13099 | + goto yy910;
|
| 13100 | + goto yy895;
|
| 13101 | + }
|
| 13102 | + }
|
| 13103 | + yy908:
|
| 13104 | + yych = *++p;
|
| 13105 | + if (yych <= '/')
|
| 13106 | + goto yy895;
|
| 13107 | + if (yych <= '9')
|
| 13108 | + goto yy911;
|
| 13109 | + if (yych == ';')
|
| 13110 | + goto yy901;
|
| 13111 | + goto yy895;
|
| 13112 | + yy909:
|
| 13113 | + yych = *++p;
|
| 13114 | + if (yych <= ';') {
|
| 13115 | + if (yych <= '/')
|
| 13116 | + goto yy895;
|
| 13117 | + if (yych <= '9')
|
| 13118 | + goto yy912;
|
| 13119 | + if (yych <= ':')
|
| 13120 | + goto yy895;
|
| 13121 | + goto yy901;
|
| 13122 | + } else {
|
| 13123 | + if (yych <= 'F') {
|
| 13124 | + if (yych <= '@')
|
| 13125 | + goto yy895;
|
| 13126 | + goto yy912;
|
| 13127 | + } else {
|
| 13128 | + if (yych <= '`')
|
| 13129 | + goto yy895;
|
| 13130 | + if (yych <= 'f')
|
| 13131 | + goto yy912;
|
| 13132 | + goto yy895;
|
| 13133 | + }
|
| 13134 | + }
|
| 13135 | + yy910:
|
| 13136 | + yych = *++p;
|
| 13137 | + if (yych <= ';') {
|
| 13138 | + if (yych <= '/')
|
| 13139 | + goto yy895;
|
| 13140 | + if (yych <= '9')
|
| 13141 | + goto yy913;
|
| 13142 | + if (yych <= ':')
|
| 13143 | + goto yy895;
|
| 13144 | + goto yy901;
|
| 13145 | + } else {
|
| 13146 | + if (yych <= 'Z') {
|
| 13147 | + if (yych <= '@')
|
| 13148 | + goto yy895;
|
| 13149 | + goto yy913;
|
| 13150 | + } else {
|
| 13151 | + if (yych <= '`')
|
| 13152 | + goto yy895;
|
| 13153 | + if (yych <= 'z')
|
| 13154 | + goto yy913;
|
| 13155 | + goto yy895;
|
| 13156 | + }
|
| 13157 | + }
|
| 13158 | + yy911:
|
| 13159 | + yych = *++p;
|
| 13160 | + if (yych <= '/')
|
| 13161 | + goto yy895;
|
| 13162 | + if (yych <= '9')
|
| 13163 | + goto yy914;
|
| 13164 | + if (yych == ';')
|
| 13165 | + goto yy901;
|
| 13166 | + goto yy895;
|
| 13167 | + yy912:
|
| 13168 | + yych = *++p;
|
| 13169 | + if (yych <= ';') {
|
| 13170 | + if (yych <= '/')
|
| 13171 | + goto yy895;
|
| 13172 | + if (yych <= '9')
|
| 13173 | + goto yy915;
|
| 13174 | + if (yych <= ':')
|
| 13175 | + goto yy895;
|
| 13176 | + goto yy901;
|
| 13177 | + } else {
|
| 13178 | + if (yych <= 'F') {
|
| 13179 | + if (yych <= '@')
|
| 13180 | + goto yy895;
|
| 13181 | + goto yy915;
|
| 13182 | + } else {
|
| 13183 | + if (yych <= '`')
|
| 13184 | + goto yy895;
|
| 13185 | + if (yych <= 'f')
|
| 13186 | + goto yy915;
|
| 13187 | + goto yy895;
|
| 13188 | + }
|
| 13189 | + }
|
| 13190 | + yy913:
|
| 13191 | + yych = *++p;
|
| 13192 | + if (yych <= ';') {
|
| 13193 | + if (yych <= '/')
|
| 13194 | + goto yy895;
|
| 13195 | + if (yych <= '9')
|
| 13196 | + goto yy916;
|
| 13197 | + if (yych <= ':')
|
| 13198 | + goto yy895;
|
| 13199 | + goto yy901;
|
| 13200 | + } else {
|
| 13201 | + if (yych <= 'Z') {
|
| 13202 | + if (yych <= '@')
|
| 13203 | + goto yy895;
|
| 13204 | + goto yy916;
|
| 13205 | + } else {
|
| 13206 | + if (yych <= '`')
|
| 13207 | + goto yy895;
|
| 13208 | + if (yych <= 'z')
|
| 13209 | + goto yy916;
|
| 13210 | + goto yy895;
|
| 13211 | + }
|
| 13212 | + }
|
| 13213 | + yy914:
|
| 13214 | + yych = *++p;
|
| 13215 | + if (yych <= '/')
|
| 13216 | + goto yy895;
|
| 13217 | + if (yych <= '9')
|
| 13218 | + goto yy917;
|
| 13219 | + if (yych == ';')
|
| 13220 | + goto yy901;
|
| 13221 | + goto yy895;
|
| 13222 | + yy915:
|
| 13223 | + yych = *++p;
|
| 13224 | + if (yych <= ';') {
|
| 13225 | + if (yych <= '/')
|
| 13226 | + goto yy895;
|
| 13227 | + if (yych <= '9')
|
| 13228 | + goto yy918;
|
| 13229 | + if (yych <= ':')
|
| 13230 | + goto yy895;
|
| 13231 | + goto yy901;
|
| 13232 | + } else {
|
| 13233 | + if (yych <= 'F') {
|
| 13234 | + if (yych <= '@')
|
| 13235 | + goto yy895;
|
| 13236 | + goto yy918;
|
| 13237 | + } else {
|
| 13238 | + if (yych <= '`')
|
| 13239 | + goto yy895;
|
| 13240 | + if (yych <= 'f')
|
| 13241 | + goto yy918;
|
| 13242 | + goto yy895;
|
| 13243 | + }
|
| 13244 | + }
|
| 13245 | + yy916:
|
| 13246 | + yych = *++p;
|
| 13247 | + if (yych <= ';') {
|
| 13248 | + if (yych <= '/')
|
| 13249 | + goto yy895;
|
| 13250 | + if (yych <= '9')
|
| 13251 | + goto yy919;
|
| 13252 | + if (yych <= ':')
|
| 13253 | + goto yy895;
|
| 13254 | + goto yy901;
|
| 13255 | + } else {
|
| 13256 | + if (yych <= 'Z') {
|
| 13257 | + if (yych <= '@')
|
| 13258 | + goto yy895;
|
| 13259 | + goto yy919;
|
| 13260 | + } else {
|
| 13261 | + if (yych <= '`')
|
| 13262 | + goto yy895;
|
| 13263 | + if (yych <= 'z')
|
| 13264 | + goto yy919;
|
| 13265 | + goto yy895;
|
| 13266 | + }
|
| 13267 | + }
|
| 13268 | + yy917:
|
| 13269 | + yych = *++p;
|
| 13270 | + if (yych <= '/')
|
| 13271 | + goto yy895;
|
| 13272 | + if (yych <= '9')
|
| 13273 | + goto yy920;
|
| 13274 | + if (yych == ';')
|
| 13275 | + goto yy901;
|
| 13276 | + goto yy895;
|
| 13277 | + yy918:
|
| 13278 | + yych = *++p;
|
| 13279 | + if (yych <= ';') {
|
| 13280 | + if (yych <= '/')
|
| 13281 | + goto yy895;
|
| 13282 | + if (yych <= '9')
|
| 13283 | + goto yy921;
|
| 13284 | + if (yych <= ':')
|
| 13285 | + goto yy895;
|
| 13286 | + goto yy901;
|
| 13287 | + } else {
|
| 13288 | + if (yych <= 'F') {
|
| 13289 | + if (yych <= '@')
|
| 13290 | + goto yy895;
|
| 13291 | + goto yy921;
|
| 13292 | + } else {
|
| 13293 | + if (yych <= '`')
|
| 13294 | + goto yy895;
|
| 13295 | + if (yych <= 'f')
|
| 13296 | + goto yy921;
|
| 13297 | + goto yy895;
|
| 13298 | + }
|
| 13299 | + }
|
| 13300 | + yy919:
|
| 13301 | + yych = *++p;
|
| 13302 | + if (yych <= ';') {
|
| 13303 | + if (yych <= '/')
|
| 13304 | + goto yy895;
|
| 13305 | + if (yych <= '9')
|
| 13306 | + goto yy922;
|
| 13307 | + if (yych <= ':')
|
| 13308 | + goto yy895;
|
| 13309 | + goto yy901;
|
| 13310 | + } else {
|
| 13311 | + if (yych <= 'Z') {
|
| 13312 | + if (yych <= '@')
|
| 13313 | + goto yy895;
|
| 13314 | + goto yy922;
|
| 13315 | + } else {
|
| 13316 | + if (yych <= '`')
|
| 13317 | + goto yy895;
|
| 13318 | + if (yych <= 'z')
|
| 13319 | + goto yy922;
|
| 13320 | + goto yy895;
|
| 13321 | + }
|
| 13322 | + }
|
| 13323 | + yy920:
|
| 13324 | + yych = *++p;
|
| 13325 | + if (yych == ';')
|
| 13326 | + goto yy901;
|
| 13327 | + goto yy895;
|
| 13328 | + yy921:
|
| 13329 | + yych = *++p;
|
| 13330 | + if (yych <= ';') {
|
| 13331 | + if (yych <= '/')
|
| 13332 | + goto yy895;
|
| 13333 | + if (yych <= '9')
|
| 13334 | + goto yy920;
|
| 13335 | + if (yych <= ':')
|
| 13336 | + goto yy895;
|
| 13337 | + goto yy901;
|
| 13338 | + } else {
|
| 13339 | + if (yych <= 'F') {
|
| 13340 | + if (yych <= '@')
|
| 13341 | + goto yy895;
|
| 13342 | + goto yy920;
|
| 13343 | + } else {
|
| 13344 | + if (yych <= '`')
|
| 13345 | + goto yy895;
|
| 13346 | + if (yych <= 'f')
|
| 13347 | + goto yy920;
|
| 13348 | + goto yy895;
|
| 13349 | + }
|
| 13350 | + }
|
| 13351 | + yy922:
|
| 13352 | + yych = *++p;
|
| 13353 | + if (yych <= ';') {
|
| 13354 | + if (yych <= '/')
|
| 13355 | + goto yy895;
|
| 13356 | + if (yych <= '9')
|
| 13357 | + goto yy923;
|
| 13358 | + if (yych <= ':')
|
| 13359 | + goto yy895;
|
| 13360 | + goto yy901;
|
| 13361 | + } else {
|
| 13362 | + if (yych <= 'Z') {
|
| 13363 | + if (yych <= '@')
|
| 13364 | + goto yy895;
|
| 13365 | + } else {
|
| 13366 | + if (yych <= '`')
|
| 13367 | + goto yy895;
|
| 13368 | + if (yych >= '{')
|
| 13369 | + goto yy895;
|
| 13370 | + }
|
| 13371 | + }
|
| 13372 | + yy923:
|
| 13373 | + yych = *++p;
|
| 13374 | + if (yych <= ';') {
|
| 13375 | + if (yych <= '/')
|
| 13376 | + goto yy895;
|
| 13377 | + if (yych <= '9')
|
| 13378 | + goto yy924;
|
| 13379 | + if (yych <= ':')
|
| 13380 | + goto yy895;
|
| 13381 | + goto yy901;
|
| 13382 | + } else {
|
| 13383 | + if (yych <= 'Z') {
|
| 13384 | + if (yych <= '@')
|
| 13385 | + goto yy895;
|
| 13386 | + } else {
|
| 13387 | + if (yych <= '`')
|
| 13388 | + goto yy895;
|
| 13389 | + if (yych >= '{')
|
| 13390 | + goto yy895;
|
| 13391 | + }
|
| 13392 | + }
|
| 13393 | + yy924:
|
| 13394 | + yych = *++p;
|
| 13395 | + if (yych <= ';') {
|
| 13396 | + if (yych <= '/')
|
| 13397 | + goto yy895;
|
| 13398 | + if (yych <= '9')
|
| 13399 | + goto yy925;
|
| 13400 | + if (yych <= ':')
|
| 13401 | + goto yy895;
|
| 13402 | + goto yy901;
|
| 13403 | + } else {
|
| 13404 | + if (yych <= 'Z') {
|
| 13405 | + if (yych <= '@')
|
| 13406 | + goto yy895;
|
| 13407 | + } else {
|
| 13408 | + if (yych <= '`')
|
| 13409 | + goto yy895;
|
| 13410 | + if (yych >= '{')
|
| 13411 | + goto yy895;
|
| 13412 | + }
|
| 13413 | + }
|
| 13414 | + yy925:
|
| 13415 | + yych = *++p;
|
| 13416 | + if (yych <= ';') {
|
| 13417 | + if (yych <= '/')
|
| 13418 | + goto yy895;
|
| 13419 | + if (yych <= '9')
|
| 13420 | + goto yy926;
|
| 13421 | + if (yych <= ':')
|
| 13422 | + goto yy895;
|
| 13423 | + goto yy901;
|
| 13424 | + } else {
|
| 13425 | + if (yych <= 'Z') {
|
| 13426 | + if (yych <= '@')
|
| 13427 | + goto yy895;
|
| 13428 | + } else {
|
| 13429 | + if (yych <= '`')
|
| 13430 | + goto yy895;
|
| 13431 | + if (yych >= '{')
|
| 13432 | + goto yy895;
|
| 13433 | + }
|
| 13434 | + }
|
| 13435 | + yy926:
|
| 13436 | + yych = *++p;
|
| 13437 | + if (yych <= ';') {
|
| 13438 | + if (yych <= '/')
|
| 13439 | + goto yy895;
|
| 13440 | + if (yych <= '9')
|
| 13441 | + goto yy927;
|
| 13442 | + if (yych <= ':')
|
| 13443 | + goto yy895;
|
| 13444 | + goto yy901;
|
| 13445 | + } else {
|
| 13446 | + if (yych <= 'Z') {
|
| 13447 | + if (yych <= '@')
|
| 13448 | + goto yy895;
|
| 13449 | + } else {
|
| 13450 | + if (yych <= '`')
|
| 13451 | + goto yy895;
|
| 13452 | + if (yych >= '{')
|
| 13453 | + goto yy895;
|
| 13454 | + }
|
| 13455 | + }
|
| 13456 | + yy927:
|
| 13457 | + yych = *++p;
|
| 13458 | + if (yych <= ';') {
|
| 13459 | + if (yych <= '/')
|
| 13460 | + goto yy895;
|
| 13461 | + if (yych <= '9')
|
| 13462 | + goto yy928;
|
| 13463 | + if (yych <= ':')
|
| 13464 | + goto yy895;
|
| 13465 | + goto yy901;
|
| 13466 | + } else {
|
| 13467 | + if (yych <= 'Z') {
|
| 13468 | + if (yych <= '@')
|
| 13469 | + goto yy895;
|
| 13470 | + } else {
|
| 13471 | + if (yych <= '`')
|
| 13472 | + goto yy895;
|
| 13473 | + if (yych >= '{')
|
| 13474 | + goto yy895;
|
| 13475 | + }
|
| 13476 | + }
|
| 13477 | + yy928:
|
| 13478 | + yych = *++p;
|
| 13479 | + if (yych <= ';') {
|
| 13480 | + if (yych <= '/')
|
| 13481 | + goto yy895;
|
| 13482 | + if (yych <= '9')
|
| 13483 | + goto yy929;
|
| 13484 | + if (yych <= ':')
|
| 13485 | + goto yy895;
|
| 13486 | + goto yy901;
|
| 13487 | + } else {
|
| 13488 | + if (yych <= 'Z') {
|
| 13489 | + if (yych <= '@')
|
| 13490 | + goto yy895;
|
| 13491 | + } else {
|
| 13492 | + if (yych <= '`')
|
| 13493 | + goto yy895;
|
| 13494 | + if (yych >= '{')
|
| 13495 | + goto yy895;
|
| 13496 | + }
|
| 13497 | + }
|
| 13498 | + yy929:
|
| 13499 | + yych = *++p;
|
| 13500 | + if (yych <= ';') {
|
| 13501 | + if (yych <= '/')
|
| 13502 | + goto yy895;
|
| 13503 | + if (yych <= '9')
|
| 13504 | + goto yy930;
|
| 13505 | + if (yych <= ':')
|
| 13506 | + goto yy895;
|
| 13507 | + goto yy901;
|
| 13508 | + } else {
|
| 13509 | + if (yych <= 'Z') {
|
| 13510 | + if (yych <= '@')
|
| 13511 | + goto yy895;
|
| 13512 | + } else {
|
| 13513 | + if (yych <= '`')
|
| 13514 | + goto yy895;
|
| 13515 | + if (yych >= '{')
|
| 13516 | + goto yy895;
|
| 13517 | + }
|
| 13518 | + }
|
| 13519 | + yy930:
|
| 13520 | + yych = *++p;
|
| 13521 | + if (yych <= ';') {
|
| 13522 | + if (yych <= '/')
|
| 13523 | + goto yy895;
|
| 13524 | + if (yych <= '9')
|
| 13525 | + goto yy931;
|
| 13526 | + if (yych <= ':')
|
| 13527 | + goto yy895;
|
| 13528 | + goto yy901;
|
| 13529 | + } else {
|
| 13530 | + if (yych <= 'Z') {
|
| 13531 | + if (yych <= '@')
|
| 13532 | + goto yy895;
|
| 13533 | + } else {
|
| 13534 | + if (yych <= '`')
|
| 13535 | + goto yy895;
|
| 13536 | + if (yych >= '{')
|
| 13537 | + goto yy895;
|
| 13538 | + }
|
| 13539 | + }
|
| 13540 | + yy931:
|
| 13541 | + yych = *++p;
|
| 13542 | + if (yych <= ';') {
|
| 13543 | + if (yych <= '/')
|
| 13544 | + goto yy895;
|
| 13545 | + if (yych <= '9')
|
| 13546 | + goto yy932;
|
| 13547 | + if (yych <= ':')
|
| 13548 | + goto yy895;
|
| 13549 | + goto yy901;
|
| 13550 | + } else {
|
| 13551 | + if (yych <= 'Z') {
|
| 13552 | + if (yych <= '@')
|
| 13553 | + goto yy895;
|
| 13554 | + } else {
|
| 13555 | + if (yych <= '`')
|
| 13556 | + goto yy895;
|
| 13557 | + if (yych >= '{')
|
| 13558 | + goto yy895;
|
| 13559 | + }
|
| 13560 | + }
|
| 13561 | + yy932:
|
| 13562 | + yych = *++p;
|
| 13563 | + if (yych <= ';') {
|
| 13564 | + if (yych <= '/')
|
| 13565 | + goto yy895;
|
| 13566 | + if (yych <= '9')
|
| 13567 | + goto yy933;
|
| 13568 | + if (yych <= ':')
|
| 13569 | + goto yy895;
|
| 13570 | + goto yy901;
|
| 13571 | + } else {
|
| 13572 | + if (yych <= 'Z') {
|
| 13573 | + if (yych <= '@')
|
| 13574 | + goto yy895;
|
| 13575 | + } else {
|
| 13576 | + if (yych <= '`')
|
| 13577 | + goto yy895;
|
| 13578 | + if (yych >= '{')
|
| 13579 | + goto yy895;
|
| 13580 | + }
|
| 13581 | + }
|
| 13582 | + yy933:
|
| 13583 | + yych = *++p;
|
| 13584 | + if (yych <= ';') {
|
| 13585 | + if (yych <= '/')
|
| 13586 | + goto yy895;
|
| 13587 | + if (yych <= '9')
|
| 13588 | + goto yy934;
|
| 13589 | + if (yych <= ':')
|
| 13590 | + goto yy895;
|
| 13591 | + goto yy901;
|
| 13592 | + } else {
|
| 13593 | + if (yych <= 'Z') {
|
| 13594 | + if (yych <= '@')
|
| 13595 | + goto yy895;
|
| 13596 | + } else {
|
| 13597 | + if (yych <= '`')
|
| 13598 | + goto yy895;
|
| 13599 | + if (yych >= '{')
|
| 13600 | + goto yy895;
|
| 13601 | + }
|
| 13602 | + }
|
| 13603 | + yy934:
|
| 13604 | + yych = *++p;
|
| 13605 | + if (yych <= ';') {
|
| 13606 | + if (yych <= '/')
|
| 13607 | + goto yy895;
|
| 13608 | + if (yych <= '9')
|
| 13609 | + goto yy935;
|
| 13610 | + if (yych <= ':')
|
| 13611 | + goto yy895;
|
| 13612 | + goto yy901;
|
| 13613 | + } else {
|
| 13614 | + if (yych <= 'Z') {
|
| 13615 | + if (yych <= '@')
|
| 13616 | + goto yy895;
|
| 13617 | + } else {
|
| 13618 | + if (yych <= '`')
|
| 13619 | + goto yy895;
|
| 13620 | + if (yych >= '{')
|
| 13621 | + goto yy895;
|
| 13622 | + }
|
| 13623 | + }
|
| 13624 | + yy935:
|
| 13625 | + yych = *++p;
|
| 13626 | + if (yych <= ';') {
|
| 13627 | + if (yych <= '/')
|
| 13628 | + goto yy895;
|
| 13629 | + if (yych <= '9')
|
| 13630 | + goto yy936;
|
| 13631 | + if (yych <= ':')
|
| 13632 | + goto yy895;
|
| 13633 | + goto yy901;
|
| 13634 | + } else {
|
| 13635 | + if (yych <= 'Z') {
|
| 13636 | + if (yych <= '@')
|
| 13637 | + goto yy895;
|
| 13638 | + } else {
|
| 13639 | + if (yych <= '`')
|
| 13640 | + goto yy895;
|
| 13641 | + if (yych >= '{')
|
| 13642 | + goto yy895;
|
| 13643 | + }
|
| 13644 | + }
|
| 13645 | + yy936:
|
| 13646 | + yych = *++p;
|
| 13647 | + if (yych <= ';') {
|
| 13648 | + if (yych <= '/')
|
| 13649 | + goto yy895;
|
| 13650 | + if (yych <= '9')
|
| 13651 | + goto yy937;
|
| 13652 | + if (yych <= ':')
|
| 13653 | + goto yy895;
|
| 13654 | + goto yy901;
|
| 13655 | + } else {
|
| 13656 | + if (yych <= 'Z') {
|
| 13657 | + if (yych <= '@')
|
| 13658 | + goto yy895;
|
| 13659 | + } else {
|
| 13660 | + if (yych <= '`')
|
| 13661 | + goto yy895;
|
| 13662 | + if (yych >= '{')
|
| 13663 | + goto yy895;
|
| 13664 | + }
|
| 13665 | + }
|
| 13666 | + yy937:
|
| 13667 | + yych = *++p;
|
| 13668 | + if (yych <= ';') {
|
| 13669 | + if (yych <= '/')
|
| 13670 | + goto yy895;
|
| 13671 | + if (yych <= '9')
|
| 13672 | + goto yy938;
|
| 13673 | + if (yych <= ':')
|
| 13674 | + goto yy895;
|
| 13675 | + goto yy901;
|
| 13676 | + } else {
|
| 13677 | + if (yych <= 'Z') {
|
| 13678 | + if (yych <= '@')
|
| 13679 | + goto yy895;
|
| 13680 | + } else {
|
| 13681 | + if (yych <= '`')
|
| 13682 | + goto yy895;
|
| 13683 | + if (yych >= '{')
|
| 13684 | + goto yy895;
|
| 13685 | + }
|
| 13686 | + }
|
| 13687 | + yy938:
|
| 13688 | + yych = *++p;
|
| 13689 | + if (yych <= ';') {
|
| 13690 | + if (yych <= '/')
|
| 13691 | + goto yy895;
|
| 13692 | + if (yych <= '9')
|
| 13693 | + goto yy939;
|
| 13694 | + if (yych <= ':')
|
| 13695 | + goto yy895;
|
| 13696 | + goto yy901;
|
| 13697 | + } else {
|
| 13698 | + if (yych <= 'Z') {
|
| 13699 | + if (yych <= '@')
|
| 13700 | + goto yy895;
|
| 13701 | + } else {
|
| 13702 | + if (yych <= '`')
|
| 13703 | + goto yy895;
|
| 13704 | + if (yych >= '{')
|
| 13705 | + goto yy895;
|
| 13706 | + }
|
| 13707 | + }
|
| 13708 | + yy939:
|
| 13709 | + yych = *++p;
|
| 13710 | + if (yych <= ';') {
|
| 13711 | + if (yych <= '/')
|
| 13712 | + goto yy895;
|
| 13713 | + if (yych <= '9')
|
| 13714 | + goto yy940;
|
| 13715 | + if (yych <= ':')
|
| 13716 | + goto yy895;
|
| 13717 | + goto yy901;
|
| 13718 | + } else {
|
| 13719 | + if (yych <= 'Z') {
|
| 13720 | + if (yych <= '@')
|
| 13721 | + goto yy895;
|
| 13722 | + } else {
|
| 13723 | + if (yych <= '`')
|
| 13724 | + goto yy895;
|
| 13725 | + if (yych >= '{')
|
| 13726 | + goto yy895;
|
| 13727 | + }
|
| 13728 | + }
|
| 13729 | + yy940:
|
| 13730 | + yych = *++p;
|
| 13731 | + if (yych <= ';') {
|
| 13732 | + if (yych <= '/')
|
| 13733 | + goto yy895;
|
| 13734 | + if (yych <= '9')
|
| 13735 | + goto yy941;
|
| 13736 | + if (yych <= ':')
|
| 13737 | + goto yy895;
|
| 13738 | + goto yy901;
|
| 13739 | + } else {
|
| 13740 | + if (yych <= 'Z') {
|
| 13741 | + if (yych <= '@')
|
| 13742 | + goto yy895;
|
| 13743 | + } else {
|
| 13744 | + if (yych <= '`')
|
| 13745 | + goto yy895;
|
| 13746 | + if (yych >= '{')
|
| 13747 | + goto yy895;
|
| 13748 | + }
|
| 13749 | + }
|
| 13750 | + yy941:
|
| 13751 | + yych = *++p;
|
| 13752 | + if (yych <= ';') {
|
| 13753 | + if (yych <= '/')
|
| 13754 | + goto yy895;
|
| 13755 | + if (yych <= '9')
|
| 13756 | + goto yy942;
|
| 13757 | + if (yych <= ':')
|
| 13758 | + goto yy895;
|
| 13759 | + goto yy901;
|
| 13760 | + } else {
|
| 13761 | + if (yych <= 'Z') {
|
| 13762 | + if (yych <= '@')
|
| 13763 | + goto yy895;
|
| 13764 | + } else {
|
| 13765 | + if (yych <= '`')
|
| 13766 | + goto yy895;
|
| 13767 | + if (yych >= '{')
|
| 13768 | + goto yy895;
|
| 13769 | + }
|
| 13770 | + }
|
| 13771 | + yy942:
|
| 13772 | + yych = *++p;
|
| 13773 | + if (yych <= ';') {
|
| 13774 | + if (yych <= '/')
|
| 13775 | + goto yy895;
|
| 13776 | + if (yych <= '9')
|
| 13777 | + goto yy943;
|
| 13778 | + if (yych <= ':')
|
| 13779 | + goto yy895;
|
| 13780 | + goto yy901;
|
| 13781 | + } else {
|
| 13782 | + if (yych <= 'Z') {
|
| 13783 | + if (yych <= '@')
|
| 13784 | + goto yy895;
|
| 13785 | + } else {
|
| 13786 | + if (yych <= '`')
|
| 13787 | + goto yy895;
|
| 13788 | + if (yych >= '{')
|
| 13789 | + goto yy895;
|
| 13790 | + }
|
| 13791 | + }
|
| 13792 | + yy943:
|
| 13793 | + yych = *++p;
|
| 13794 | + if (yych <= ';') {
|
| 13795 | + if (yych <= '/')
|
| 13796 | + goto yy895;
|
| 13797 | + if (yych <= '9')
|
| 13798 | + goto yy944;
|
| 13799 | + if (yych <= ':')
|
| 13800 | + goto yy895;
|
| 13801 | + goto yy901;
|
| 13802 | + } else {
|
| 13803 | + if (yych <= 'Z') {
|
| 13804 | + if (yych <= '@')
|
| 13805 | + goto yy895;
|
| 13806 | + } else {
|
| 13807 | + if (yych <= '`')
|
| 13808 | + goto yy895;
|
| 13809 | + if (yych >= '{')
|
| 13810 | + goto yy895;
|
| 13811 | + }
|
| 13812 | + }
|
| 13813 | + yy944:
|
| 13814 | + ++p;
|
| 13815 | + if ((yych = *p) <= ';') {
|
| 13816 | + if (yych <= '/')
|
| 13817 | + goto yy895;
|
| 13818 | + if (yych <= '9')
|
| 13819 | + goto yy920;
|
| 13820 | + if (yych <= ':')
|
| 13821 | + goto yy895;
|
| 13822 | + goto yy901;
|
| 13823 | + } else {
|
| 13824 | + if (yych <= 'Z') {
|
| 13825 | + if (yych <= '@')
|
| 13826 | + goto yy895;
|
| 13827 | + goto yy920;
|
| 13828 | + } else {
|
| 13829 | + if (yych <= '`')
|
| 13830 | + goto yy895;
|
| 13831 | + if (yych <= 'z')
|
| 13832 | + goto yy920;
|
| 13833 | + goto yy895;
|
| 13834 | + }
|
| 13835 | + }
|
| 13836 | + }
|
| 13837 | +}
|
| 13838 | +
|
| 13839 | +// Returns positive value if a URL begins in a way that is potentially
|
| 13840 | +// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
|
| 13841 | +bufsize_t _scan_dangerous_url(const unsigned char *p) {
|
| 13842 | + const unsigned char *marker = NULL;
|
| 13843 | + const unsigned char *start = p;
|
| 13844 | +
|
| 13845 | + {
|
| 13846 | + unsigned char yych;
|
| 13847 | + unsigned int yyaccept = 0;
|
| 13848 | + yych = *p;
|
| 13849 | + if (yych <= 'V') {
|
| 13850 | + if (yych <= 'F') {
|
| 13851 | + if (yych == 'D')
|
| 13852 | + goto yy949;
|
| 13853 | + if (yych >= 'F')
|
| 13854 | + goto yy950;
|
| 13855 | + } else {
|
| 13856 | + if (yych == 'J')
|
| 13857 | + goto yy951;
|
| 13858 | + if (yych >= 'V')
|
| 13859 | + goto yy952;
|
| 13860 | + }
|
| 13861 | + } else {
|
| 13862 | + if (yych <= 'f') {
|
| 13863 | + if (yych == 'd')
|
| 13864 | + goto yy949;
|
| 13865 | + if (yych >= 'f')
|
| 13866 | + goto yy950;
|
| 13867 | + } else {
|
| 13868 | + if (yych <= 'j') {
|
| 13869 | + if (yych >= 'j')
|
| 13870 | + goto yy951;
|
| 13871 | + } else {
|
| 13872 | + if (yych == 'v')
|
| 13873 | + goto yy952;
|
| 13874 | + }
|
| 13875 | + }
|
| 13876 | + }
|
| 13877 | + ++p;
|
| 13878 | + yy948 : { return 0; }
|
| 13879 | + yy949:
|
| 13880 | + yyaccept = 0;
|
| 13881 | + yych = *(marker = ++p);
|
| 13882 | + if (yych == 'A')
|
| 13883 | + goto yy953;
|
| 13884 | + if (yych == 'a')
|
| 13885 | + goto yy953;
|
| 13886 | + goto yy948;
|
| 13887 | + yy950:
|
| 13888 | + yyaccept = 0;
|
| 13889 | + yych = *(marker = ++p);
|
| 13890 | + if (yych == 'I')
|
| 13891 | + goto yy955;
|
| 13892 | + if (yych == 'i')
|
| 13893 | + goto yy955;
|
| 13894 | + goto yy948;
|
| 13895 | + yy951:
|
| 13896 | + yyaccept = 0;
|
| 13897 | + yych = *(marker = ++p);
|
| 13898 | + if (yych == 'A')
|
| 13899 | + goto yy956;
|
| 13900 | + if (yych == 'a')
|
| 13901 | + goto yy956;
|
| 13902 | + goto yy948;
|
| 13903 | + yy952:
|
| 13904 | + yyaccept = 0;
|
| 13905 | + yych = *(marker = ++p);
|
| 13906 | + if (yych == 'B')
|
| 13907 | + goto yy957;
|
| 13908 | + if (yych == 'b')
|
| 13909 | + goto yy957;
|
| 13910 | + goto yy948;
|
| 13911 | + yy953:
|
| 13912 | + yych = *++p;
|
| 13913 | + if (yych == 'T')
|
| 13914 | + goto yy958;
|
| 13915 | + if (yych == 't')
|
| 13916 | + goto yy958;
|
| 13917 | + yy954:
|
| 13918 | + p = marker;
|
| 13919 | + if (yyaccept == 0) {
|
| 13920 | + goto yy948;
|
| 13921 | + } else {
|
| 13922 | + goto yy966;
|
| 13923 | + }
|
| 13924 | + yy955:
|
| 13925 | + yych = *++p;
|
| 13926 | + if (yych == 'L')
|
| 13927 | + goto yy959;
|
| 13928 | + if (yych == 'l')
|
| 13929 | + goto yy959;
|
| 13930 | + goto yy954;
|
| 13931 | + yy956:
|
| 13932 | + yych = *++p;
|
| 13933 | + if (yych == 'V')
|
| 13934 | + goto yy960;
|
| 13935 | + if (yych == 'v')
|
| 13936 | + goto yy960;
|
| 13937 | + goto yy954;
|
| 13938 | + yy957:
|
| 13939 | + yych = *++p;
|
| 13940 | + if (yych == 'S')
|
| 13941 | + goto yy961;
|
| 13942 | + if (yych == 's')
|
| 13943 | + goto yy961;
|
| 13944 | + goto yy954;
|
| 13945 | + yy958:
|
| 13946 | + yych = *++p;
|
| 13947 | + if (yych == 'A')
|
| 13948 | + goto yy962;
|
| 13949 | + if (yych == 'a')
|
| 13950 | + goto yy962;
|
| 13951 | + goto yy954;
|
| 13952 | + yy959:
|
| 13953 | + yych = *++p;
|
| 13954 | + if (yych == 'E')
|
| 13955 | + goto yy963;
|
| 13956 | + if (yych == 'e')
|
| 13957 | + goto yy963;
|
| 13958 | + goto yy954;
|
| 13959 | + yy960:
|
| 13960 | + yych = *++p;
|
| 13961 | + if (yych == 'A')
|
| 13962 | + goto yy957;
|
| 13963 | + if (yych == 'a')
|
| 13964 | + goto yy957;
|
| 13965 | + goto yy954;
|
| 13966 | + yy961:
|
| 13967 | + yych = *++p;
|
| 13968 | + if (yych == 'C')
|
| 13969 | + goto yy964;
|
| 13970 | + if (yych == 'c')
|
| 13971 | + goto yy964;
|
| 13972 | + goto yy954;
|
| 13973 | + yy962:
|
| 13974 | + yych = *++p;
|
| 13975 | + if (yych == ':')
|
| 13976 | + goto yy965;
|
| 13977 | + goto yy954;
|
| 13978 | + yy963:
|
| 13979 | + yych = *++p;
|
| 13980 | + if (yych == ':')
|
| 13981 | + goto yy967;
|
| 13982 | + goto yy954;
|
| 13983 | + yy964:
|
| 13984 | + yych = *++p;
|
| 13985 | + if (yych == 'R')
|
| 13986 | + goto yy968;
|
| 13987 | + if (yych == 'r')
|
| 13988 | + goto yy968;
|
| 13989 | + goto yy954;
|
| 13990 | + yy965:
|
| 13991 | + yyaccept = 1;
|
| 13992 | + yych = *(marker = ++p);
|
| 13993 | + if (yych == 'I')
|
| 13994 | + goto yy969;
|
| 13995 | + if (yych == 'i')
|
| 13996 | + goto yy969;
|
| 13997 | + yy966 : { return (bufsize_t)(p - start); }
|
| 13998 | + yy967:
|
| 13999 | + yych = *++p;
|
| 14000 | + goto yy966;
|
| 14001 | + yy968:
|
| 14002 | + yych = *++p;
|
| 14003 | + if (yych == 'I')
|
| 14004 | + goto yy970;
|
| 14005 | + if (yych == 'i')
|
| 14006 | + goto yy970;
|
| 14007 | + goto yy954;
|
| 14008 | + yy969:
|
| 14009 | + yych = *++p;
|
| 14010 | + if (yych == 'M')
|
| 14011 | + goto yy971;
|
| 14012 | + if (yych == 'm')
|
| 14013 | + goto yy971;
|
| 14014 | + goto yy954;
|
| 14015 | + yy970:
|
| 14016 | + yych = *++p;
|
| 14017 | + if (yych == 'P')
|
| 14018 | + goto yy972;
|
| 14019 | + if (yych == 'p')
|
| 14020 | + goto yy972;
|
| 14021 | + goto yy954;
|
| 14022 | + yy971:
|
| 14023 | + yych = *++p;
|
| 14024 | + if (yych == 'A')
|
| 14025 | + goto yy973;
|
| 14026 | + if (yych == 'a')
|
| 14027 | + goto yy973;
|
| 14028 | + goto yy954;
|
| 14029 | + yy972:
|
| 14030 | + yych = *++p;
|
| 14031 | + if (yych == 'T')
|
| 14032 | + goto yy963;
|
| 14033 | + if (yych == 't')
|
| 14034 | + goto yy963;
|
| 14035 | + goto yy954;
|
| 14036 | + yy973:
|
| 14037 | + yych = *++p;
|
| 14038 | + if (yych == 'G')
|
| 14039 | + goto yy974;
|
| 14040 | + if (yych != 'g')
|
| 14041 | + goto yy954;
|
| 14042 | + yy974:
|
| 14043 | + yych = *++p;
|
| 14044 | + if (yych == 'E')
|
| 14045 | + goto yy975;
|
| 14046 | + if (yych != 'e')
|
| 14047 | + goto yy954;
|
| 14048 | + yy975:
|
| 14049 | + yych = *++p;
|
| 14050 | + if (yych != '/')
|
| 14051 | + goto yy954;
|
| 14052 | + yych = *++p;
|
| 14053 | + if (yych <= 'W') {
|
| 14054 | + if (yych <= 'J') {
|
| 14055 | + if (yych == 'G')
|
| 14056 | + goto yy977;
|
| 14057 | + if (yych <= 'I')
|
| 14058 | + goto yy954;
|
| 14059 | + goto yy978;
|
| 14060 | + } else {
|
| 14061 | + if (yych == 'P')
|
| 14062 | + goto yy979;
|
| 14063 | + if (yych <= 'V')
|
| 14064 | + goto yy954;
|
| 14065 | + goto yy980;
|
| 14066 | + }
|
| 14067 | + } else {
|
| 14068 | + if (yych <= 'j') {
|
| 14069 | + if (yych == 'g')
|
| 14070 | + goto yy977;
|
| 14071 | + if (yych <= 'i')
|
| 14072 | + goto yy954;
|
| 14073 | + goto yy978;
|
| 14074 | + } else {
|
| 14075 | + if (yych <= 'p') {
|
| 14076 | + if (yych <= 'o')
|
| 14077 | + goto yy954;
|
| 14078 | + goto yy979;
|
| 14079 | + } else {
|
| 14080 | + if (yych == 'w')
|
| 14081 | + goto yy980;
|
| 14082 | + goto yy954;
|
| 14083 | + }
|
| 14084 | + }
|
| 14085 | + }
|
| 14086 | + yy977:
|
| 14087 | + yych = *++p;
|
| 14088 | + if (yych == 'I')
|
| 14089 | + goto yy981;
|
| 14090 | + if (yych == 'i')
|
| 14091 | + goto yy981;
|
| 14092 | + goto yy954;
|
| 14093 | + yy978:
|
| 14094 | + yych = *++p;
|
| 14095 | + if (yych == 'P')
|
| 14096 | + goto yy982;
|
| 14097 | + if (yych == 'p')
|
| 14098 | + goto yy982;
|
| 14099 | + goto yy954;
|
| 14100 | + yy979:
|
| 14101 | + yych = *++p;
|
| 14102 | + if (yych == 'N')
|
| 14103 | + goto yy983;
|
| 14104 | + if (yych == 'n')
|
| 14105 | + goto yy983;
|
| 14106 | + goto yy954;
|
| 14107 | + yy980:
|
| 14108 | + yych = *++p;
|
| 14109 | + if (yych == 'E')
|
| 14110 | + goto yy984;
|
| 14111 | + if (yych == 'e')
|
| 14112 | + goto yy984;
|
| 14113 | + goto yy954;
|
| 14114 | + yy981:
|
| 14115 | + yych = *++p;
|
| 14116 | + if (yych == 'F')
|
| 14117 | + goto yy985;
|
| 14118 | + if (yych == 'f')
|
| 14119 | + goto yy985;
|
| 14120 | + goto yy954;
|
| 14121 | + yy982:
|
| 14122 | + yych = *++p;
|
| 14123 | + if (yych == 'E')
|
| 14124 | + goto yy983;
|
| 14125 | + if (yych != 'e')
|
| 14126 | + goto yy954;
|
| 14127 | + yy983:
|
| 14128 | + yych = *++p;
|
| 14129 | + if (yych == 'G')
|
| 14130 | + goto yy985;
|
| 14131 | + if (yych == 'g')
|
| 14132 | + goto yy985;
|
| 14133 | + goto yy954;
|
| 14134 | + yy984:
|
| 14135 | + yych = *++p;
|
| 14136 | + if (yych == 'B')
|
| 14137 | + goto yy987;
|
| 14138 | + if (yych == 'b')
|
| 14139 | + goto yy987;
|
| 14140 | + goto yy954;
|
| 14141 | + yy985:
|
| 14142 | + ++p;
|
| 14143 | + { return 0; }
|
| 14144 | + yy987:
|
| 14145 | + ++p;
|
| 14146 | + if ((yych = *p) == 'P')
|
| 14147 | + goto yy985;
|
| 14148 | + if (yych == 'p')
|
| 14149 | + goto yy985;
|
| 14150 | + goto yy954;
|
| 14151 | + }
|
| 14152 | +}
|
| 14153 | +
|
| 14154 | +
|
| 14155 | +static const char *EMDASH = "\xE2\x80\x94";
|
| 14156 | +static const char *ENDASH = "\xE2\x80\x93";
|
| 14157 | +static const char *ELLIPSES = "\xE2\x80\xA6";
|
| 14158 | +static const char *LEFTDOUBLEQUOTE = "\xE2\x80\x9C";
|
| 14159 | +static const char *RIGHTDOUBLEQUOTE = "\xE2\x80\x9D";
|
| 14160 | +static const char *LEFTSINGLEQUOTE = "\xE2\x80\x98";
|
| 14161 | +static const char *RIGHTSINGLEQUOTE = "\xE2\x80\x99";
|
| 14162 | +
|
| 14163 | +// Macros for creating various kinds of simple.
|
| 14164 | +#define make_str(mem, s) make_literal(mem, CMARK_NODE_TEXT, s)
|
| 14165 | +#define make_code(mem, s) make_literal(mem, CMARK_NODE_CODE, s)
|
| 14166 | +#define make_raw_html(mem, s) make_literal(mem, CMARK_NODE_HTML_INLINE, s)
|
| 14167 | +#define make_linebreak(mem) make_simple(mem, CMARK_NODE_LINEBREAK)
|
| 14168 | +#define make_softbreak(mem) make_simple(mem, CMARK_NODE_SOFTBREAK)
|
| 14169 | +#define make_emph(mem) make_simple(mem, CMARK_NODE_EMPH)
|
| 14170 | +#define make_strong(mem) make_simple(mem, CMARK_NODE_STRONG)
|
| 14171 | +
|
| 14172 | +#define MAXBACKTICKS 1000
|
| 14173 | +
|
| 14174 | +typedef struct delimiter {
|
| 14175 | + struct delimiter *previous;
|
| 14176 | + struct delimiter *next;
|
| 14177 | + cmark_node *inl_text;
|
| 14178 | + bufsize_t length;
|
| 14179 | + unsigned char delim_char;
|
| 14180 | + bool can_open;
|
| 14181 | + bool can_close;
|
| 14182 | +} delimiter;
|
| 14183 | +
|
| 14184 | +typedef struct bracket {
|
| 14185 | + struct bracket *previous;
|
| 14186 | + struct delimiter *previous_delimiter;
|
| 14187 | + cmark_node *inl_text;
|
| 14188 | + bufsize_t position;
|
| 14189 | + bool image;
|
| 14190 | + bool active;
|
| 14191 | + bool bracket_after;
|
| 14192 | +} bracket;
|
| 14193 | +
|
| 14194 | +typedef struct {
|
| 14195 | + cmark_mem *mem;
|
| 14196 | + cmark_chunk input;
|
| 14197 | + bufsize_t pos;
|
| 14198 | + cmark_reference_map *refmap;
|
| 14199 | + delimiter *last_delim;
|
| 14200 | + bracket *last_bracket;
|
| 14201 | + bufsize_t backticks[MAXBACKTICKS + 1];
|
| 14202 | + bool scanned_for_backticks;
|
| 14203 | +} subject;
|
| 14204 | +
|
| 14205 | +static CMARK_INLINE bool S_is_line_end_char(char c) {
|
| 14206 | + return (c == '\n' || c == '\r');
|
| 14207 | +}
|
| 14208 | +
|
| 14209 | +static delimiter *S_insert_emph(subject *subj, delimiter *opener,
|
| 14210 | + delimiter *closer);
|
| 14211 | +
|
| 14212 | +static int parse_inline(subject *subj, cmark_node *parent, int options);
|
| 14213 | +
|
| 14214 | +static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
|
| 14215 | + cmark_reference_map *refmap);
|
| 14216 | +static bufsize_t subject_find_special_char(subject *subj, int options);
|
| 14217 | +
|
| 14218 | +// Create an inline with a literal string value.
|
| 14219 | +static CMARK_INLINE cmark_node *make_literal(cmark_mem *mem, cmark_node_type t,
|
| 14220 | + cmark_chunk s) {
|
| 14221 | + cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e));
|
| 14222 | + cmark_strbuf_init(mem, &e->content, 0);
|
| 14223 | + e->type = t;
|
| 14224 | + e->as.literal = s;
|
| 14225 | + return e;
|
| 14226 | +}
|
| 14227 | +
|
| 14228 | +// Create an inline with no value.
|
| 14229 | +static CMARK_INLINE cmark_node *make_simple(cmark_mem *mem, cmark_node_type t) {
|
| 14230 | + cmark_node *e = (cmark_node *)mem->calloc(1, sizeof(*e));
|
| 14231 | + cmark_strbuf_init(mem, &e->content, 0);
|
| 14232 | + e->type = t;
|
| 14233 | + return e;
|
| 14234 | +}
|
| 14235 | +
|
| 14236 | +// Like make_str, but parses entities.
|
| 14237 | +static cmark_node *make_str_with_entities(cmark_mem *mem,
|
| 14238 | + cmark_chunk *content) {
|
| 14239 | + cmark_strbuf unescaped = CMARK_BUF_INIT(mem);
|
| 14240 | +
|
| 14241 | + if (houdini_unescape_html(&unescaped, content->data, content->len)) {
|
| 14242 | + return make_str(mem, cmark_chunk_buf_detach(&unescaped));
|
| 14243 | + } else {
|
| 14244 | + return make_str(mem, *content);
|
| 14245 | + }
|
| 14246 | +}
|
| 14247 | +
|
| 14248 | +// Duplicate a chunk by creating a copy of the buffer not by reusing the
|
| 14249 | +// buffer like cmark_chunk_dup does.
|
| 14250 | +static cmark_chunk chunk_clone(cmark_mem *mem, cmark_chunk *src) {
|
| 14251 | + cmark_chunk c;
|
| 14252 | + bufsize_t len = src->len;
|
| 14253 | +
|
| 14254 | + c.len = len;
|
| 14255 | + c.data = (unsigned char *)mem->calloc(len + 1, 1);
|
| 14256 | + c.alloc = 1;
|
| 14257 | + memcpy(c.data, src->data, len);
|
| 14258 | + c.data[len] = '\0';
|
| 14259 | +
|
| 14260 | + return c;
|
| 14261 | +}
|
| 14262 | +
|
| 14263 | +static cmark_chunk cmark_clean_autolink(cmark_mem *mem, cmark_chunk *url,
|
| 14264 | + int is_email) {
|
| 14265 | + cmark_strbuf buf = CMARK_BUF_INIT(mem);
|
| 14266 | +
|
| 14267 | + cmark_chunk_trim(url);
|
| 14268 | +
|
| 14269 | + if (url->len == 0) {
|
| 14270 | + cmark_chunk result = CMARK_CHUNK_EMPTY;
|
| 14271 | + return result;
|
| 14272 | + }
|
| 14273 | +
|
| 14274 | + if (is_email)
|
| 14275 | + cmark_strbuf_puts(&buf, "mailto:");
|
| 14276 | +
|
| 14277 | + houdini_unescape_html_f(&buf, url->data, url->len);
|
| 14278 | + return cmark_chunk_buf_detach(&buf);
|
| 14279 | +}
|
| 14280 | +
|
| 14281 | +static CMARK_INLINE cmark_node *make_autolink(cmark_mem *mem, cmark_chunk url,
|
| 14282 | + int is_email) {
|
| 14283 | + cmark_node *link = make_simple(mem, CMARK_NODE_LINK);
|
| 14284 | + link->as.link.url = cmark_clean_autolink(mem, &url, is_email);
|
| 14285 | + link->as.link.title = cmark_chunk_literal("");
|
| 14286 | + cmark_node_append_child(link, make_str_with_entities(mem, &url));
|
| 14287 | + return link;
|
| 14288 | +}
|
| 14289 | +
|
| 14290 | +static void subject_from_buf(cmark_mem *mem, subject *e, cmark_strbuf *buffer,
|
| 14291 | + cmark_reference_map *refmap) {
|
| 14292 | + int i;
|
| 14293 | + e->mem = mem;
|
| 14294 | + e->input.data = buffer->ptr;
|
| 14295 | + e->input.len = buffer->size;
|
| 14296 | + e->input.alloc = 0;
|
| 14297 | + e->pos = 0;
|
| 14298 | + e->refmap = refmap;
|
| 14299 | + e->last_delim = NULL;
|
| 14300 | + e->last_bracket = NULL;
|
| 14301 | + for (i = 0; i <= MAXBACKTICKS; i++) {
|
| 14302 | + e->backticks[i] = 0;
|
| 14303 | + }
|
| 14304 | + e->scanned_for_backticks = false;
|
| 14305 | +}
|
| 14306 | +
|
| 14307 | +static CMARK_INLINE int isbacktick(int c) { return (c == '`'); }
|
| 14308 | +
|
| 14309 | +static CMARK_INLINE unsigned char peek_char(subject *subj) {
|
| 14310 | + // NULL bytes should have been stripped out by now. If they're
|
| 14311 | + // present, it's a programming error:
|
| 14312 | + assert(!(subj->pos < subj->input.len && subj->input.data[subj->pos] == 0));
|
| 14313 | + return (subj->pos < subj->input.len) ? subj->input.data[subj->pos] : 0;
|
| 14314 | +}
|
| 14315 | +
|
| 14316 | +static CMARK_INLINE unsigned char peek_at(subject *subj, bufsize_t pos) {
|
| 14317 | + return subj->input.data[pos];
|
| 14318 | +}
|
| 14319 | +
|
| 14320 | +// Return true if there are more characters in the subject.
|
| 14321 | +static CMARK_INLINE int is_eof(subject *subj) {
|
| 14322 | + return (subj->pos >= subj->input.len);
|
| 14323 | +}
|
| 14324 | +
|
| 14325 | +// Advance the subject. Doesn't check for eof.
|
| 14326 | +#define advance(subj) (subj)->pos += 1
|
| 14327 | +
|
| 14328 | +static CMARK_INLINE bool skip_spaces(subject *subj) {
|
| 14329 | + bool skipped = false;
|
| 14330 | + while (peek_char(subj) == ' ' || peek_char(subj) == '\t') {
|
| 14331 | + advance(subj);
|
| 14332 | + skipped = true;
|
| 14333 | + }
|
| 14334 | + return skipped;
|
| 14335 | +}
|
| 14336 | +
|
| 14337 | +static CMARK_INLINE bool skip_line_end(subject *subj) {
|
| 14338 | + bool seen_line_end_char = false;
|
| 14339 | + if (peek_char(subj) == '\r') {
|
| 14340 | + advance(subj);
|
| 14341 | + seen_line_end_char = true;
|
| 14342 | + }
|
| 14343 | + if (peek_char(subj) == '\n') {
|
| 14344 | + advance(subj);
|
| 14345 | + seen_line_end_char = true;
|
| 14346 | + }
|
| 14347 | + return seen_line_end_char || is_eof(subj);
|
| 14348 | +}
|
| 14349 | +
|
| 14350 | +// Take characters while a predicate holds, and return a string.
|
| 14351 | +static CMARK_INLINE cmark_chunk take_while(subject *subj, int (*f)(int)) {
|
| 14352 | + unsigned char c;
|
| 14353 | + bufsize_t startpos = subj->pos;
|
| 14354 | + bufsize_t len = 0;
|
| 14355 | +
|
| 14356 | + while ((c = peek_char(subj)) && (*f)(c)) {
|
| 14357 | + advance(subj);
|
| 14358 | + len++;
|
| 14359 | + }
|
| 14360 | +
|
| 14361 | + return cmark_chunk_dup(&subj->input, startpos, len);
|
| 14362 | +}
|
| 14363 | +
|
| 14364 | +// Try to process a backtick code span that began with a
|
| 14365 | +// span of ticks of length openticklength length (already
|
| 14366 | +// parsed). Return 0 if you don't find matching closing
|
| 14367 | +// backticks, otherwise return the position in the subject
|
| 14368 | +// after the closing backticks.
|
| 14369 | +static bufsize_t scan_to_closing_backticks(subject *subj,
|
| 14370 | + bufsize_t openticklength) {
|
| 14371 | +
|
| 14372 | + bool found = false;
|
| 14373 | + if (openticklength > MAXBACKTICKS) {
|
| 14374 | + // we limit backtick string length because of the array subj->backticks:
|
| 14375 | + return 0;
|
| 14376 | + }
|
| 14377 | + if (subj->scanned_for_backticks &&
|
| 14378 | + subj->backticks[openticklength] <= subj->pos) {
|
| 14379 | + // return if we already know there's no closer
|
| 14380 | + return 0;
|
| 14381 | + }
|
| 14382 | + while (!found) {
|
| 14383 | + // read non backticks
|
| 14384 | + unsigned char c;
|
| 14385 | + while ((c = peek_char(subj)) && c != '`') {
|
| 14386 | + advance(subj);
|
| 14387 | + }
|
| 14388 | + if (is_eof(subj)) {
|
| 14389 | + break;
|
| 14390 | + }
|
| 14391 | + bufsize_t numticks = 0;
|
| 14392 | + while (peek_char(subj) == '`') {
|
| 14393 | + advance(subj);
|
| 14394 | + numticks++;
|
| 14395 | + }
|
| 14396 | + // store position of ender
|
| 14397 | + if (numticks <= MAXBACKTICKS) {
|
| 14398 | + subj->backticks[numticks] = subj->pos - numticks;
|
| 14399 | + }
|
| 14400 | + if (numticks == openticklength) {
|
| 14401 | + return (subj->pos);
|
| 14402 | + }
|
| 14403 | + }
|
| 14404 | + // got through whole input without finding closer
|
| 14405 | + subj->scanned_for_backticks = true;
|
| 14406 | + return 0;
|
| 14407 | +}
|
| 14408 | +
|
| 14409 | +// Parse backtick code section or raw backticks, return an inline.
|
| 14410 | +// Assumes that the subject has a backtick at the current position.
|
| 14411 | +static cmark_node *handle_backticks(subject *subj) {
|
| 14412 | + cmark_chunk openticks = take_while(subj, isbacktick);
|
| 14413 | + bufsize_t startpos = subj->pos;
|
| 14414 | + bufsize_t endpos = scan_to_closing_backticks(subj, openticks.len);
|
| 14415 | +
|
| 14416 | + if (endpos == 0) { // not found
|
| 14417 | + subj->pos = startpos; // rewind
|
| 14418 | + return make_str(subj->mem, openticks);
|
| 14419 | + } else {
|
| 14420 | + cmark_strbuf buf = CMARK_BUF_INIT(subj->mem);
|
| 14421 | +
|
| 14422 | + cmark_strbuf_set(&buf, subj->input.data + startpos,
|
| 14423 | + endpos - startpos - openticks.len);
|
| 14424 | + cmark_strbuf_trim(&buf);
|
| 14425 | + cmark_strbuf_normalize_whitespace(&buf);
|
| 14426 | +
|
| 14427 | + return make_code(subj->mem, cmark_chunk_buf_detach(&buf));
|
| 14428 | + }
|
| 14429 | +}
|
| 14430 | +
|
| 14431 | +// Scan ***, **, or * and return number scanned, or 0.
|
| 14432 | +// Advances position.
|
| 14433 | +static int scan_delims(subject *subj, unsigned char c, bool *can_open,
|
| 14434 | + bool *can_close) {
|
| 14435 | + int numdelims = 0;
|
| 14436 | + bufsize_t before_char_pos;
|
| 14437 | + int32_t after_char = 0;
|
| 14438 | + int32_t before_char = 0;
|
| 14439 | + int len;
|
| 14440 | + bool left_flanking, right_flanking;
|
| 14441 | +
|
| 14442 | + if (subj->pos == 0) {
|
| 14443 | + before_char = 10;
|
| 14444 | + } else {
|
| 14445 | + before_char_pos = subj->pos - 1;
|
| 14446 | + // walk back to the beginning of the UTF_8 sequence:
|
| 14447 | + while (peek_at(subj, before_char_pos) >> 6 == 2 && before_char_pos > 0) {
|
| 14448 | + before_char_pos -= 1;
|
| 14449 | + }
|
| 14450 | + len = cmark_utf8proc_iterate(subj->input.data + before_char_pos,
|
| 14451 | + subj->pos - before_char_pos, &before_char);
|
| 14452 | + if (len == -1) {
|
| 14453 | + before_char = 10;
|
| 14454 | + }
|
| 14455 | + }
|
| 14456 | +
|
| 14457 | + if (c == '\'' || c == '"') {
|
| 14458 | + numdelims++;
|
| 14459 | + advance(subj); // limit to 1 delim for quotes
|
| 14460 | + } else {
|
| 14461 | + while (peek_char(subj) == c) {
|
| 14462 | + numdelims++;
|
| 14463 | + advance(subj);
|
| 14464 | + }
|
| 14465 | + }
|
| 14466 | +
|
| 14467 | + len = cmark_utf8proc_iterate(subj->input.data + subj->pos,
|
| 14468 | + subj->input.len - subj->pos, &after_char);
|
| 14469 | + if (len == -1) {
|
| 14470 | + after_char = 10;
|
| 14471 | + }
|
| 14472 | + left_flanking = numdelims > 0 && !cmark_utf8proc_is_space(after_char) &&
|
| 14473 | + !(cmark_utf8proc_is_punctuation(after_char) &&
|
| 14474 | + !cmark_utf8proc_is_space(before_char) &&
|
| 14475 | + !cmark_utf8proc_is_punctuation(before_char));
|
| 14476 | + right_flanking = numdelims > 0 && !cmark_utf8proc_is_space(before_char) &&
|
| 14477 | + !(cmark_utf8proc_is_punctuation(before_char) &&
|
| 14478 | + !cmark_utf8proc_is_space(after_char) &&
|
| 14479 | + !cmark_utf8proc_is_punctuation(after_char));
|
| 14480 | + if (c == '_') {
|
| 14481 | + *can_open = left_flanking &&
|
| 14482 | + (!right_flanking || cmark_utf8proc_is_punctuation(before_char));
|
| 14483 | + *can_close = right_flanking &&
|
| 14484 | + (!left_flanking || cmark_utf8proc_is_punctuation(after_char));
|
| 14485 | + } else if (c == '\'' || c == '"') {
|
| 14486 | + *can_open = left_flanking && !right_flanking;
|
| 14487 | + *can_close = right_flanking;
|
| 14488 | + } else {
|
| 14489 | + *can_open = left_flanking;
|
| 14490 | + *can_close = right_flanking;
|
| 14491 | + }
|
| 14492 | + return numdelims;
|
| 14493 | +}
|
| 14494 | +
|
| 14495 | +/*
|
| 14496 | +static void print_delimiters(subject *subj)
|
| 14497 | +{
|
| 14498 | + delimiter *delim;
|
| 14499 | + delim = subj->last_delim;
|
| 14500 | + while (delim != NULL) {
|
| 14501 | + printf("Item at stack pos %p: %d %d %d next(%p) prev(%p)\n",
|
| 14502 | + (void*)delim, delim->delim_char,
|
| 14503 | + delim->can_open, delim->can_close,
|
| 14504 | + (void*)delim->next, (void*)delim->previous);
|
| 14505 | + delim = delim->previous;
|
| 14506 | + }
|
| 14507 | +}
|
| 14508 | +*/
|
| 14509 | +
|
| 14510 | +static void remove_delimiter(subject *subj, delimiter *delim) {
|
| 14511 | + if (delim == NULL)
|
| 14512 | + return;
|
| 14513 | + if (delim->next == NULL) {
|
| 14514 | + // end of list:
|
| 14515 | + assert(delim == subj->last_delim);
|
| 14516 | + subj->last_delim = delim->previous;
|
| 14517 | + } else {
|
| 14518 | + delim->next->previous = delim->previous;
|
| 14519 | + }
|
| 14520 | + if (delim->previous != NULL) {
|
| 14521 | + delim->previous->next = delim->next;
|
| 14522 | + }
|
| 14523 | + subj->mem->free(delim);
|
| 14524 | +}
|
| 14525 | +
|
| 14526 | +static void pop_bracket(subject *subj) {
|
| 14527 | + bracket *b;
|
| 14528 | + if (subj->last_bracket == NULL)
|
| 14529 | + return;
|
| 14530 | + b = subj->last_bracket;
|
| 14531 | + subj->last_bracket = subj->last_bracket->previous;
|
| 14532 | + subj->mem->free(b);
|
| 14533 | +}
|
| 14534 | +
|
| 14535 | +static void push_delimiter(subject *subj, unsigned char c, bool can_open,
|
| 14536 | + bool can_close, cmark_node *inl_text) {
|
| 14537 | + delimiter *delim = (delimiter *)subj->mem->calloc(1, sizeof(delimiter));
|
| 14538 | + delim->delim_char = c;
|
| 14539 | + delim->can_open = can_open;
|
| 14540 | + delim->can_close = can_close;
|
| 14541 | + delim->inl_text = inl_text;
|
| 14542 | + delim->length = inl_text->as.literal.len;
|
| 14543 | + delim->previous = subj->last_delim;
|
| 14544 | + delim->next = NULL;
|
| 14545 | + if (delim->previous != NULL) {
|
| 14546 | + delim->previous->next = delim;
|
| 14547 | + }
|
| 14548 | + subj->last_delim = delim;
|
| 14549 | +}
|
| 14550 | +
|
| 14551 | +static void push_bracket(subject *subj, bool image, cmark_node *inl_text) {
|
| 14552 | + bracket *b = (bracket *)subj->mem->calloc(1, sizeof(bracket));
|
| 14553 | + if (subj->last_bracket != NULL) {
|
| 14554 | + subj->last_bracket->bracket_after = true;
|
| 14555 | + }
|
| 14556 | + b->image = image;
|
| 14557 | + b->active = true;
|
| 14558 | + b->inl_text = inl_text;
|
| 14559 | + b->previous = subj->last_bracket;
|
| 14560 | + b->previous_delimiter = subj->last_delim;
|
| 14561 | + b->position = subj->pos;
|
| 14562 | + b->bracket_after = false;
|
| 14563 | + subj->last_bracket = b;
|
| 14564 | +}
|
| 14565 | +
|
| 14566 | +// Assumes the subject has a c at the current position.
|
| 14567 | +static cmark_node *handle_delim(subject *subj, unsigned char c, bool smart) {
|
| 14568 | + bufsize_t numdelims;
|
| 14569 | + cmark_node *inl_text;
|
| 14570 | + bool can_open, can_close;
|
| 14571 | + cmark_chunk contents;
|
| 14572 | +
|
| 14573 | + numdelims = scan_delims(subj, c, &can_open, &can_close);
|
| 14574 | +
|
| 14575 | + if (c == '\'' && smart) {
|
| 14576 | + contents = cmark_chunk_literal(RIGHTSINGLEQUOTE);
|
| 14577 | + } else if (c == '"' && smart) {
|
| 14578 | + contents =
|
| 14579 | + cmark_chunk_literal(can_close ? RIGHTDOUBLEQUOTE : LEFTDOUBLEQUOTE);
|
| 14580 | + } else {
|
| 14581 | + contents = cmark_chunk_dup(&subj->input, subj->pos - numdelims, numdelims);
|
| 14582 | + }
|
| 14583 | +
|
| 14584 | + inl_text = make_str(subj->mem, contents);
|
| 14585 | +
|
| 14586 | + if ((can_open || can_close) && (!(c == '\'' || c == '"') || smart)) {
|
| 14587 | + push_delimiter(subj, c, can_open, can_close, inl_text);
|
| 14588 | + }
|
| 14589 | +
|
| 14590 | + return inl_text;
|
| 14591 | +}
|
| 14592 | +
|
| 14593 | +// Assumes we have a hyphen at the current position.
|
| 14594 | +static cmark_node *handle_hyphen(subject *subj, bool smart) {
|
| 14595 | + int startpos = subj->pos;
|
| 14596 | +
|
| 14597 | + advance(subj);
|
| 14598 | +
|
| 14599 | + if (!smart || peek_char(subj) != '-') {
|
| 14600 | + return make_str(subj->mem, cmark_chunk_literal("-"));
|
| 14601 | + }
|
| 14602 | +
|
| 14603 | + while (smart && peek_char(subj) == '-') {
|
| 14604 | + advance(subj);
|
| 14605 | + }
|
| 14606 | +
|
| 14607 | + int numhyphens = subj->pos - startpos;
|
| 14608 | + int en_count = 0;
|
| 14609 | + int em_count = 0;
|
| 14610 | + int i;
|
| 14611 | + cmark_strbuf buf = CMARK_BUF_INIT(subj->mem);
|
| 14612 | +
|
| 14613 | + if (numhyphens % 3 == 0) { // if divisible by 3, use all em dashes
|
| 14614 | + em_count = numhyphens / 3;
|
| 14615 | + } else if (numhyphens % 2 == 0) { // if divisible by 2, use all en dashes
|
| 14616 | + en_count = numhyphens / 2;
|
| 14617 | + } else if (numhyphens % 3 == 2) { // use one en dash at end
|
| 14618 | + en_count = 1;
|
| 14619 | + em_count = (numhyphens - 2) / 3;
|
| 14620 | + } else { // use two en dashes at the end
|
| 14621 | + en_count = 2;
|
| 14622 | + em_count = (numhyphens - 4) / 3;
|
| 14623 | + }
|
| 14624 | +
|
| 14625 | + for (i = em_count; i > 0; i--) {
|
| 14626 | + cmark_strbuf_puts(&buf, EMDASH);
|
| 14627 | + }
|
| 14628 | +
|
| 14629 | + for (i = en_count; i > 0; i--) {
|
| 14630 | + cmark_strbuf_puts(&buf, ENDASH);
|
| 14631 | + }
|
| 14632 | +
|
| 14633 | + return make_str(subj->mem, cmark_chunk_buf_detach(&buf));
|
| 14634 | +}
|
| 14635 | +
|
| 14636 | +// Assumes we have a period at the current position.
|
| 14637 | +static cmark_node *handle_period(subject *subj, bool smart) {
|
| 14638 | + advance(subj);
|
| 14639 | + if (smart && peek_char(subj) == '.') {
|
| 14640 | + advance(subj);
|
| 14641 | + if (peek_char(subj) == '.') {
|
| 14642 | + advance(subj);
|
| 14643 | + return make_str(subj->mem, cmark_chunk_literal(ELLIPSES));
|
| 14644 | + } else {
|
| 14645 | + return make_str(subj->mem, cmark_chunk_literal(".."));
|
| 14646 | + }
|
| 14647 | + } else {
|
| 14648 | + return make_str(subj->mem, cmark_chunk_literal("."));
|
| 14649 | + }
|
| 14650 | +}
|
| 14651 | +
|
| 14652 | +static void process_emphasis(subject *subj, delimiter *stack_bottom) {
|
| 14653 | + delimiter *closer = subj->last_delim;
|
| 14654 | + delimiter *opener;
|
| 14655 | + delimiter *old_closer;
|
| 14656 | + bool opener_found;
|
| 14657 | + int openers_bottom_index;
|
| 14658 | + delimiter *openers_bottom[6] = {stack_bottom, stack_bottom, stack_bottom,
|
| 14659 | + stack_bottom, stack_bottom, stack_bottom};
|
| 14660 | +
|
| 14661 | + // move back to first relevant delim.
|
| 14662 | + while (closer != NULL && closer->previous != stack_bottom) {
|
| 14663 | + closer = closer->previous;
|
| 14664 | + }
|
| 14665 | +
|
| 14666 | + // now move forward, looking for closers, and handling each
|
| 14667 | + while (closer != NULL) {
|
| 14668 | + if (closer->can_close) {
|
| 14669 | + switch (closer->delim_char) {
|
| 14670 | + case '"':
|
| 14671 | + openers_bottom_index = 0;
|
| 14672 | + break;
|
| 14673 | + case '\'':
|
| 14674 | + openers_bottom_index = 1;
|
| 14675 | + break;
|
| 14676 | + case '_':
|
| 14677 | + openers_bottom_index = 2;
|
| 14678 | + break;
|
| 14679 | + case '*':
|
| 14680 | + openers_bottom_index = 3 + (closer->length % 3);
|
| 14681 | + break;
|
| 14682 | + default:
|
| 14683 | + assert(false);
|
| 14684 | + }
|
| 14685 | +
|
| 14686 | + // Now look backwards for first matching opener:
|
| 14687 | + opener = closer->previous;
|
| 14688 | + opener_found = false;
|
| 14689 | + while (opener != NULL && opener != openers_bottom[openers_bottom_index]) {
|
| 14690 | + if (opener->can_open && opener->delim_char == closer->delim_char) {
|
| 14691 | + // interior closer of size 2 can't match opener of size 1
|
| 14692 | + // or of size 1 can't match 2
|
| 14693 | + if (!(closer->can_open || opener->can_close) ||
|
| 14694 | + ((opener->length + closer->length) % 3) != 0) {
|
| 14695 | + opener_found = true;
|
| 14696 | + break;
|
| 14697 | + }
|
| 14698 | + }
|
| 14699 | + opener = opener->previous;
|
| 14700 | + }
|
| 14701 | + old_closer = closer;
|
| 14702 | + if (closer->delim_char == '*' || closer->delim_char == '_') {
|
| 14703 | + if (opener_found) {
|
| 14704 | + closer = S_insert_emph(subj, opener, closer);
|
| 14705 | + } else {
|
| 14706 | + closer = closer->next;
|
| 14707 | + }
|
| 14708 | + } else if (closer->delim_char == '\'') {
|
| 14709 | + cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);
|
| 14710 | + closer->inl_text->as.literal = cmark_chunk_literal(RIGHTSINGLEQUOTE);
|
| 14711 | + if (opener_found) {
|
| 14712 | + cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);
|
| 14713 | + opener->inl_text->as.literal = cmark_chunk_literal(LEFTSINGLEQUOTE);
|
| 14714 | + }
|
| 14715 | + closer = closer->next;
|
| 14716 | + } else if (closer->delim_char == '"') {
|
| 14717 | + cmark_chunk_free(subj->mem, &closer->inl_text->as.literal);
|
| 14718 | + closer->inl_text->as.literal = cmark_chunk_literal(RIGHTDOUBLEQUOTE);
|
| 14719 | + if (opener_found) {
|
| 14720 | + cmark_chunk_free(subj->mem, &opener->inl_text->as.literal);
|
| 14721 | + opener->inl_text->as.literal = cmark_chunk_literal(LEFTDOUBLEQUOTE);
|
| 14722 | + }
|
| 14723 | + closer = closer->next;
|
| 14724 | + }
|
| 14725 | + if (!opener_found) {
|
| 14726 | + // set lower bound for future searches for openers
|
| 14727 | + openers_bottom[openers_bottom_index] = old_closer->previous;
|
| 14728 | + if (!old_closer->can_open) {
|
| 14729 | + // we can remove a closer that can't be an
|
| 14730 | + // opener, once we've seen there's no
|
| 14731 | + // matching opener:
|
| 14732 | + remove_delimiter(subj, old_closer);
|
| 14733 | + }
|
| 14734 | + }
|
| 14735 | + } else {
|
| 14736 | + closer = closer->next;
|
| 14737 | + }
|
| 14738 | + }
|
| 14739 | + // free all delimiters in list until stack_bottom:
|
| 14740 | + while (subj->last_delim != NULL && subj->last_delim != stack_bottom) {
|
| 14741 | + remove_delimiter(subj, subj->last_delim);
|
| 14742 | + }
|
| 14743 | +}
|
| 14744 | +
|
| 14745 | +static delimiter *S_insert_emph(subject *subj, delimiter *opener,
|
| 14746 | + delimiter *closer) {
|
| 14747 | + delimiter *delim, *tmp_delim;
|
| 14748 | + bufsize_t use_delims;
|
| 14749 | + cmark_node *opener_inl = opener->inl_text;
|
| 14750 | + cmark_node *closer_inl = closer->inl_text;
|
| 14751 | + bufsize_t opener_num_chars = opener_inl->as.literal.len;
|
| 14752 | + bufsize_t closer_num_chars = closer_inl->as.literal.len;
|
| 14753 | + cmark_node *tmp, *tmpnext, *emph;
|
| 14754 | +
|
| 14755 | + // calculate the actual number of characters used from this closer
|
| 14756 | + use_delims = (closer_num_chars >= 2 && opener_num_chars >=2) ? 2 : 1;
|
| 14757 | +
|
| 14758 | + // remove used characters from associated inlines.
|
| 14759 | + opener_num_chars -= use_delims;
|
| 14760 | + closer_num_chars -= use_delims;
|
| 14761 | + opener_inl->as.literal.len = opener_num_chars;
|
| 14762 | + closer_inl->as.literal.len = closer_num_chars;
|
| 14763 | +
|
| 14764 | + // free delimiters between opener and closer
|
| 14765 | + delim = closer->previous;
|
| 14766 | + while (delim != NULL && delim != opener) {
|
| 14767 | + tmp_delim = delim->previous;
|
| 14768 | + remove_delimiter(subj, delim);
|
| 14769 | + delim = tmp_delim;
|
| 14770 | + }
|
| 14771 | +
|
| 14772 | + // create new emph or strong, and splice it in to our inlines
|
| 14773 | + // between the opener and closer
|
| 14774 | + emph = use_delims == 1 ? make_emph(subj->mem) : make_strong(subj->mem);
|
| 14775 | +
|
| 14776 | + tmp = opener_inl->next;
|
| 14777 | + while (tmp && tmp != closer_inl) {
|
| 14778 | + tmpnext = tmp->next;
|
| 14779 | + cmark_node_append_child(emph, tmp);
|
| 14780 | + tmp = tmpnext;
|
| 14781 | + }
|
| 14782 | + cmark_node_insert_after(opener_inl, emph);
|
| 14783 | +
|
| 14784 | + // if opener has 0 characters, remove it and its associated inline
|
| 14785 | + if (opener_num_chars == 0) {
|
| 14786 | + cmark_node_free(opener_inl);
|
| 14787 | + remove_delimiter(subj, opener);
|
| 14788 | + }
|
| 14789 | +
|
| 14790 | + // if closer has 0 characters, remove it and its associated inline
|
| 14791 | + if (closer_num_chars == 0) {
|
| 14792 | + // remove empty closer inline
|
| 14793 | + cmark_node_free(closer_inl);
|
| 14794 | + // remove closer from list
|
| 14795 | + tmp_delim = closer->next;
|
| 14796 | + remove_delimiter(subj, closer);
|
| 14797 | + closer = tmp_delim;
|
| 14798 | + }
|
| 14799 | +
|
| 14800 | + return closer;
|
| 14801 | +}
|
| 14802 | +
|
| 14803 | +// Parse backslash-escape or just a backslash, returning an inline.
|
| 14804 | +static cmark_node *handle_backslash(subject *subj) {
|
| 14805 | + advance(subj);
|
| 14806 | + unsigned char nextchar = peek_char(subj);
|
| 14807 | + if (cmark_ispunct(
|
| 14808 | + nextchar)) { // only ascii symbols and newline can be escaped
|
| 14809 | + advance(subj);
|
| 14810 | + return make_str(subj->mem, cmark_chunk_dup(&subj->input, subj->pos - 1, 1));
|
| 14811 | + } else if (!is_eof(subj) && skip_line_end(subj)) {
|
| 14812 | + return make_linebreak(subj->mem);
|
| 14813 | + } else {
|
| 14814 | + return make_str(subj->mem, cmark_chunk_literal("\\"));
|
| 14815 | + }
|
| 14816 | +}
|
| 14817 | +
|
| 14818 | +// Parse an entity or a regular "&" string.
|
| 14819 | +// Assumes the subject has an '&' character at the current position.
|
| 14820 | +static cmark_node *handle_entity(subject *subj) {
|
| 14821 | + cmark_strbuf ent = CMARK_BUF_INIT(subj->mem);
|
| 14822 | + bufsize_t len;
|
| 14823 | +
|
| 14824 | + advance(subj);
|
| 14825 | +
|
| 14826 | + len = houdini_unescape_ent(&ent, subj->input.data + subj->pos,
|
| 14827 | + subj->input.len - subj->pos);
|
| 14828 | +
|
| 14829 | + if (len == 0)
|
| 14830 | + return make_str(subj->mem, cmark_chunk_literal("&"));
|
| 14831 | +
|
| 14832 | + subj->pos += len;
|
| 14833 | + return make_str(subj->mem, cmark_chunk_buf_detach(&ent));
|
| 14834 | +}
|
| 14835 | +
|
| 14836 | +// Clean a URL: remove surrounding whitespace and surrounding <>,
|
| 14837 | +// and remove \ that escape punctuation.
|
| 14838 | +cmark_chunk cmark_clean_url(cmark_mem *mem, cmark_chunk *url) {
|
| 14839 | + cmark_strbuf buf = CMARK_BUF_INIT(mem);
|
| 14840 | +
|
| 14841 | + cmark_chunk_trim(url);
|
| 14842 | +
|
| 14843 | + if (url->len == 0) {
|
| 14844 | + cmark_chunk result = CMARK_CHUNK_EMPTY;
|
| 14845 | + return result;
|
| 14846 | + }
|
| 14847 | +
|
| 14848 | + if (url->data[0] == '<' && url->data[url->len - 1] == '>') {
|
| 14849 | + houdini_unescape_html_f(&buf, url->data + 1, url->len - 2);
|
| 14850 | + } else {
|
| 14851 | + houdini_unescape_html_f(&buf, url->data, url->len);
|
| 14852 | + }
|
| 14853 | +
|
| 14854 | + cmark_strbuf_unescape(&buf);
|
| 14855 | + return cmark_chunk_buf_detach(&buf);
|
| 14856 | +}
|
| 14857 | +
|
| 14858 | +cmark_chunk cmark_clean_title(cmark_mem *mem, cmark_chunk *title) {
|
| 14859 | + cmark_strbuf buf = CMARK_BUF_INIT(mem);
|
| 14860 | + unsigned char first, last;
|
| 14861 | +
|
| 14862 | + if (title->len == 0) {
|
| 14863 | + cmark_chunk result = CMARK_CHUNK_EMPTY;
|
| 14864 | + return result;
|
| 14865 | + }
|
| 14866 | +
|
| 14867 | + first = title->data[0];
|
| 14868 | + last = title->data[title->len - 1];
|
| 14869 | +
|
| 14870 | + // remove surrounding quotes if any:
|
| 14871 | + if ((first == '\'' && last == '\'') || (first == '(' && last == ')') ||
|
| 14872 | + (first == '"' && last == '"')) {
|
| 14873 | + houdini_unescape_html_f(&buf, title->data + 1, title->len - 2);
|
| 14874 | + } else {
|
| 14875 | + houdini_unescape_html_f(&buf, title->data, title->len);
|
| 14876 | + }
|
| 14877 | +
|
| 14878 | + cmark_strbuf_unescape(&buf);
|
| 14879 | + return cmark_chunk_buf_detach(&buf);
|
| 14880 | +}
|
| 14881 | +
|
| 14882 | +// Parse an autolink or HTML tag.
|
| 14883 | +// Assumes the subject has a '<' character at the current position.
|
| 14884 | +static cmark_node *handle_pointy_brace(subject *subj) {
|
| 14885 | + bufsize_t matchlen = 0;
|
| 14886 | + cmark_chunk contents;
|
| 14887 | +
|
| 14888 | + advance(subj); // advance past first <
|
| 14889 | +
|
| 14890 | + // first try to match a URL autolink
|
| 14891 | + matchlen = scan_autolink_uri(&subj->input, subj->pos);
|
| 14892 | + if (matchlen > 0) {
|
| 14893 | + contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1);
|
| 14894 | + subj->pos += matchlen;
|
| 14895 | +
|
| 14896 | + return make_autolink(subj->mem, contents, 0);
|
| 14897 | + }
|
| 14898 | +
|
| 14899 | + // next try to match an email autolink
|
| 14900 | + matchlen = scan_autolink_email(&subj->input, subj->pos);
|
| 14901 | + if (matchlen > 0) {
|
| 14902 | + contents = cmark_chunk_dup(&subj->input, subj->pos, matchlen - 1);
|
| 14903 | + subj->pos += matchlen;
|
| 14904 | +
|
| 14905 | + return make_autolink(subj->mem, contents, 1);
|
| 14906 | + }
|
| 14907 | +
|
| 14908 | + // finally, try to match an html tag
|
| 14909 | + matchlen = scan_html_tag(&subj->input, subj->pos);
|
| 14910 | + if (matchlen > 0) {
|
| 14911 | + contents = cmark_chunk_dup(&subj->input, subj->pos - 1, matchlen + 1);
|
| 14912 | + subj->pos += matchlen;
|
| 14913 | + return make_raw_html(subj->mem, contents);
|
| 14914 | + }
|
| 14915 | +
|
| 14916 | + // if nothing matches, just return the opening <:
|
| 14917 | + return make_str(subj->mem, cmark_chunk_literal("<"));
|
| 14918 | +}
|
| 14919 | +
|
| 14920 | +// Parse a link label. Returns 1 if successful.
|
| 14921 | +// Note: unescaped brackets are not allowed in labels.
|
| 14922 | +// The label begins with `[` and ends with the first `]` character
|
| 14923 | +// encountered. Backticks in labels do not start code spans.
|
| 14924 | +static int link_label(subject *subj, cmark_chunk *raw_label) {
|
| 14925 | + bufsize_t startpos = subj->pos;
|
| 14926 | + int length = 0;
|
| 14927 | + unsigned char c;
|
| 14928 | +
|
| 14929 | + // advance past [
|
| 14930 | + if (peek_char(subj) == '[') {
|
| 14931 | + advance(subj);
|
| 14932 | + } else {
|
| 14933 | + return 0;
|
| 14934 | + }
|
| 14935 | +
|
| 14936 | + while ((c = peek_char(subj)) && c != '[' && c != ']') {
|
| 14937 | + if (c == '\\') {
|
| 14938 | + advance(subj);
|
| 14939 | + length++;
|
| 14940 | + if (cmark_ispunct(peek_char(subj))) {
|
| 14941 | + advance(subj);
|
| 14942 | + length++;
|
| 14943 | + }
|
| 14944 | + } else {
|
| 14945 | + advance(subj);
|
| 14946 | + length++;
|
| 14947 | + }
|
| 14948 | + if (length > MAX_LINK_LABEL_LENGTH) {
|
| 14949 | + goto noMatch;
|
| 14950 | + }
|
| 14951 | + }
|
| 14952 | +
|
| 14953 | + if (c == ']') { // match found
|
| 14954 | + *raw_label =
|
| 14955 | + cmark_chunk_dup(&subj->input, startpos + 1, subj->pos - (startpos + 1));
|
| 14956 | + cmark_chunk_trim(raw_label);
|
| 14957 | + advance(subj); // advance past ]
|
| 14958 | + return 1;
|
| 14959 | + }
|
| 14960 | +
|
| 14961 | +noMatch:
|
| 14962 | + subj->pos = startpos; // rewind
|
| 14963 | + return 0;
|
| 14964 | +}
|
| 14965 | +static bufsize_t manual_scan_link_url(cmark_chunk *input, bufsize_t offset) {
|
| 14966 | + bufsize_t i = offset;
|
| 14967 | + size_t nb_p = 0;
|
| 14968 | +
|
| 14969 | + if (i < input->len && input->data[i] == '<') {
|
| 14970 | + ++i;
|
| 14971 | + while (i < input->len) {
|
| 14972 | + if (input->data[i] == '>') {
|
| 14973 | + ++i;
|
| 14974 | + break;
|
| 14975 | + } else if (input->data[i] == '\\')
|
| 14976 | + i += 2;
|
| 14977 | + else if (cmark_isspace(input->data[i]))
|
| 14978 | + return -1;
|
| 14979 | + else
|
| 14980 | + ++i;
|
| 14981 | + }
|
| 14982 | + } else {
|
| 14983 | + while (i < input->len) {
|
| 14984 | + if (input->data[i] == '\\')
|
| 14985 | + i += 2;
|
| 14986 | + else if (input->data[i] == '(') {
|
| 14987 | + ++nb_p;
|
| 14988 | + ++i;
|
| 14989 | + } else if (input->data[i] == ')') {
|
| 14990 | + if (nb_p == 0)
|
| 14991 | + break;
|
| 14992 | + --nb_p;
|
| 14993 | + ++i;
|
| 14994 | + } else if (cmark_isspace(input->data[i]))
|
| 14995 | + break;
|
| 14996 | + else
|
| 14997 | + ++i;
|
| 14998 | + }
|
| 14999 | + }
|
| 15000 | +
|
| 15001 | + if (i >= input->len)
|
| 15002 | + return -1;
|
| 15003 | + return i - offset;
|
| 15004 | +}
|
| 15005 | +// Return a link, an image, or a literal close bracket.
|
| 15006 | +static cmark_node *handle_close_bracket(subject *subj) {
|
| 15007 | + bufsize_t initial_pos, after_link_text_pos;
|
| 15008 | + bufsize_t starturl, endurl, starttitle, endtitle, endall;
|
| 15009 | + bufsize_t n;
|
| 15010 | + bufsize_t sps;
|
| 15011 | + cmark_reference *ref = NULL;
|
| 15012 | + cmark_chunk url_chunk, title_chunk;
|
| 15013 | + cmark_chunk url, title;
|
| 15014 | + bracket *opener;
|
| 15015 | + cmark_node *inl;
|
| 15016 | + cmark_chunk raw_label;
|
| 15017 | + int found_label;
|
| 15018 | + cmark_node *tmp, *tmpnext;
|
| 15019 | + bool is_image;
|
| 15020 | +
|
| 15021 | + advance(subj); // advance past ]
|
| 15022 | + initial_pos = subj->pos;
|
| 15023 | +
|
| 15024 | + // get last [ or ![
|
| 15025 | + opener = subj->last_bracket;
|
| 15026 | +
|
| 15027 | + if (opener == NULL) {
|
| 15028 | + return make_str(subj->mem, cmark_chunk_literal("]"));
|
| 15029 | + }
|
| 15030 | +
|
| 15031 | + if (!opener->active) {
|
| 15032 | + // take delimiter off stack
|
| 15033 | + pop_bracket(subj);
|
| 15034 | + return make_str(subj->mem, cmark_chunk_literal("]"));
|
| 15035 | + }
|
| 15036 | +
|
| 15037 | + // If we got here, we matched a potential link/image text.
|
| 15038 | + // Now we check to see if it's a link/image.
|
| 15039 | + is_image = opener->image;
|
| 15040 | +
|
| 15041 | + after_link_text_pos = subj->pos;
|
| 15042 | +
|
| 15043 | + // First, look for an inline link.
|
| 15044 | + if (peek_char(subj) == '(' &&
|
| 15045 | + ((sps = scan_spacechars(&subj->input, subj->pos + 1)) > -1) &&
|
| 15046 | + ((n = manual_scan_link_url(&subj->input, subj->pos + 1 + sps)) > -1)) {
|
| 15047 | +
|
| 15048 | + // try to parse an explicit link:
|
| 15049 | + starturl = subj->pos + 1 + sps; // after (
|
| 15050 | + endurl = starturl + n;
|
| 15051 | + starttitle = endurl + scan_spacechars(&subj->input, endurl);
|
| 15052 | +
|
| 15053 | + // ensure there are spaces btw url and title
|
| 15054 | + endtitle = (starttitle == endurl)
|
| 15055 | + ? starttitle
|
| 15056 | + : starttitle + scan_link_title(&subj->input, starttitle);
|
| 15057 | +
|
| 15058 | + endall = endtitle + scan_spacechars(&subj->input, endtitle);
|
| 15059 | +
|
| 15060 | + if (peek_at(subj, endall) == ')') {
|
| 15061 | + subj->pos = endall + 1;
|
| 15062 | +
|
| 15063 | + url_chunk = cmark_chunk_dup(&subj->input, starturl, endurl - starturl);
|
| 15064 | + title_chunk =
|
| 15065 | + cmark_chunk_dup(&subj->input, starttitle, endtitle - starttitle);
|
| 15066 | + url = cmark_clean_url(subj->mem, &url_chunk);
|
| 15067 | + title = cmark_clean_title(subj->mem, &title_chunk);
|
| 15068 | + cmark_chunk_free(subj->mem, &url_chunk);
|
| 15069 | + cmark_chunk_free(subj->mem, &title_chunk);
|
| 15070 | + goto match;
|
| 15071 | +
|
| 15072 | + } else {
|
| 15073 | + // it could still be a shortcut reference link
|
| 15074 | + subj->pos = after_link_text_pos;
|
| 15075 | + }
|
| 15076 | + }
|
| 15077 | +
|
| 15078 | + // Next, look for a following [link label] that matches in refmap.
|
| 15079 | + // skip spaces
|
| 15080 | + raw_label = cmark_chunk_literal("");
|
| 15081 | + found_label = link_label(subj, &raw_label);
|
| 15082 | + if (!found_label) {
|
| 15083 | + // If we have a shortcut reference link, back up
|
| 15084 | + // to before the spacse we skipped.
|
| 15085 | + subj->pos = initial_pos;
|
| 15086 | + }
|
| 15087 | +
|
| 15088 | + if ((!found_label || raw_label.len == 0) && !opener->bracket_after) {
|
| 15089 | + cmark_chunk_free(subj->mem, &raw_label);
|
| 15090 | + raw_label = cmark_chunk_dup(&subj->input, opener->position,
|
| 15091 | + initial_pos - opener->position - 1);
|
| 15092 | + found_label = true;
|
| 15093 | + }
|
| 15094 | +
|
| 15095 | + if (found_label) {
|
| 15096 | + ref = cmark_reference_lookup(subj->refmap, &raw_label);
|
| 15097 | + cmark_chunk_free(subj->mem, &raw_label);
|
| 15098 | + }
|
| 15099 | +
|
| 15100 | + if (ref != NULL) { // found
|
| 15101 | + url = chunk_clone(subj->mem, &ref->url);
|
| 15102 | + title = chunk_clone(subj->mem, &ref->title);
|
| 15103 | + goto match;
|
| 15104 | + } else {
|
| 15105 | + goto noMatch;
|
| 15106 | + }
|
| 15107 | +
|
| 15108 | +noMatch:
|
| 15109 | + // If we fall through to here, it means we didn't match a link:
|
| 15110 | + pop_bracket(subj); // remove this opener from delimiter list
|
| 15111 | + subj->pos = initial_pos;
|
| 15112 | + return make_str(subj->mem, cmark_chunk_literal("]"));
|
| 15113 | +
|
| 15114 | +match:
|
| 15115 | + inl = make_simple(subj->mem, is_image ? CMARK_NODE_IMAGE : CMARK_NODE_LINK);
|
| 15116 | + inl->as.link.url = url;
|
| 15117 | + inl->as.link.title = title;
|
| 15118 | + cmark_node_insert_before(opener->inl_text, inl);
|
| 15119 | + // Add link text:
|
| 15120 | + tmp = opener->inl_text->next;
|
| 15121 | + while (tmp) {
|
| 15122 | + tmpnext = tmp->next;
|
| 15123 | + cmark_node_append_child(inl, tmp);
|
| 15124 | + tmp = tmpnext;
|
| 15125 | + }
|
| 15126 | +
|
| 15127 | + // Free the bracket [:
|
| 15128 | + cmark_node_free(opener->inl_text);
|
| 15129 | +
|
| 15130 | + process_emphasis(subj, opener->previous_delimiter);
|
| 15131 | + pop_bracket(subj);
|
| 15132 | +
|
| 15133 | + // Now, if we have a link, we also want to deactivate earlier link
|
| 15134 | + // delimiters. (This code can be removed if we decide to allow links
|
| 15135 | + // inside links.)
|
| 15136 | + if (!is_image) {
|
| 15137 | + opener = subj->last_bracket;
|
| 15138 | + while (opener != NULL) {
|
| 15139 | + if (!opener->image) {
|
| 15140 | + if (!opener->active) {
|
| 15141 | + break;
|
| 15142 | + } else {
|
| 15143 | + opener->active = false;
|
| 15144 | + }
|
| 15145 | + }
|
| 15146 | + opener = opener->previous;
|
| 15147 | + }
|
| 15148 | + }
|
| 15149 | +
|
| 15150 | + return NULL;
|
| 15151 | +}
|
| 15152 | +
|
| 15153 | +// Parse a hard or soft linebreak, returning an inline.
|
| 15154 | +// Assumes the subject has a cr or newline at the current position.
|
| 15155 | +static cmark_node *handle_newline(subject *subj) {
|
| 15156 | + bufsize_t nlpos = subj->pos;
|
| 15157 | + // skip over cr, crlf, or lf:
|
| 15158 | + if (peek_at(subj, subj->pos) == '\r') {
|
| 15159 | + advance(subj);
|
| 15160 | + }
|
| 15161 | + if (peek_at(subj, subj->pos) == '\n') {
|
| 15162 | + advance(subj);
|
| 15163 | + }
|
| 15164 | + // skip spaces at beginning of line
|
| 15165 | + skip_spaces(subj);
|
| 15166 | + if (nlpos > 1 && peek_at(subj, nlpos - 1) == ' ' &&
|
| 15167 | + peek_at(subj, nlpos - 2) == ' ') {
|
| 15168 | + return make_linebreak(subj->mem);
|
| 15169 | + } else {
|
| 15170 | + return make_softbreak(subj->mem);
|
| 15171 | + }
|
| 15172 | +}
|
| 15173 | +
|
| 15174 | +static bufsize_t subject_find_special_char(subject *subj, int options) {
|
| 15175 | + // "\r\n\\`&_*[]<!"
|
| 15176 | + static const int8_t SPECIAL_CHARS[256] = {
|
| 15177 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15178 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
|
| 15179 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15180 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1,
|
| 15181 | + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15182 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15183 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15184 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15185 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15186 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15187 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| 15188 | +
|
| 15189 | + // " ' . -
|
| 15190 | + static const char SMART_PUNCT_CHARS[] = {
|
| 15191 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15192 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0,
|
| 15193 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15194 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15195 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15196 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15197 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15198 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15199 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15200 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15201 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15202 | + };
|
| 15203 | +
|
| 15204 | + bufsize_t n = subj->pos + 1;
|
| 15205 | +
|
| 15206 | + while (n < subj->input.len) {
|
| 15207 | + if (SPECIAL_CHARS[subj->input.data[n]])
|
| 15208 | + return n;
|
| 15209 | + if (options & CMARK_OPT_SMART && SMART_PUNCT_CHARS[subj->input.data[n]])
|
| 15210 | + return n;
|
| 15211 | + n++;
|
| 15212 | + }
|
| 15213 | +
|
| 15214 | + return subj->input.len;
|
| 15215 | +}
|
| 15216 | +
|
| 15217 | +// Parse an inline, advancing subject, and add it as a child of parent.
|
| 15218 | +// Return 0 if no inline can be parsed, 1 otherwise.
|
| 15219 | +static int parse_inline(subject *subj, cmark_node *parent, int options) {
|
| 15220 | + cmark_node *new_inl = NULL;
|
| 15221 | + cmark_chunk contents;
|
| 15222 | + unsigned char c;
|
| 15223 | + bufsize_t endpos;
|
| 15224 | + c = peek_char(subj);
|
| 15225 | + if (c == 0) {
|
| 15226 | + return 0;
|
| 15227 | + }
|
| 15228 | + switch (c) {
|
| 15229 | + case '\r':
|
| 15230 | + case '\n':
|
| 15231 | + new_inl = handle_newline(subj);
|
| 15232 | + break;
|
| 15233 | + case '`':
|
| 15234 | + new_inl = handle_backticks(subj);
|
| 15235 | + break;
|
| 15236 | + case '\\':
|
| 15237 | + new_inl = handle_backslash(subj);
|
| 15238 | + break;
|
| 15239 | + case '&':
|
| 15240 | + new_inl = handle_entity(subj);
|
| 15241 | + break;
|
| 15242 | + case '<':
|
| 15243 | + new_inl = handle_pointy_brace(subj);
|
| 15244 | + break;
|
| 15245 | + case '*':
|
| 15246 | + case '_':
|
| 15247 | + case '\'':
|
| 15248 | + case '"':
|
| 15249 | + new_inl = handle_delim(subj, c, (options & CMARK_OPT_SMART) != 0);
|
| 15250 | + break;
|
| 15251 | + case '-':
|
| 15252 | + new_inl = handle_hyphen(subj, (options & CMARK_OPT_SMART) != 0);
|
| 15253 | + break;
|
| 15254 | + case '.':
|
| 15255 | + new_inl = handle_period(subj, (options & CMARK_OPT_SMART) != 0);
|
| 15256 | + break;
|
| 15257 | + case '[':
|
| 15258 | + advance(subj);
|
| 15259 | + new_inl = make_str(subj->mem, cmark_chunk_literal("["));
|
| 15260 | + push_bracket(subj, false, new_inl);
|
| 15261 | + break;
|
| 15262 | + case ']':
|
| 15263 | + new_inl = handle_close_bracket(subj);
|
| 15264 | + break;
|
| 15265 | + case '!':
|
| 15266 | + advance(subj);
|
| 15267 | + if (peek_char(subj) == '[') {
|
| 15268 | + advance(subj);
|
| 15269 | + new_inl = make_str(subj->mem, cmark_chunk_literal("!["));
|
| 15270 | + push_bracket(subj, true, new_inl);
|
| 15271 | + } else {
|
| 15272 | + new_inl = make_str(subj->mem, cmark_chunk_literal("!"));
|
| 15273 | + }
|
| 15274 | + break;
|
| 15275 | + default:
|
| 15276 | + endpos = subject_find_special_char(subj, options);
|
| 15277 | + contents = cmark_chunk_dup(&subj->input, subj->pos, endpos - subj->pos);
|
| 15278 | + subj->pos = endpos;
|
| 15279 | +
|
| 15280 | + // if we're at a newline, strip trailing spaces.
|
| 15281 | + if (S_is_line_end_char(peek_char(subj))) {
|
| 15282 | + cmark_chunk_rtrim(&contents);
|
| 15283 | + }
|
| 15284 | +
|
| 15285 | + new_inl = make_str(subj->mem, contents);
|
| 15286 | + }
|
| 15287 | + if (new_inl != NULL) {
|
| 15288 | + cmark_node_append_child(parent, new_inl);
|
| 15289 | + }
|
| 15290 | +
|
| 15291 | + return 1;
|
| 15292 | +}
|
| 15293 | +
|
| 15294 | +// Parse inlines from parent's string_content, adding as children of parent.
|
| 15295 | +extern void cmark_parse_inlines(cmark_mem *mem, cmark_node *parent,
|
| 15296 | + cmark_reference_map *refmap, int options) {
|
| 15297 | + subject subj;
|
| 15298 | + subject_from_buf(mem, &subj, &parent->content, refmap);
|
| 15299 | + cmark_chunk_rtrim(&subj.input);
|
| 15300 | +
|
| 15301 | + while (!is_eof(&subj) && parse_inline(&subj, parent, options))
|
| 15302 | + ;
|
| 15303 | +
|
| 15304 | + process_emphasis(&subj, NULL);
|
| 15305 | + // free bracket and delim stack
|
| 15306 | + while (subj.last_delim) {
|
| 15307 | + pop_bracket(&subj);
|
| 15308 | + }
|
| 15309 | + while (subj.last_bracket) {
|
| 15310 | + pop_bracket(&subj);
|
| 15311 | + }
|
| 15312 | +}
|
| 15313 | +
|
| 15314 | +// Parse zero or more space characters, including at most one newline.
|
| 15315 | +static void spnl(subject *subj) {
|
| 15316 | + skip_spaces(subj);
|
| 15317 | + if (skip_line_end(subj)) {
|
| 15318 | + skip_spaces(subj);
|
| 15319 | + }
|
| 15320 | +}
|
| 15321 | +
|
| 15322 | +// Parse reference. Assumes string begins with '[' character.
|
| 15323 | +// Modify refmap if a reference is encountered.
|
| 15324 | +// Return 0 if no reference found, otherwise position of subject
|
| 15325 | +// after reference is parsed.
|
| 15326 | +bufsize_t cmark_parse_reference_inline(cmark_mem *mem, cmark_strbuf *input,
|
| 15327 | + cmark_reference_map *refmap) {
|
| 15328 | + subject subj;
|
| 15329 | +
|
| 15330 | + cmark_chunk lab;
|
| 15331 | + cmark_chunk url;
|
| 15332 | + cmark_chunk title;
|
| 15333 | +
|
| 15334 | + bufsize_t matchlen = 0;
|
| 15335 | + bufsize_t beforetitle;
|
| 15336 | +
|
| 15337 | + subject_from_buf(mem, &subj, input, NULL);
|
| 15338 | +
|
| 15339 | + // parse label:
|
| 15340 | + if (!link_label(&subj, &lab) || lab.len == 0)
|
| 15341 | + return 0;
|
| 15342 | +
|
| 15343 | + // colon:
|
| 15344 | + if (peek_char(&subj) == ':') {
|
| 15345 | + advance(&subj);
|
| 15346 | + } else {
|
| 15347 | + return 0;
|
| 15348 | + }
|
| 15349 | +
|
| 15350 | + // parse link url:
|
| 15351 | + spnl(&subj);
|
| 15352 | + matchlen = manual_scan_link_url(&subj.input, subj.pos);
|
| 15353 | + if (matchlen > 0) {
|
| 15354 | + url = cmark_chunk_dup(&subj.input, subj.pos, matchlen);
|
| 15355 | + subj.pos += matchlen;
|
| 15356 | + } else {
|
| 15357 | + return 0;
|
| 15358 | + }
|
| 15359 | +
|
| 15360 | + // parse optional link_title
|
| 15361 | + beforetitle = subj.pos;
|
| 15362 | + spnl(&subj);
|
| 15363 | + matchlen = scan_link_title(&subj.input, subj.pos);
|
| 15364 | + if (matchlen) {
|
| 15365 | + title = cmark_chunk_dup(&subj.input, subj.pos, matchlen);
|
| 15366 | + subj.pos += matchlen;
|
| 15367 | + } else {
|
| 15368 | + subj.pos = beforetitle;
|
| 15369 | + title = cmark_chunk_literal("");
|
| 15370 | + }
|
| 15371 | +
|
| 15372 | + // parse final spaces and newline:
|
| 15373 | + skip_spaces(&subj);
|
| 15374 | + if (!skip_line_end(&subj)) {
|
| 15375 | + if (matchlen) { // try rewinding before title
|
| 15376 | + subj.pos = beforetitle;
|
| 15377 | + skip_spaces(&subj);
|
| 15378 | + if (!skip_line_end(&subj)) {
|
| 15379 | + return 0;
|
| 15380 | + }
|
| 15381 | + } else {
|
| 15382 | + return 0;
|
| 15383 | + }
|
| 15384 | + }
|
| 15385 | + // insert reference into refmap
|
| 15386 | + cmark_reference_create(refmap, &lab, &url, &title);
|
| 15387 | + return subj.pos;
|
| 15388 | +}
|
| 15389 | +
|
| 15390 | +
|
| 15391 | +static const int8_t utf8proc_utf8class[256] = {
|
| 15392 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 15393 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 15394 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 15395 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 15396 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 15397 | + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15398 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15399 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 15400 | + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
| 15401 | + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
| 15402 | + 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0};
|
| 15403 | +
|
| 15404 | +static void encode_unknown(cmark_strbuf *buf) {
|
| 15405 | + static const uint8_t repl[] = {239, 191, 189};
|
| 15406 | + cmark_strbuf_put(buf, repl, 3);
|
| 15407 | +}
|
| 15408 | +
|
| 15409 | +static int utf8proc_charlen(const uint8_t *str, bufsize_t str_len) {
|
| 15410 | + int length, i;
|
| 15411 | +
|
| 15412 | + if (!str_len)
|
| 15413 | + return 0;
|
| 15414 | +
|
| 15415 | + length = utf8proc_utf8class[str[0]];
|
| 15416 | +
|
| 15417 | + if (!length)
|
| 15418 | + return -1;
|
| 15419 | +
|
| 15420 | + if (str_len >= 0 && (bufsize_t)length > str_len)
|
| 15421 | + return -str_len;
|
| 15422 | +
|
| 15423 | + for (i = 1; i < length; i++) {
|
| 15424 | + if ((str[i] & 0xC0) != 0x80)
|
| 15425 | + return -i;
|
| 15426 | + }
|
| 15427 | +
|
| 15428 | + return length;
|
| 15429 | +}
|
| 15430 | +
|
| 15431 | +// Validate a single UTF-8 character according to RFC 3629.
|
| 15432 | +static int utf8proc_valid(const uint8_t *str, bufsize_t str_len) {
|
| 15433 | + int length = utf8proc_utf8class[str[0]];
|
| 15434 | +
|
| 15435 | + if (!length)
|
| 15436 | + return -1;
|
| 15437 | +
|
| 15438 | + if ((bufsize_t)length > str_len)
|
| 15439 | + return -str_len;
|
| 15440 | +
|
| 15441 | + switch (length) {
|
| 15442 | + case 2:
|
| 15443 | + if ((str[1] & 0xC0) != 0x80)
|
| 15444 | + return -1;
|
| 15445 | + if (str[0] < 0xC2) {
|
| 15446 | + // Overlong
|
| 15447 | + return -length;
|
| 15448 | + }
|
| 15449 | + break;
|
| 15450 | +
|
| 15451 | + case 3:
|
| 15452 | + if ((str[1] & 0xC0) != 0x80)
|
| 15453 | + return -1;
|
| 15454 | + if ((str[2] & 0xC0) != 0x80)
|
| 15455 | + return -2;
|
| 15456 | + if (str[0] == 0xE0) {
|
| 15457 | + if (str[1] < 0xA0) {
|
| 15458 | + // Overlong
|
| 15459 | + return -length;
|
| 15460 | + }
|
| 15461 | + } else if (str[0] == 0xED) {
|
| 15462 | + if (str[1] >= 0xA0) {
|
| 15463 | + // Surrogate
|
| 15464 | + return -length;
|
| 15465 | + }
|
| 15466 | + }
|
| 15467 | + break;
|
| 15468 | +
|
| 15469 | + case 4:
|
| 15470 | + if ((str[1] & 0xC0) != 0x80)
|
| 15471 | + return -1;
|
| 15472 | + if ((str[2] & 0xC0) != 0x80)
|
| 15473 | + return -2;
|
| 15474 | + if ((str[3] & 0xC0) != 0x80)
|
| 15475 | + return -3;
|
| 15476 | + if (str[0] == 0xF0) {
|
| 15477 | + if (str[1] < 0x90) {
|
| 15478 | + // Overlong
|
| 15479 | + return -length;
|
| 15480 | + }
|
| 15481 | + } else if (str[0] >= 0xF4) {
|
| 15482 | + if (str[0] > 0xF4 || str[1] >= 0x90) {
|
| 15483 | + // Above 0x10FFFF
|
| 15484 | + return -length;
|
| 15485 | + }
|
| 15486 | + }
|
| 15487 | + break;
|
| 15488 | + }
|
| 15489 | +
|
| 15490 | + return length;
|
| 15491 | +}
|
| 15492 | +
|
| 15493 | +void cmark_utf8proc_check(cmark_strbuf *ob, const uint8_t *line,
|
| 15494 | + bufsize_t size) {
|
| 15495 | + bufsize_t i = 0;
|
| 15496 | +
|
| 15497 | + while (i < size) {
|
| 15498 | + bufsize_t org = i;
|
| 15499 | + int charlen = 0;
|
| 15500 | +
|
| 15501 | + while (i < size) {
|
| 15502 | + if (line[i] < 0x80 && line[i] != 0) {
|
| 15503 | + i++;
|
| 15504 | + } else if (line[i] >= 0x80) {
|
| 15505 | + charlen = utf8proc_valid(line + i, size - i);
|
| 15506 | + if (charlen < 0) {
|
| 15507 | + charlen = -charlen;
|
| 15508 | + break;
|
| 15509 | + }
|
| 15510 | + i += charlen;
|
| 15511 | + } else if (line[i] == 0) {
|
| 15512 | + // ASCII NUL is technically valid but rejected
|
| 15513 | + // for security reasons.
|
| 15514 | + charlen = 1;
|
| 15515 | + break;
|
| 15516 | + }
|
| 15517 | + }
|
| 15518 | +
|
| 15519 | + if (i > org) {
|
| 15520 | + cmark_strbuf_put(ob, line + org, i - org);
|
| 15521 | + }
|
| 15522 | +
|
| 15523 | + if (i >= size) {
|
| 15524 | + break;
|
| 15525 | + } else {
|
| 15526 | + // Invalid UTF-8
|
| 15527 | + encode_unknown(ob);
|
| 15528 | + i += charlen;
|
| 15529 | + }
|
| 15530 | + }
|
| 15531 | +}
|
| 15532 | +
|
| 15533 | +int cmark_utf8proc_iterate(const uint8_t *str, bufsize_t str_len,
|
| 15534 | + int32_t *dst) {
|
| 15535 | + int length;
|
| 15536 | + int32_t uc = -1;
|
| 15537 | +
|
| 15538 | + *dst = -1;
|
| 15539 | + length = utf8proc_charlen(str, str_len);
|
| 15540 | + if (length < 0)
|
| 15541 | + return -1;
|
| 15542 | +
|
| 15543 | + switch (length) {
|
| 15544 | + case 1:
|
| 15545 | + uc = str[0];
|
| 15546 | + break;
|
| 15547 | + case 2:
|
| 15548 | + uc = ((str[0] & 0x1F) << 6) + (str[1] & 0x3F);
|
| 15549 | + if (uc < 0x80)
|
| 15550 | + uc = -1;
|
| 15551 | + break;
|
| 15552 | + case 3:
|
| 15553 | + uc = ((str[0] & 0x0F) << 12) + ((str[1] & 0x3F) << 6) + (str[2] & 0x3F);
|
| 15554 | + if (uc < 0x800 || (uc >= 0xD800 && uc < 0xE000))
|
| 15555 | + uc = -1;
|
| 15556 | + break;
|
| 15557 | + case 4:
|
| 15558 | + uc = ((str[0] & 0x07) << 18) + ((str[1] & 0x3F) << 12) +
|
| 15559 | + ((str[2] & 0x3F) << 6) + (str[3] & 0x3F);
|
| 15560 | + if (uc < 0x10000 || uc >= 0x110000)
|
| 15561 | + uc = -1;
|
| 15562 | + break;
|
| 15563 | + }
|
| 15564 | +
|
| 15565 | + if (uc < 0)
|
| 15566 | + return -1;
|
| 15567 | +
|
| 15568 | + *dst = uc;
|
| 15569 | + return length;
|
| 15570 | +}
|
| 15571 | +
|
| 15572 | +void cmark_utf8proc_encode_char(int32_t uc, cmark_strbuf *buf) {
|
| 15573 | + uint8_t dst[4];
|
| 15574 | + bufsize_t len = 0;
|
| 15575 | +
|
| 15576 | + assert(uc >= 0);
|
| 15577 | +
|
| 15578 | + if (uc < 0x80) {
|
| 15579 | + dst[0] = (uint8_t)(uc);
|
| 15580 | + len = 1;
|
| 15581 | + } else if (uc < 0x800) {
|
| 15582 | + dst[0] = (uint8_t)(0xC0 + (uc >> 6));
|
| 15583 | + dst[1] = 0x80 + (uc & 0x3F);
|
| 15584 | + len = 2;
|
| 15585 | + } else if (uc == 0xFFFF) {
|
| 15586 | + dst[0] = 0xFF;
|
| 15587 | + len = 1;
|
| 15588 | + } else if (uc == 0xFFFE) {
|
| 15589 | + dst[0] = 0xFE;
|
| 15590 | + len = 1;
|
| 15591 | + } else if (uc < 0x10000) {
|
| 15592 | + dst[0] = (uint8_t)(0xE0 + (uc >> 12));
|
| 15593 | + dst[1] = 0x80 + ((uc >> 6) & 0x3F);
|
| 15594 | + dst[2] = 0x80 + (uc & 0x3F);
|
| 15595 | + len = 3;
|
| 15596 | + } else if (uc < 0x110000) {
|
| 15597 | + dst[0] = (uint8_t)(0xF0 + (uc >> 18));
|
| 15598 | + dst[1] = 0x80 + ((uc >> 12) & 0x3F);
|
| 15599 | + dst[2] = 0x80 + ((uc >> 6) & 0x3F);
|
| 15600 | + dst[3] = 0x80 + (uc & 0x3F);
|
| 15601 | + len = 4;
|
| 15602 | + } else {
|
| 15603 | + encode_unknown(buf);
|
| 15604 | + return;
|
| 15605 | + }
|
| 15606 | +
|
| 15607 | + cmark_strbuf_put(buf, dst, len);
|
| 15608 | +}
|
| 15609 | +
|
| 15610 | +void cmark_utf8proc_case_fold(cmark_strbuf *dest, const uint8_t *str,
|
| 15611 | + bufsize_t len) {
|
| 15612 | + int32_t c;
|
| 15613 | +
|
| 15614 | +#define bufpush(x) cmark_utf8proc_encode_char(x, dest)
|
| 15615 | +
|
| 15616 | + while (len > 0) {
|
| 15617 | + bufsize_t char_len = cmark_utf8proc_iterate(str, len, &c);
|
| 15618 | +
|
| 15619 | + if (char_len >= 0) {
|
| 15620 | +#include "case_fold_switch.inc"
|
| 15621 | + } else {
|
| 15622 | + encode_unknown(dest);
|
| 15623 | + char_len = -char_len;
|
| 15624 | + }
|
| 15625 | +
|
| 15626 | + str += char_len;
|
| 15627 | + len -= char_len;
|
| 15628 | + }
|
| 15629 | +}
|
| 15630 | +
|
| 15631 | +// matches anything in the Zs class, plus LF, CR, TAB, FF.
|
| 15632 | +int cmark_utf8proc_is_space(int32_t uc) {
|
| 15633 | + return (uc == 9 || uc == 10 || uc == 12 || uc == 13 || uc == 32 ||
|
| 15634 | + uc == 160 || uc == 5760 || (uc >= 8192 && uc <= 8202) || uc == 8239 ||
|
| 15635 | + uc == 8287 || uc == 12288);
|
| 15636 | +}
|
| 15637 | +
|
| 15638 | +// matches anything in the P[cdefios] classes.
|
| 15639 | +int cmark_utf8proc_is_punctuation(int32_t uc) {
|
| 15640 | + return (
|
| 15641 | + (uc < 128 && cmark_ispunct((char)uc)) || uc == 161 || uc == 167 ||
|
| 15642 | + uc == 171 || uc == 182 || uc == 183 || uc == 187 || uc == 191 ||
|
| 15643 | + uc == 894 || uc == 903 || (uc >= 1370 && uc <= 1375) || uc == 1417 ||
|
| 15644 | + uc == 1418 || uc == 1470 || uc == 1472 || uc == 1475 || uc == 1478 ||
|
| 15645 | + uc == 1523 || uc == 1524 || uc == 1545 || uc == 1546 || uc == 1548 ||
|
| 15646 | + uc == 1549 || uc == 1563 || uc == 1566 || uc == 1567 ||
|
| 15647 | + (uc >= 1642 && uc <= 1645) || uc == 1748 || (uc >= 1792 && uc <= 1805) ||
|
| 15648 | + (uc >= 2039 && uc <= 2041) || (uc >= 2096 && uc <= 2110) || uc == 2142 ||
|
| 15649 | + uc == 2404 || uc == 2405 || uc == 2416 || uc == 2800 || uc == 3572 ||
|
| 15650 | + uc == 3663 || uc == 3674 || uc == 3675 || (uc >= 3844 && uc <= 3858) ||
|
| 15651 | + uc == 3860 || (uc >= 3898 && uc <= 3901) || uc == 3973 ||
|
| 15652 | + (uc >= 4048 && uc <= 4052) || uc == 4057 || uc == 4058 ||
|
| 15653 | + (uc >= 4170 && uc <= 4175) || uc == 4347 || (uc >= 4960 && uc <= 4968) ||
|
| 15654 | + uc == 5120 || uc == 5741 || uc == 5742 || uc == 5787 || uc == 5788 ||
|
| 15655 | + (uc >= 5867 && uc <= 5869) || uc == 5941 || uc == 5942 ||
|
| 15656 | + (uc >= 6100 && uc <= 6102) || (uc >= 6104 && uc <= 6106) ||
|
| 15657 | + (uc >= 6144 && uc <= 6154) || uc == 6468 || uc == 6469 || uc == 6686 ||
|
| 15658 | + uc == 6687 || (uc >= 6816 && uc <= 6822) || (uc >= 6824 && uc <= 6829) ||
|
| 15659 | + (uc >= 7002 && uc <= 7008) || (uc >= 7164 && uc <= 7167) ||
|
| 15660 | + (uc >= 7227 && uc <= 7231) || uc == 7294 || uc == 7295 ||
|
| 15661 | + (uc >= 7360 && uc <= 7367) || uc == 7379 || (uc >= 8208 && uc <= 8231) ||
|
| 15662 | + (uc >= 8240 && uc <= 8259) || (uc >= 8261 && uc <= 8273) ||
|
| 15663 | + (uc >= 8275 && uc <= 8286) || uc == 8317 || uc == 8318 || uc == 8333 ||
|
| 15664 | + uc == 8334 || (uc >= 8968 && uc <= 8971) || uc == 9001 || uc == 9002 ||
|
| 15665 | + (uc >= 10088 && uc <= 10101) || uc == 10181 || uc == 10182 ||
|
| 15666 | + (uc >= 10214 && uc <= 10223) || (uc >= 10627 && uc <= 10648) ||
|
| 15667 | + (uc >= 10712 && uc <= 10715) || uc == 10748 || uc == 10749 ||
|
| 15668 | + (uc >= 11513 && uc <= 11516) || uc == 11518 || uc == 11519 ||
|
| 15669 | + uc == 11632 || (uc >= 11776 && uc <= 11822) ||
|
| 15670 | + (uc >= 11824 && uc <= 11842) || (uc >= 12289 && uc <= 12291) ||
|
| 15671 | + (uc >= 12296 && uc <= 12305) || (uc >= 12308 && uc <= 12319) ||
|
| 15672 | + uc == 12336 || uc == 12349 || uc == 12448 || uc == 12539 || uc == 42238 ||
|
| 15673 | + uc == 42239 || (uc >= 42509 && uc <= 42511) || uc == 42611 ||
|
| 15674 | + uc == 42622 || (uc >= 42738 && uc <= 42743) ||
|
| 15675 | + (uc >= 43124 && uc <= 43127) || uc == 43214 || uc == 43215 ||
|
| 15676 | + (uc >= 43256 && uc <= 43258) || uc == 43310 || uc == 43311 ||
|
| 15677 | + uc == 43359 || (uc >= 43457 && uc <= 43469) || uc == 43486 ||
|
| 15678 | + uc == 43487 || (uc >= 43612 && uc <= 43615) || uc == 43742 ||
|
| 15679 | + uc == 43743 || uc == 43760 || uc == 43761 || uc == 44011 || uc == 64830 ||
|
| 15680 | + uc == 64831 || (uc >= 65040 && uc <= 65049) ||
|
| 15681 | + (uc >= 65072 && uc <= 65106) || (uc >= 65108 && uc <= 65121) ||
|
| 15682 | + uc == 65123 || uc == 65128 || uc == 65130 || uc == 65131 ||
|
| 15683 | + (uc >= 65281 && uc <= 65283) || (uc >= 65285 && uc <= 65290) ||
|
| 15684 | + (uc >= 65292 && uc <= 65295) || uc == 65306 || uc == 65307 ||
|
| 15685 | + uc == 65311 || uc == 65312 || (uc >= 65339 && uc <= 65341) ||
|
| 15686 | + uc == 65343 || uc == 65371 || uc == 65373 ||
|
| 15687 | + (uc >= 65375 && uc <= 65381) || (uc >= 65792 && uc <= 65794) ||
|
| 15688 | + uc == 66463 || uc == 66512 || uc == 66927 || uc == 67671 || uc == 67871 ||
|
| 15689 | + uc == 67903 || (uc >= 68176 && uc <= 68184) || uc == 68223 ||
|
| 15690 | + (uc >= 68336 && uc <= 68342) || (uc >= 68409 && uc <= 68415) ||
|
| 15691 | + (uc >= 68505 && uc <= 68508) || (uc >= 69703 && uc <= 69709) ||
|
| 15692 | + uc == 69819 || uc == 69820 || (uc >= 69822 && uc <= 69825) ||
|
| 15693 | + (uc >= 69952 && uc <= 69955) || uc == 70004 || uc == 70005 ||
|
| 15694 | + (uc >= 70085 && uc <= 70088) || uc == 70093 ||
|
| 15695 | + (uc >= 70200 && uc <= 70205) || uc == 70854 ||
|
| 15696 | + (uc >= 71105 && uc <= 71113) || (uc >= 71233 && uc <= 71235) ||
|
| 15697 | + (uc >= 74864 && uc <= 74868) || uc == 92782 || uc == 92783 ||
|
| 15698 | + uc == 92917 || (uc >= 92983 && uc <= 92987) || uc == 92996 ||
|
| 15699 | + uc == 113823);
|
| 15700 | +}
|
| 15701 | +
|
| 15702 | +static unsigned int refhash(const unsigned char *link_ref) {
|
| 15703 | + unsigned int hash = 0;
|
| 15704 | +
|
| 15705 | + while (*link_ref)
|
| 15706 | + hash = (*link_ref++) + (hash << 6) + (hash << 16) - hash;
|
| 15707 | +
|
| 15708 | + return hash;
|
| 15709 | +}
|
| 15710 | +
|
| 15711 | +static void reference_free(cmark_reference_map *map, cmark_reference *ref) {
|
| 15712 | + cmark_mem *mem = map->mem;
|
| 15713 | + if (ref != NULL) {
|
| 15714 | + mem->free(ref->label);
|
| 15715 | + cmark_chunk_free(mem, &ref->url);
|
| 15716 | + cmark_chunk_free(mem, &ref->title);
|
| 15717 | + mem->free(ref);
|
| 15718 | + }
|
| 15719 | +}
|
| 15720 | +
|
| 15721 | +// normalize reference: collapse internal whitespace to single space,
|
| 15722 | +// remove leading/trailing whitespace, case fold
|
| 15723 | +// Return NULL if the reference name is actually empty (i.e. composed
|
| 15724 | +// solely from whitespace)
|
| 15725 | +static unsigned char *normalize_reference(cmark_mem *mem, cmark_chunk *ref) {
|
| 15726 | + cmark_strbuf normalized = CMARK_BUF_INIT(mem);
|
| 15727 | + unsigned char *result;
|
| 15728 | +
|
| 15729 | + if (ref == NULL)
|
| 15730 | + return NULL;
|
| 15731 | +
|
| 15732 | + if (ref->len == 0)
|
| 15733 | + return NULL;
|
| 15734 | +
|
| 15735 | + cmark_utf8proc_case_fold(&normalized, ref->data, ref->len);
|
| 15736 | + cmark_strbuf_trim(&normalized);
|
| 15737 | + cmark_strbuf_normalize_whitespace(&normalized);
|
| 15738 | +
|
| 15739 | + result = cmark_strbuf_detach(&normalized);
|
| 15740 | + assert(result);
|
| 15741 | +
|
| 15742 | + if (result[0] == '\0') {
|
| 15743 | + mem->free(result);
|
| 15744 | + return NULL;
|
| 15745 | + }
|
| 15746 | +
|
| 15747 | + return result;
|
| 15748 | +}
|
| 15749 | +
|
| 15750 | +static void add_reference(cmark_reference_map *map, cmark_reference *ref) {
|
| 15751 | + cmark_reference *t = ref->next = map->table[ref->hash % REFMAP_SIZE];
|
| 15752 | +
|
| 15753 | + while (t) {
|
| 15754 | + if (t->hash == ref->hash && !strcmp((char *)t->label, (char *)ref->label)) {
|
| 15755 | + reference_free(map, ref);
|
| 15756 | + return;
|
| 15757 | + }
|
| 15758 | +
|
| 15759 | + t = t->next;
|
| 15760 | + }
|
| 15761 | +
|
| 15762 | + map->table[ref->hash % REFMAP_SIZE] = ref;
|
| 15763 | +}
|
| 15764 | +
|
| 15765 | +void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label,
|
| 15766 | + cmark_chunk *url, cmark_chunk *title) {
|
| 15767 | + cmark_reference *ref;
|
| 15768 | + unsigned char *reflabel = normalize_reference(map->mem, label);
|
| 15769 | +
|
| 15770 | + /* empty reference name, or composed from only whitespace */
|
| 15771 | + if (reflabel == NULL)
|
| 15772 | + return;
|
| 15773 | +
|
| 15774 | + ref = (cmark_reference *)map->mem->calloc(1, sizeof(*ref));
|
| 15775 | + ref->label = reflabel;
|
| 15776 | + ref->hash = refhash(ref->label);
|
| 15777 | + ref->url = cmark_clean_url(map->mem, url);
|
| 15778 | + ref->title = cmark_clean_title(map->mem, title);
|
| 15779 | + ref->next = NULL;
|
| 15780 | +
|
| 15781 | + add_reference(map, ref);
|
| 15782 | +}
|
| 15783 | +
|
| 15784 | +// Returns reference if refmap contains a reference with matching
|
| 15785 | +// label, otherwise NULL.
|
| 15786 | +cmark_reference *cmark_reference_lookup(cmark_reference_map *map,
|
| 15787 | + cmark_chunk *label) {
|
| 15788 | + cmark_reference *ref = NULL;
|
| 15789 | + unsigned char *norm;
|
| 15790 | + unsigned int hash;
|
| 15791 | +
|
| 15792 | + if (label->len < 1 || label->len > MAX_LINK_LABEL_LENGTH)
|
| 15793 | + return NULL;
|
| 15794 | +
|
| 15795 | + if (map == NULL)
|
| 15796 | + return NULL;
|
| 15797 | +
|
| 15798 | + norm = normalize_reference(map->mem, label);
|
| 15799 | + if (norm == NULL)
|
| 15800 | + return NULL;
|
| 15801 | +
|
| 15802 | + hash = refhash(norm);
|
| 15803 | + ref = map->table[hash % REFMAP_SIZE];
|
| 15804 | +
|
| 15805 | + while (ref) {
|
| 15806 | + if (ref->hash == hash && !strcmp((char *)ref->label, (char *)norm))
|
| 15807 | + break;
|
| 15808 | + ref = ref->next;
|
| 15809 | + }
|
| 15810 | +
|
| 15811 | + map->mem->free(norm);
|
| 15812 | + return ref;
|
| 15813 | +}
|
| 15814 | +
|
| 15815 | +void cmark_reference_map_free(cmark_reference_map *map) {
|
| 15816 | + unsigned int i;
|
| 15817 | +
|
| 15818 | + if (map == NULL)
|
| 15819 | + return;
|
| 15820 | +
|
| 15821 | + for (i = 0; i < REFMAP_SIZE; ++i) {
|
| 15822 | + cmark_reference *ref = map->table[i];
|
| 15823 | + cmark_reference *next;
|
| 15824 | +
|
| 15825 | + while (ref) {
|
| 15826 | + next = ref->next;
|
| 15827 | + reference_free(map, ref);
|
| 15828 | + ref = next;
|
| 15829 | + }
|
| 15830 | + }
|
| 15831 | +
|
| 15832 | + map->mem->free(map);
|
| 15833 | +}
|
| 15834 | +
|
| 15835 | +cmark_reference_map *cmark_reference_map_new(cmark_mem *mem) {
|
| 15836 | + cmark_reference_map *map =
|
| 15837 | + (cmark_reference_map *)mem->calloc(1, sizeof(cmark_reference_map));
|
| 15838 | + map->mem = mem;
|
| 15839 | + return map;
|
| 15840 | +}
|
| 15841 | +
|
| 15842 | +
|
| 15843 | +
|
| 15844 | +/**
|
| 15845 | + * Block parsing implementation.
|
| 15846 | + *
|
| 15847 | + * For a high-level overview of the block parsing process,
|
| 15848 | + * see http://spec.commonmark.org/0.24/#phase-1-block-structure
|
| 15849 | + */
|
| 15850 | +
|
| 15851 | +
|
| 15852 | +#define CODE_INDENT 4
|
| 15853 | +#define TAB_STOP 4
|
| 15854 | +
|
| 15855 | +#ifndef MIN
|
| 15856 | +#define MIN(x, y) ((x < y) ? x : y)
|
| 15857 | +#endif
|
| 15858 | +
|
| 15859 | +#define peek_at(i, n) (i)->data[n]
|
| 15860 | +
|
| 15861 | +static bool S_last_line_blank(const cmark_node *node) {
|
| 15862 | + return (node->flags & CMARK_NODE__LAST_LINE_BLANK) != 0;
|
| 15863 | +}
|
| 15864 | +
|
| 15865 | +static CMARK_INLINE cmark_node_type S_type(const cmark_node *node) {
|
| 15866 | + return (cmark_node_type)node->type;
|
| 15867 | +}
|
| 15868 | +
|
| 15869 | +static void S_set_last_line_blank(cmark_node *node, bool is_blank) {
|
| 15870 | + if (is_blank)
|
| 15871 | + node->flags |= CMARK_NODE__LAST_LINE_BLANK;
|
| 15872 | + else
|
| 15873 | + node->flags &= ~CMARK_NODE__LAST_LINE_BLANK;
|
| 15874 | +}
|
| 15875 | +
|
| 15876 | +static CMARK_INLINE bool S_is_space_or_tab(char c) {
|
| 15877 | + return (c == ' ' || c == '\t');
|
| 15878 | +}
|
| 15879 | +
|
| 15880 | +static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer,
|
| 15881 | + size_t len, bool eof);
|
| 15882 | +
|
| 15883 | +static void S_process_line(cmark_parser *parser, const unsigned char *buffer,
|
| 15884 | + bufsize_t bytes);
|
| 15885 | +
|
| 15886 | +static cmark_node *make_block(cmark_mem *mem, cmark_node_type tag,
|
| 15887 | + int start_line, int start_column) {
|
| 15888 | + cmark_node *e;
|
| 15889 | +
|
| 15890 | + e = (cmark_node *)mem->calloc(1, sizeof(*e));
|
| 15891 | + cmark_strbuf_init(mem, &e->content, 32);
|
| 15892 | + e->type = (uint16_t)tag;
|
| 15893 | + e->flags = CMARK_NODE__OPEN;
|
| 15894 | + e->start_line = start_line;
|
| 15895 | + e->start_column = start_column;
|
| 15896 | + e->end_line = start_line;
|
| 15897 | +
|
| 15898 | + return e;
|
| 15899 | +}
|
| 15900 | +
|
| 15901 | +// Create a root document node.
|
| 15902 | +static cmark_node *make_document(cmark_mem *mem) {
|
| 15903 | + cmark_node *e = make_block(mem, CMARK_NODE_DOCUMENT, 1, 1);
|
| 15904 | + return e;
|
| 15905 | +}
|
| 15906 | +
|
| 15907 | +cmark_parser *cmark_parser_new_with_mem(int options, cmark_mem *mem) {
|
| 15908 | + cmark_parser *parser = (cmark_parser *)mem->calloc(1, sizeof(cmark_parser));
|
| 15909 | + parser->mem = mem;
|
| 15910 | +
|
| 15911 | + cmark_node *document = make_document(mem);
|
| 15912 | +
|
| 15913 | + cmark_strbuf_init(mem, &parser->curline, 256);
|
| 15914 | + cmark_strbuf_init(mem, &parser->linebuf, 0);
|
| 15915 | +
|
| 15916 | + parser->refmap = cmark_reference_map_new(mem);
|
| 15917 | + parser->root = document;
|
| 15918 | + parser->current = document;
|
| 15919 | + parser->line_number = 0;
|
| 15920 | + parser->offset = 0;
|
| 15921 | + parser->column = 0;
|
| 15922 | + parser->first_nonspace = 0;
|
| 15923 | + parser->first_nonspace_column = 0;
|
| 15924 | + parser->indent = 0;
|
| 15925 | + parser->blank = false;
|
| 15926 | + parser->partially_consumed_tab = false;
|
| 15927 | + parser->last_line_length = 0;
|
| 15928 | + parser->options = options;
|
| 15929 | + parser->last_buffer_ended_with_cr = false;
|
| 15930 | +
|
| 15931 | + return parser;
|
| 15932 | +}
|
| 15933 | +
|
| 15934 | +cmark_parser *cmark_parser_new(int options) {
|
| 15935 | + extern cmark_mem DEFAULT_MEM_ALLOCATOR;
|
| 15936 | + return cmark_parser_new_with_mem(options, &DEFAULT_MEM_ALLOCATOR);
|
| 15937 | +}
|
| 15938 | +
|
| 15939 | +void cmark_parser_free(cmark_parser *parser) {
|
| 15940 | + cmark_mem *mem = parser->mem;
|
| 15941 | + cmark_strbuf_free(&parser->curline);
|
| 15942 | + cmark_strbuf_free(&parser->linebuf);
|
| 15943 | + cmark_reference_map_free(parser->refmap);
|
| 15944 | + mem->free(parser);
|
| 15945 | +}
|
| 15946 | +
|
| 15947 | +static cmark_node *finalize(cmark_parser *parser, cmark_node *b);
|
| 15948 | +
|
| 15949 | +// Returns true if line has only space characters, else false.
|
| 15950 | +static bool is_blank(cmark_strbuf *s, bufsize_t offset) {
|
| 15951 | + while (offset < s->size) {
|
| 15952 | + switch (s->ptr[offset]) {
|
| 15953 | + case '\r':
|
| 15954 | + case '\n':
|
| 15955 | + return true;
|
| 15956 | + case ' ':
|
| 15957 | + offset++;
|
| 15958 | + break;
|
| 15959 | + case '\t':
|
| 15960 | + offset++;
|
| 15961 | + break;
|
| 15962 | + default:
|
| 15963 | + return false;
|
| 15964 | + }
|
| 15965 | + }
|
| 15966 | +
|
| 15967 | + return true;
|
| 15968 | +}
|
| 15969 | +
|
| 15970 | +static CMARK_INLINE bool can_contain(cmark_node_type parent_type,
|
| 15971 | + cmark_node_type child_type) {
|
| 15972 | + return (parent_type == CMARK_NODE_DOCUMENT ||
|
| 15973 | + parent_type == CMARK_NODE_BLOCK_QUOTE ||
|
| 15974 | + parent_type == CMARK_NODE_ITEM ||
|
| 15975 | + (parent_type == CMARK_NODE_LIST && child_type == CMARK_NODE_ITEM));
|
| 15976 | +}
|
| 15977 | +
|
| 15978 | +static CMARK_INLINE bool accepts_lines(cmark_node_type block_type) {
|
| 15979 | + return (block_type == CMARK_NODE_PARAGRAPH ||
|
| 15980 | + block_type == CMARK_NODE_HEADING ||
|
| 15981 | + block_type == CMARK_NODE_CODE_BLOCK);
|
| 15982 | +}
|
| 15983 | +
|
| 15984 | +static CMARK_INLINE bool contains_inlines(cmark_node_type block_type) {
|
| 15985 | + return (block_type == CMARK_NODE_PARAGRAPH ||
|
| 15986 | + block_type == CMARK_NODE_HEADING);
|
| 15987 | +}
|
| 15988 | +
|
| 15989 | +static void add_line(cmark_node *node, cmark_chunk *ch, cmark_parser *parser) {
|
| 15990 | + int chars_to_tab;
|
| 15991 | + int i;
|
| 15992 | + assert(node->flags & CMARK_NODE__OPEN);
|
| 15993 | + if (parser->partially_consumed_tab) {
|
| 15994 | + parser->offset += 1; // skip over tab
|
| 15995 | + // add space characters:
|
| 15996 | + chars_to_tab = TAB_STOP - (parser->column % TAB_STOP);
|
| 15997 | + for (i = 0; i < chars_to_tab; i++) {
|
| 15998 | + cmark_strbuf_putc(&node->content, ' ');
|
| 15999 | + }
|
| 16000 | + }
|
| 16001 | + cmark_strbuf_put(&node->content, ch->data + parser->offset,
|
| 16002 | + ch->len - parser->offset);
|
| 16003 | +}
|
| 16004 | +
|
| 16005 | +static void remove_trailing_blank_lines(cmark_strbuf *ln) {
|
| 16006 | + bufsize_t i;
|
| 16007 | + unsigned char c;
|
| 16008 | +
|
| 16009 | + for (i = ln->size - 1; i >= 0; --i) {
|
| 16010 | + c = ln->ptr[i];
|
| 16011 | +
|
| 16012 | + if (c != ' ' && c != '\t' && !S_is_line_end_char(c))
|
| 16013 | + break;
|
| 16014 | + }
|
| 16015 | +
|
| 16016 | + if (i < 0) {
|
| 16017 | + cmark_strbuf_clear(ln);
|
| 16018 | + return;
|
| 16019 | + }
|
| 16020 | +
|
| 16021 | + for (; i < ln->size; ++i) {
|
| 16022 | + c = ln->ptr[i];
|
| 16023 | +
|
| 16024 | + if (!S_is_line_end_char(c))
|
| 16025 | + continue;
|
| 16026 | +
|
| 16027 | + cmark_strbuf_truncate(ln, i);
|
| 16028 | + break;
|
| 16029 | + }
|
| 16030 | +}
|
| 16031 | +
|
| 16032 | +// Check to see if a node ends with a blank line, descending
|
| 16033 | +// if needed into lists and sublists.
|
| 16034 | +static bool ends_with_blank_line(cmark_node *node) {
|
| 16035 | + cmark_node *cur = node;
|
| 16036 | + while (cur != NULL) {
|
| 16037 | + if (S_last_line_blank(cur)) {
|
| 16038 | + return true;
|
| 16039 | + }
|
| 16040 | + if (S_type(cur) == CMARK_NODE_LIST || S_type(cur) == CMARK_NODE_ITEM) {
|
| 16041 | + cur = cur->last_child;
|
| 16042 | + } else {
|
| 16043 | + cur = NULL;
|
| 16044 | + }
|
| 16045 | + }
|
| 16046 | + return false;
|
| 16047 | +}
|
| 16048 | +
|
| 16049 | +static cmark_node *finalize(cmark_parser *parser, cmark_node *b) {
|
| 16050 | + bufsize_t pos;
|
| 16051 | + cmark_node *item;
|
| 16052 | + cmark_node *subitem;
|
| 16053 | + cmark_node *parent;
|
| 16054 | +
|
| 16055 | + parent = b->parent;
|
| 16056 | + assert(b->flags &
|
| 16057 | + CMARK_NODE__OPEN); // shouldn't call finalize on closed blocks
|
| 16058 | + b->flags &= ~CMARK_NODE__OPEN;
|
| 16059 | +
|
| 16060 | + if (parser->curline.size == 0) {
|
| 16061 | + // end of input - line number has not been incremented
|
| 16062 | + b->end_line = parser->line_number;
|
| 16063 | + b->end_column = parser->last_line_length;
|
| 16064 | + } else if (S_type(b) == CMARK_NODE_DOCUMENT ||
|
| 16065 | + (S_type(b) == CMARK_NODE_CODE_BLOCK && b->as.code.fenced) ||
|
| 16066 | + (S_type(b) == CMARK_NODE_HEADING && b->as.heading.setext)) {
|
| 16067 | + b->end_line = parser->line_number;
|
| 16068 | + b->end_column = parser->curline.size;
|
| 16069 | + if (b->end_column && parser->curline.ptr[b->end_column - 1] == '\n')
|
| 16070 | + b->end_column -= 1;
|
| 16071 | + if (b->end_column && parser->curline.ptr[b->end_column - 1] == '\r')
|
| 16072 | + b->end_column -= 1;
|
| 16073 | + } else {
|
| 16074 | + b->end_line = parser->line_number - 1;
|
| 16075 | + b->end_column = parser->last_line_length;
|
| 16076 | + }
|
| 16077 | +
|
| 16078 | + cmark_strbuf *node_content = &b->content;
|
| 16079 | +
|
| 16080 | + switch (S_type(b)) {
|
| 16081 | + case CMARK_NODE_PARAGRAPH:
|
| 16082 | + while (cmark_strbuf_at(node_content, 0) == '[' &&
|
| 16083 | + (pos = cmark_parse_reference_inline(parser->mem, node_content,
|
| 16084 | + parser->refmap))) {
|
| 16085 | +
|
| 16086 | + cmark_strbuf_drop(node_content, pos);
|
| 16087 | + }
|
| 16088 | + if (is_blank(node_content, 0)) {
|
| 16089 | + // remove blank node (former reference def)
|
| 16090 | + cmark_node_free(b);
|
| 16091 | + }
|
| 16092 | + break;
|
| 16093 | +
|
| 16094 | + case CMARK_NODE_CODE_BLOCK:
|
| 16095 | + if (!b->as.code.fenced) { // indented code
|
| 16096 | + remove_trailing_blank_lines(node_content);
|
| 16097 | + cmark_strbuf_putc(node_content, '\n');
|
| 16098 | + } else {
|
| 16099 | + // first line of contents becomes info
|
| 16100 | + for (pos = 0; pos < node_content->size; ++pos) {
|
| 16101 | + if (S_is_line_end_char(node_content->ptr[pos]))
|
| 16102 | + break;
|
| 16103 | + }
|
| 16104 | + assert(pos < node_content->size);
|
| 16105 | +
|
| 16106 | + cmark_strbuf tmp = CMARK_BUF_INIT(parser->mem);
|
| 16107 | + houdini_unescape_html_f(&tmp, node_content->ptr, pos);
|
| 16108 | + cmark_strbuf_trim(&tmp);
|
| 16109 | + cmark_strbuf_unescape(&tmp);
|
| 16110 | + b->as.code.info = cmark_chunk_buf_detach(&tmp);
|
| 16111 | +
|
| 16112 | + if (node_content->ptr[pos] == '\r')
|
| 16113 | + pos += 1;
|
| 16114 | + if (node_content->ptr[pos] == '\n')
|
| 16115 | + pos += 1;
|
| 16116 | + cmark_strbuf_drop(node_content, pos);
|
| 16117 | + }
|
| 16118 | + b->as.code.literal = cmark_chunk_buf_detach(node_content);
|
| 16119 | + break;
|
| 16120 | +
|
| 16121 | + case CMARK_NODE_HTML_BLOCK:
|
| 16122 | + b->as.literal = cmark_chunk_buf_detach(node_content);
|
| 16123 | + break;
|
| 16124 | +
|
| 16125 | + case CMARK_NODE_LIST: // determine tight/loose status
|
| 16126 | + b->as.list.tight = true; // tight by default
|
| 16127 | + item = b->first_child;
|
| 16128 | +
|
| 16129 | + while (item) {
|
| 16130 | + // check for non-final non-empty list item ending with blank line:
|
| 16131 | + if (S_last_line_blank(item) && item->next) {
|
| 16132 | + b->as.list.tight = false;
|
| 16133 | + break;
|
| 16134 | + }
|
| 16135 | + // recurse into children of list item, to see if there are
|
| 16136 | + // spaces between them:
|
| 16137 | + subitem = item->first_child;
|
| 16138 | + while (subitem) {
|
| 16139 | + if (ends_with_blank_line(subitem) && (item->next || subitem->next)) {
|
| 16140 | + b->as.list.tight = false;
|
| 16141 | + break;
|
| 16142 | + }
|
| 16143 | + subitem = subitem->next;
|
| 16144 | + }
|
| 16145 | + if (!(b->as.list.tight)) {
|
| 16146 | + break;
|
| 16147 | + }
|
| 16148 | + item = item->next;
|
| 16149 | + }
|
| 16150 | +
|
| 16151 | + break;
|
| 16152 | +
|
| 16153 | + default:
|
| 16154 | + break;
|
| 16155 | + }
|
| 16156 | +
|
| 16157 | + return parent;
|
| 16158 | +}
|
| 16159 | +
|
| 16160 | +// Add a node as child of another. Return pointer to child.
|
| 16161 | +static cmark_node *add_child(cmark_parser *parser, cmark_node *parent,
|
| 16162 | + cmark_node_type block_type, int start_column) {
|
| 16163 | + assert(parent);
|
| 16164 | +
|
| 16165 | + // if 'parent' isn't the kind of node that can accept this child,
|
| 16166 | + // then back up til we hit a node that can.
|
| 16167 | + while (!can_contain(S_type(parent), block_type)) {
|
| 16168 | + parent = finalize(parser, parent);
|
| 16169 | + }
|
| 16170 | +
|
| 16171 | + cmark_node *child =
|
| 16172 | + make_block(parser->mem, block_type, parser->line_number, start_column);
|
| 16173 | + child->parent = parent;
|
| 16174 | +
|
| 16175 | + if (parent->last_child) {
|
| 16176 | + parent->last_child->next = child;
|
| 16177 | + child->prev = parent->last_child;
|
| 16178 | + } else {
|
| 16179 | + parent->first_child = child;
|
| 16180 | + child->prev = NULL;
|
| 16181 | + }
|
| 16182 | + parent->last_child = child;
|
| 16183 | + return child;
|
| 16184 | +}
|
| 16185 | +
|
| 16186 | +// Walk through node and all children, recursively, parsing
|
| 16187 | +// string content into inline content where appropriate.
|
| 16188 | +static void process_inlines(cmark_mem *mem, cmark_node *root,
|
| 16189 | + cmark_reference_map *refmap, int options) {
|
| 16190 | + cmark_iter *iter = cmark_iter_new(root);
|
| 16191 | + cmark_node *cur;
|
| 16192 | + cmark_event_type ev_type;
|
| 16193 | +
|
| 16194 | + while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
|
| 16195 | + cur = cmark_iter_get_node(iter);
|
| 16196 | + if (ev_type == CMARK_EVENT_ENTER) {
|
| 16197 | + if (contains_inlines(S_type(cur))) {
|
| 16198 | + cmark_parse_inlines(mem, cur, refmap, options);
|
| 16199 | + }
|
| 16200 | + }
|
| 16201 | + }
|
| 16202 | +
|
| 16203 | + cmark_iter_free(iter);
|
| 16204 | +}
|
| 16205 | +
|
| 16206 | +// Attempts to parse a list item marker (bullet or enumerated).
|
| 16207 | +// On success, returns length of the marker, and populates
|
| 16208 | +// data with the details. On failure, returns 0.
|
| 16209 | +static bufsize_t parse_list_marker(cmark_mem *mem, cmark_chunk *input,
|
| 16210 | + bufsize_t pos, bool interrupts_paragraph,
|
| 16211 | + cmark_list **dataptr) {
|
| 16212 | + unsigned char c;
|
| 16213 | + bufsize_t startpos;
|
| 16214 | + cmark_list *data;
|
| 16215 | + bufsize_t i;
|
| 16216 | +
|
| 16217 | + startpos = pos;
|
| 16218 | + c = peek_at(input, pos);
|
| 16219 | +
|
| 16220 | + if (c == '*' || c == '-' || c == '+') {
|
| 16221 | + pos++;
|
| 16222 | + if (!cmark_isspace(peek_at(input, pos))) {
|
| 16223 | + return 0;
|
| 16224 | + }
|
| 16225 | +
|
| 16226 | + if (interrupts_paragraph) {
|
| 16227 | + i = pos;
|
| 16228 | + // require non-blank content after list marker:
|
| 16229 | + while (S_is_space_or_tab(peek_at(input, i))) {
|
| 16230 | + i++;
|
| 16231 | + }
|
| 16232 | + if (peek_at(input, i) == '\n') {
|
| 16233 | + return 0;
|
| 16234 | + }
|
| 16235 | + }
|
| 16236 | +
|
| 16237 | + data = (cmark_list *)mem->calloc(1, sizeof(*data));
|
| 16238 | + data->marker_offset = 0; // will be adjusted later
|
| 16239 | + data->list_type = CMARK_BULLET_LIST;
|
| 16240 | + data->bullet_char = c;
|
| 16241 | + data->start = 1;
|
| 16242 | + data->delimiter = CMARK_PERIOD_DELIM;
|
| 16243 | + data->tight = false;
|
| 16244 | + } else if (cmark_isdigit(c)) {
|
| 16245 | + int start = 0;
|
| 16246 | + int digits = 0;
|
| 16247 | +
|
| 16248 | + do {
|
| 16249 | + start = (10 * start) + (peek_at(input, pos) - '0');
|
| 16250 | + pos++;
|
| 16251 | + digits++;
|
| 16252 | + // We limit to 9 digits to avoid overflow,
|
| 16253 | + // assuming max int is 2^31 - 1
|
| 16254 | + // This also seems to be the limit for 'start' in some browsers.
|
| 16255 | + } while (digits < 9 && cmark_isdigit(peek_at(input, pos)));
|
| 16256 | +
|
| 16257 | + if (interrupts_paragraph && start != 1) {
|
| 16258 | + return 0;
|
| 16259 | + }
|
| 16260 | + c = peek_at(input, pos);
|
| 16261 | + if (c == '.' || c == ')') {
|
| 16262 | + pos++;
|
| 16263 | + if (!cmark_isspace(peek_at(input, pos))) {
|
| 16264 | + return 0;
|
| 16265 | + }
|
| 16266 | + if (interrupts_paragraph) {
|
| 16267 | + // require non-blank content after list marker:
|
| 16268 | + i = pos;
|
| 16269 | + while (S_is_space_or_tab(peek_at(input, i))) {
|
| 16270 | + i++;
|
| 16271 | + }
|
| 16272 | + if (S_is_line_end_char(peek_at(input, i))) {
|
| 16273 | + return 0;
|
| 16274 | + }
|
| 16275 | + }
|
| 16276 | +
|
| 16277 | + data = (cmark_list *)mem->calloc(1, sizeof(*data));
|
| 16278 | + data->marker_offset = 0; // will be adjusted later
|
| 16279 | + data->list_type = CMARK_ORDERED_LIST;
|
| 16280 | + data->bullet_char = 0;
|
| 16281 | + data->start = start;
|
| 16282 | + data->delimiter = (c == '.' ? CMARK_PERIOD_DELIM : CMARK_PAREN_DELIM);
|
| 16283 | + data->tight = false;
|
| 16284 | + } else {
|
| 16285 | + return 0;
|
| 16286 | + }
|
| 16287 | + } else {
|
| 16288 | + return 0;
|
| 16289 | + }
|
| 16290 | +
|
| 16291 | + *dataptr = data;
|
| 16292 | + return (pos - startpos);
|
| 16293 | +}
|
| 16294 | +
|
| 16295 | +// Return 1 if list item belongs in list, else 0.
|
| 16296 | +static int lists_match(cmark_list *list_data, cmark_list *item_data) {
|
| 16297 | + return (list_data->list_type == item_data->list_type &&
|
| 16298 | + list_data->delimiter == item_data->delimiter &&
|
| 16299 | + // list_data->marker_offset == item_data.marker_offset &&
|
| 16300 | + list_data->bullet_char == item_data->bullet_char);
|
| 16301 | +}
|
| 16302 | +
|
| 16303 | +static cmark_node *finalize_document(cmark_parser *parser) {
|
| 16304 | + while (parser->current != parser->root) {
|
| 16305 | + parser->current = finalize(parser, parser->current);
|
| 16306 | + }
|
| 16307 | +
|
| 16308 | + finalize(parser, parser->root);
|
| 16309 | + process_inlines(parser->mem, parser->root, parser->refmap, parser->options);
|
| 16310 | +
|
| 16311 | + return parser->root;
|
| 16312 | +}
|
| 16313 | +
|
| 16314 | +cmark_node *cmark_parse_file(FILE *f, int options) {
|
| 16315 | + unsigned char buffer[4096];
|
| 16316 | + cmark_parser *parser = cmark_parser_new(options);
|
| 16317 | + size_t bytes;
|
| 16318 | + cmark_node *document;
|
| 16319 | +
|
| 16320 | + while ((bytes = fread(buffer, 1, sizeof(buffer), f)) > 0) {
|
| 16321 | + bool eof = bytes < sizeof(buffer);
|
| 16322 | + S_parser_feed(parser, buffer, bytes, eof);
|
| 16323 | + if (eof) {
|
| 16324 | + break;
|
| 16325 | + }
|
| 16326 | + }
|
| 16327 | +
|
| 16328 | + document = cmark_parser_finish(parser);
|
| 16329 | + cmark_parser_free(parser);
|
| 16330 | + return document;
|
| 16331 | +}
|
| 16332 | +
|
| 16333 | +cmark_node *cmark_parse_document(const char *buffer, size_t len, int options) {
|
| 16334 | + cmark_parser *parser = cmark_parser_new(options);
|
| 16335 | + cmark_node *document;
|
| 16336 | +
|
| 16337 | + S_parser_feed(parser, (const unsigned char *)buffer, len, true);
|
| 16338 | +
|
| 16339 | + document = cmark_parser_finish(parser);
|
| 16340 | + cmark_parser_free(parser);
|
| 16341 | + return document;
|
| 16342 | +}
|
| 16343 | +
|
| 16344 | +void cmark_parser_feed(cmark_parser *parser, const char *buffer, size_t len) {
|
| 16345 | + S_parser_feed(parser, (const unsigned char *)buffer, len, false);
|
| 16346 | +}
|
| 16347 | +
|
| 16348 | +static void S_parser_feed(cmark_parser *parser, const unsigned char *buffer,
|
| 16349 | + size_t len, bool eof) {
|
| 16350 | + const unsigned char *end = buffer + len;
|
| 16351 | + static const uint8_t repl[] = {239, 191, 189};
|
| 16352 | +
|
| 16353 | + if (parser->last_buffer_ended_with_cr && *buffer == '\n') {
|
| 16354 | + // skip NL if last buffer ended with CR ; see #117
|
| 16355 | + buffer++;
|
| 16356 | + }
|
| 16357 | + parser->last_buffer_ended_with_cr = false;
|
| 16358 | + while (buffer < end) {
|
| 16359 | + const unsigned char *eol;
|
| 16360 | + bufsize_t chunk_len;
|
| 16361 | + bool process = false;
|
| 16362 | + for (eol = buffer; eol < end; ++eol) {
|
| 16363 | + if (S_is_line_end_char(*eol)) {
|
| 16364 | + process = true;
|
| 16365 | + break;
|
| 16366 | + }
|
| 16367 | + if (*eol == '\0' && eol < end) {
|
| 16368 | + break;
|
| 16369 | + }
|
| 16370 | + }
|
| 16371 | + if (eol >= end && eof) {
|
| 16372 | + process = true;
|
| 16373 | + }
|
| 16374 | +
|
| 16375 | + chunk_len = (eol - buffer);
|
| 16376 | + if (process) {
|
| 16377 | + if (parser->linebuf.size > 0) {
|
| 16378 | + cmark_strbuf_put(&parser->linebuf, buffer, chunk_len);
|
| 16379 | + S_process_line(parser, parser->linebuf.ptr, parser->linebuf.size);
|
| 16380 | + cmark_strbuf_clear(&parser->linebuf);
|
| 16381 | + } else {
|
| 16382 | + S_process_line(parser, buffer, chunk_len);
|
| 16383 | + }
|
| 16384 | + } else {
|
| 16385 | + if (eol < end && *eol == '\0') {
|
| 16386 | + // omit NULL byte
|
| 16387 | + cmark_strbuf_put(&parser->linebuf, buffer, chunk_len);
|
| 16388 | + // add replacement character
|
| 16389 | + cmark_strbuf_put(&parser->linebuf, repl, 3);
|
| 16390 | + } else {
|
| 16391 | + cmark_strbuf_put(&parser->linebuf, buffer, chunk_len);
|
| 16392 | + }
|
| 16393 | + }
|
| 16394 | +
|
| 16395 | + buffer += chunk_len;
|
| 16396 | + if (buffer < end) {
|
| 16397 | + if (*buffer == '\0') {
|
| 16398 | + // skip over NULL
|
| 16399 | + buffer++;
|
| 16400 | + } else {
|
| 16401 | + // skip over line ending characters
|
| 16402 | + if (*buffer == '\r') {
|
| 16403 | + buffer++;
|
| 16404 | + if (buffer == end)
|
| 16405 | + parser->last_buffer_ended_with_cr = true;
|
| 16406 | + }
|
| 16407 | + if (buffer < end && *buffer == '\n')
|
| 16408 | + buffer++;
|
| 16409 | + }
|
| 16410 | + }
|
| 16411 | + }
|
| 16412 | +}
|
| 16413 | +
|
| 16414 | +static void chop_trailing_hashtags(cmark_chunk *ch) {
|
| 16415 | + bufsize_t n, orig_n;
|
| 16416 | +
|
| 16417 | + cmark_chunk_rtrim(ch);
|
| 16418 | + orig_n = n = ch->len - 1;
|
| 16419 | +
|
| 16420 | + // if string ends in space followed by #s, remove these:
|
| 16421 | + while (n >= 0 && peek_at(ch, n) == '#')
|
| 16422 | + n--;
|
| 16423 | +
|
| 16424 | + // Check for a space before the final #s:
|
| 16425 | + if (n != orig_n && n >= 0 && S_is_space_or_tab(peek_at(ch, n))) {
|
| 16426 | + ch->len = n;
|
| 16427 | + cmark_chunk_rtrim(ch);
|
| 16428 | + }
|
| 16429 | +}
|
| 16430 | +
|
| 16431 | +// Find first nonspace character from current offset, setting
|
| 16432 | +// parser->first_nonspace, parser->first_nonspace_column,
|
| 16433 | +// parser->indent, and parser->blank. Does not advance parser->offset.
|
| 16434 | +static void S_find_first_nonspace(cmark_parser *parser, cmark_chunk *input) {
|
| 16435 | + char c;
|
| 16436 | + int chars_to_tab = TAB_STOP - (parser->column % TAB_STOP);
|
| 16437 | +
|
| 16438 | + parser->first_nonspace = parser->offset;
|
| 16439 | + parser->first_nonspace_column = parser->column;
|
| 16440 | + while ((c = peek_at(input, parser->first_nonspace))) {
|
| 16441 | + if (c == ' ') {
|
| 16442 | + parser->first_nonspace += 1;
|
| 16443 | + parser->first_nonspace_column += 1;
|
| 16444 | + chars_to_tab = chars_to_tab - 1;
|
| 16445 | + if (chars_to_tab == 0) {
|
| 16446 | + chars_to_tab = TAB_STOP;
|
| 16447 | + }
|
| 16448 | + } else if (c == '\t') {
|
| 16449 | + parser->first_nonspace += 1;
|
| 16450 | + parser->first_nonspace_column += chars_to_tab;
|
| 16451 | + chars_to_tab = TAB_STOP;
|
| 16452 | + } else {
|
| 16453 | + break;
|
| 16454 | + }
|
| 16455 | + }
|
| 16456 | +
|
| 16457 | + parser->indent = parser->first_nonspace_column - parser->column;
|
| 16458 | + parser->blank = S_is_line_end_char(peek_at(input, parser->first_nonspace));
|
| 16459 | +}
|
| 16460 | +
|
| 16461 | +// Advance parser->offset and parser->column. parser->offset is the
|
| 16462 | +// byte position in input; parser->column is a virtual column number
|
| 16463 | +// that takes into account tabs. (Multibyte characters are not taken
|
| 16464 | +// into account, because the Markdown line prefixes we are interested in
|
| 16465 | +// analyzing are entirely ASCII.) The count parameter indicates
|
| 16466 | +// how far to advance the offset. If columns is true, then count
|
| 16467 | +// indicates a number of columns; otherwise, a number of bytes.
|
| 16468 | +// If advancing a certain number of columns partially consumes
|
| 16469 | +// a tab character, parser->partially_consumed_tab is set to true.
|
| 16470 | +static void S_advance_offset(cmark_parser *parser, cmark_chunk *input,
|
| 16471 | + bufsize_t count, bool columns) {
|
| 16472 | + char c;
|
| 16473 | + int chars_to_tab;
|
| 16474 | + int chars_to_advance;
|
| 16475 | + while (count > 0 && (c = peek_at(input, parser->offset))) {
|
| 16476 | + if (c == '\t') {
|
| 16477 | + chars_to_tab = TAB_STOP - (parser->column % TAB_STOP);
|
| 16478 | + if (columns) {
|
| 16479 | + parser->partially_consumed_tab = chars_to_tab > count;
|
| 16480 | + chars_to_advance = MIN(count, chars_to_tab);
|
| 16481 | + parser->column += chars_to_advance;
|
| 16482 | + parser->offset += (parser->partially_consumed_tab ? 0 : 1);
|
| 16483 | + count -= chars_to_advance;
|
| 16484 | + } else {
|
| 16485 | + parser->partially_consumed_tab = false;
|
| 16486 | + parser->column += chars_to_tab;
|
| 16487 | + parser->offset += 1;
|
| 16488 | + count -= 1;
|
| 16489 | + }
|
| 16490 | + } else {
|
| 16491 | + parser->partially_consumed_tab = false;
|
| 16492 | + parser->offset += 1;
|
| 16493 | + parser->column += 1; // assume ascii; block starts are ascii
|
| 16494 | + count -= 1;
|
| 16495 | + }
|
| 16496 | + }
|
| 16497 | +}
|
| 16498 | +
|
| 16499 | +static bool S_last_child_is_open(cmark_node *container) {
|
| 16500 | + return container->last_child &&
|
| 16501 | + (container->last_child->flags & CMARK_NODE__OPEN);
|
| 16502 | +}
|
| 16503 | +
|
| 16504 | +static bool parse_block_quote_prefix(cmark_parser *parser, cmark_chunk *input) {
|
| 16505 | + bool res = false;
|
| 16506 | + bufsize_t matched = 0;
|
| 16507 | +
|
| 16508 | + matched =
|
| 16509 | + parser->indent <= 3 && peek_at(input, parser->first_nonspace) == '>';
|
| 16510 | + if (matched) {
|
| 16511 | +
|
| 16512 | + S_advance_offset(parser, input, parser->indent + 1, true);
|
| 16513 | +
|
| 16514 | + if (S_is_space_or_tab(peek_at(input, parser->offset))) {
|
| 16515 | + S_advance_offset(parser, input, 1, true);
|
| 16516 | + }
|
| 16517 | +
|
| 16518 | + res = true;
|
| 16519 | + }
|
| 16520 | + return res;
|
| 16521 | +}
|
| 16522 | +
|
| 16523 | +static bool parse_node_item_prefix(cmark_parser *parser, cmark_chunk *input,
|
| 16524 | + cmark_node *container) {
|
| 16525 | + bool res = false;
|
| 16526 | +
|
| 16527 | + if (parser->indent >=
|
| 16528 | + container->as.list.marker_offset + container->as.list.padding) {
|
| 16529 | + S_advance_offset(parser, input, container->as.list.marker_offset +
|
| 16530 | + container->as.list.padding,
|
| 16531 | + true);
|
| 16532 | + res = true;
|
| 16533 | + } else if (parser->blank && container->first_child != NULL) {
|
| 16534 | + // if container->first_child is NULL, then the opening line
|
| 16535 | + // of the list item was blank after the list marker; in this
|
| 16536 | + // case, we are done with the list item.
|
| 16537 | + S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
|
| 16538 | + false);
|
| 16539 | + res = true;
|
| 16540 | + }
|
| 16541 | + return res;
|
| 16542 | +}
|
| 16543 | +
|
| 16544 | +static bool parse_code_block_prefix(cmark_parser *parser, cmark_chunk *input,
|
| 16545 | + cmark_node *container,
|
| 16546 | + bool *should_continue) {
|
| 16547 | + bool res = false;
|
| 16548 | +
|
| 16549 | + if (!container->as.code.fenced) { // indented
|
| 16550 | + if (parser->indent >= CODE_INDENT) {
|
| 16551 | + S_advance_offset(parser, input, CODE_INDENT, true);
|
| 16552 | + res = true;
|
| 16553 | + } else if (parser->blank) {
|
| 16554 | + S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
|
| 16555 | + false);
|
| 16556 | + res = true;
|
| 16557 | + }
|
| 16558 | + } else { // fenced
|
| 16559 | + bufsize_t matched = 0;
|
| 16560 | +
|
| 16561 | + if (parser->indent <= 3 && (peek_at(input, parser->first_nonspace) ==
|
| 16562 | + container->as.code.fence_char)) {
|
| 16563 | + matched = scan_close_code_fence(input, parser->first_nonspace);
|
| 16564 | + }
|
| 16565 | +
|
| 16566 | + if (matched >= container->as.code.fence_length) {
|
| 16567 | + // closing fence - and since we're at
|
| 16568 | + // the end of a line, we can stop processing it:
|
| 16569 | + *should_continue = false;
|
| 16570 | + S_advance_offset(parser, input, matched, false);
|
| 16571 | + parser->current = finalize(parser, container);
|
| 16572 | + } else {
|
| 16573 | + // skip opt. spaces of fence parser->offset
|
| 16574 | + int i = container->as.code.fence_offset;
|
| 16575 | +
|
| 16576 | + while (i > 0 && S_is_space_or_tab(peek_at(input, parser->offset))) {
|
| 16577 | + S_advance_offset(parser, input, 1, true);
|
| 16578 | + i--;
|
| 16579 | + }
|
| 16580 | + res = true;
|
| 16581 | + }
|
| 16582 | + }
|
| 16583 | +
|
| 16584 | + return res;
|
| 16585 | +}
|
| 16586 | +
|
| 16587 | +static bool parse_html_block_prefix(cmark_parser *parser,
|
| 16588 | + cmark_node *container) {
|
| 16589 | + bool res = false;
|
| 16590 | + int html_block_type = container->as.html_block_type;
|
| 16591 | +
|
| 16592 | + assert(html_block_type >= 1 && html_block_type <= 7);
|
| 16593 | + switch (html_block_type) {
|
| 16594 | + case 1:
|
| 16595 | + case 2:
|
| 16596 | + case 3:
|
| 16597 | + case 4:
|
| 16598 | + case 5:
|
| 16599 | + // these types of blocks can accept blanks
|
| 16600 | + res = true;
|
| 16601 | + break;
|
| 16602 | + case 6:
|
| 16603 | + case 7:
|
| 16604 | + res = !parser->blank;
|
| 16605 | + break;
|
| 16606 | + }
|
| 16607 | +
|
| 16608 | + return res;
|
| 16609 | +}
|
| 16610 | +
|
| 16611 | +/**
|
| 16612 | + * For each containing node, try to parse the associated line start.
|
| 16613 | + *
|
| 16614 | + * Will not close unmatched blocks, as we may have a lazy continuation
|
| 16615 | + * line -> http://spec.commonmark.org/0.24/#lazy-continuation-line
|
| 16616 | + *
|
| 16617 | + * Returns: The last matching node, or NULL
|
| 16618 | + */
|
| 16619 | +static cmark_node *check_open_blocks(cmark_parser *parser, cmark_chunk *input,
|
| 16620 | + bool *all_matched) {
|
| 16621 | + bool should_continue = true;
|
| 16622 | + *all_matched = false;
|
| 16623 | + cmark_node *container = parser->root;
|
| 16624 | + cmark_node_type cont_type;
|
| 16625 | +
|
| 16626 | + while (S_last_child_is_open(container)) {
|
| 16627 | + container = container->last_child;
|
| 16628 | + cont_type = S_type(container);
|
| 16629 | +
|
| 16630 | + S_find_first_nonspace(parser, input);
|
| 16631 | +
|
| 16632 | + switch (cont_type) {
|
| 16633 | + case CMARK_NODE_BLOCK_QUOTE:
|
| 16634 | + if (!parse_block_quote_prefix(parser, input))
|
| 16635 | + goto done;
|
| 16636 | + break;
|
| 16637 | + case CMARK_NODE_ITEM:
|
| 16638 | + if (!parse_node_item_prefix(parser, input, container))
|
| 16639 | + goto done;
|
| 16640 | + break;
|
| 16641 | + case CMARK_NODE_CODE_BLOCK:
|
| 16642 | + if (!parse_code_block_prefix(parser, input, container, &should_continue))
|
| 16643 | + goto done;
|
| 16644 | + break;
|
| 16645 | + case CMARK_NODE_HEADING:
|
| 16646 | + // a heading can never contain more than one line
|
| 16647 | + goto done;
|
| 16648 | + case CMARK_NODE_HTML_BLOCK:
|
| 16649 | + if (!parse_html_block_prefix(parser, container))
|
| 16650 | + goto done;
|
| 16651 | + break;
|
| 16652 | + case CMARK_NODE_PARAGRAPH:
|
| 16653 | + if (parser->blank)
|
| 16654 | + goto done;
|
| 16655 | + break;
|
| 16656 | + default:
|
| 16657 | + break;
|
| 16658 | + }
|
| 16659 | + }
|
| 16660 | +
|
| 16661 | + *all_matched = true;
|
| 16662 | +
|
| 16663 | +done:
|
| 16664 | + if (!*all_matched) {
|
| 16665 | + container = container->parent; // back up to last matching node
|
| 16666 | + }
|
| 16667 | +
|
| 16668 | + if (!should_continue) {
|
| 16669 | + container = NULL;
|
| 16670 | + }
|
| 16671 | +
|
| 16672 | + return container;
|
| 16673 | +}
|
| 16674 | +
|
| 16675 | +static void open_new_blocks(cmark_parser *parser, cmark_node **container,
|
| 16676 | + cmark_chunk *input, bool all_matched) {
|
| 16677 | + bool indented;
|
| 16678 | + cmark_list *data = NULL;
|
| 16679 | + bool maybe_lazy = S_type(parser->current) == CMARK_NODE_PARAGRAPH;
|
| 16680 | + cmark_node_type cont_type = S_type(*container);
|
| 16681 | + bufsize_t matched = 0;
|
| 16682 | + int lev = 0;
|
| 16683 | + bool save_partially_consumed_tab;
|
| 16684 | + int save_offset;
|
| 16685 | + int save_column;
|
| 16686 | +
|
| 16687 | + while (cont_type != CMARK_NODE_CODE_BLOCK &&
|
| 16688 | + cont_type != CMARK_NODE_HTML_BLOCK) {
|
| 16689 | +
|
| 16690 | + S_find_first_nonspace(parser, input);
|
| 16691 | + indented = parser->indent >= CODE_INDENT;
|
| 16692 | +
|
| 16693 | + if (!indented && peek_at(input, parser->first_nonspace) == '>') {
|
| 16694 | +
|
| 16695 | + bufsize_t blockquote_startpos = parser->first_nonspace;
|
| 16696 | +
|
| 16697 | + S_advance_offset(parser, input,
|
| 16698 | + parser->first_nonspace + 1 - parser->offset, false);
|
| 16699 | + // optional following character
|
| 16700 | + if (S_is_space_or_tab(peek_at(input, parser->offset))) {
|
| 16701 | + S_advance_offset(parser, input, 1, true);
|
| 16702 | + }
|
| 16703 | + *container = add_child(parser, *container, CMARK_NODE_BLOCK_QUOTE,
|
| 16704 | + blockquote_startpos + 1);
|
| 16705 | +
|
| 16706 | + } else if (!indented && (matched = scan_atx_heading_start(
|
| 16707 | + input, parser->first_nonspace))) {
|
| 16708 | + bufsize_t hashpos;
|
| 16709 | + int level = 0;
|
| 16710 | + bufsize_t heading_startpos = parser->first_nonspace;
|
| 16711 | +
|
| 16712 | + S_advance_offset(parser, input,
|
| 16713 | + parser->first_nonspace + matched - parser->offset,
|
| 16714 | + false);
|
| 16715 | + *container = add_child(parser, *container, CMARK_NODE_HEADING,
|
| 16716 | + heading_startpos + 1);
|
| 16717 | +
|
| 16718 | + hashpos = cmark_chunk_strchr(input, '#', parser->first_nonspace);
|
| 16719 | +
|
| 16720 | + while (peek_at(input, hashpos) == '#') {
|
| 16721 | + level++;
|
| 16722 | + hashpos++;
|
| 16723 | + }
|
| 16724 | +
|
| 16725 | + (*container)->as.heading.level = level;
|
| 16726 | + (*container)->as.heading.setext = false;
|
| 16727 | +
|
| 16728 | + } else if (!indented && (matched = scan_open_code_fence(
|
| 16729 | + input, parser->first_nonspace))) {
|
| 16730 | + *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK,
|
| 16731 | + parser->first_nonspace + 1);
|
| 16732 | + (*container)->as.code.fenced = true;
|
| 16733 | + (*container)->as.code.fence_char = peek_at(input, parser->first_nonspace);
|
| 16734 | + (*container)->as.code.fence_length = (matched > 255) ? 255 : matched;
|
| 16735 | + (*container)->as.code.fence_offset =
|
| 16736 | + (int8_t)(parser->first_nonspace - parser->offset);
|
| 16737 | + (*container)->as.code.info = cmark_chunk_literal("");
|
| 16738 | + S_advance_offset(parser, input,
|
| 16739 | + parser->first_nonspace + matched - parser->offset,
|
| 16740 | + false);
|
| 16741 | +
|
| 16742 | + } else if (!indented && ((matched = scan_html_block_start(
|
| 16743 | + input, parser->first_nonspace)) ||
|
| 16744 | + (cont_type != CMARK_NODE_PARAGRAPH &&
|
| 16745 | + (matched = scan_html_block_start_7(
|
| 16746 | + input, parser->first_nonspace))))) {
|
| 16747 | + *container = add_child(parser, *container, CMARK_NODE_HTML_BLOCK,
|
| 16748 | + parser->first_nonspace + 1);
|
| 16749 | + (*container)->as.html_block_type = matched;
|
| 16750 | + // note, we don't adjust parser->offset because the tag is part of the
|
| 16751 | + // text
|
| 16752 | + } else if (!indented && cont_type == CMARK_NODE_PARAGRAPH &&
|
| 16753 | + (lev =
|
| 16754 | + scan_setext_heading_line(input, parser->first_nonspace))) {
|
| 16755 | + (*container)->type = (uint16_t)CMARK_NODE_HEADING;
|
| 16756 | + (*container)->as.heading.level = lev;
|
| 16757 | + (*container)->as.heading.setext = true;
|
| 16758 | + S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
|
| 16759 | + } else if (!indented &&
|
| 16760 | + !(cont_type == CMARK_NODE_PARAGRAPH && !all_matched) &&
|
| 16761 | + (matched = scan_thematic_break(input, parser->first_nonspace))) {
|
| 16762 | + // it's only now that we know the line is not part of a setext heading:
|
| 16763 | + *container = add_child(parser, *container, CMARK_NODE_THEMATIC_BREAK,
|
| 16764 | + parser->first_nonspace + 1);
|
| 16765 | + S_advance_offset(parser, input, input->len - 1 - parser->offset, false);
|
| 16766 | + } else if ((!indented || cont_type == CMARK_NODE_LIST) &&
|
| 16767 | + (matched = parse_list_marker(
|
| 16768 | + parser->mem, input, parser->first_nonspace,
|
| 16769 | + (*container)->type == CMARK_NODE_PARAGRAPH, &data))) {
|
| 16770 | +
|
| 16771 | + // Note that we can have new list items starting with >= 4
|
| 16772 | + // spaces indent, as long as the list container is still open.
|
| 16773 | + int i = 0;
|
| 16774 | +
|
| 16775 | + // compute padding:
|
| 16776 | + S_advance_offset(parser, input,
|
| 16777 | + parser->first_nonspace + matched - parser->offset,
|
| 16778 | + false);
|
| 16779 | +
|
| 16780 | + save_partially_consumed_tab = parser->partially_consumed_tab;
|
| 16781 | + save_offset = parser->offset;
|
| 16782 | + save_column = parser->column;
|
| 16783 | +
|
| 16784 | + while (parser->column - save_column <= 5 &&
|
| 16785 | + S_is_space_or_tab(peek_at(input, parser->offset))) {
|
| 16786 | + S_advance_offset(parser, input, 1, true);
|
| 16787 | + }
|
| 16788 | +
|
| 16789 | + i = parser->column - save_column;
|
| 16790 | + if (i >= 5 || i < 1 ||
|
| 16791 | + // only spaces after list marker:
|
| 16792 | + S_is_line_end_char(peek_at(input, parser->offset))) {
|
| 16793 | + data->padding = matched + 1;
|
| 16794 | + parser->offset = save_offset;
|
| 16795 | + parser->column = save_column;
|
| 16796 | + parser->partially_consumed_tab = save_partially_consumed_tab;
|
| 16797 | + if (i > 0) {
|
| 16798 | + S_advance_offset(parser, input, 1, true);
|
| 16799 | + }
|
| 16800 | + } else {
|
| 16801 | + data->padding = matched + i;
|
| 16802 | + }
|
| 16803 | +
|
| 16804 | + // check container; if it's a list, see if this list item
|
| 16805 | + // can continue the list; otherwise, create a list container.
|
| 16806 | +
|
| 16807 | + data->marker_offset = parser->indent;
|
| 16808 | +
|
| 16809 | + if (cont_type != CMARK_NODE_LIST ||
|
| 16810 | + !lists_match(&((*container)->as.list), data)) {
|
| 16811 | + *container = add_child(parser, *container, CMARK_NODE_LIST,
|
| 16812 | + parser->first_nonspace + 1);
|
| 16813 | +
|
| 16814 | + memcpy(&((*container)->as.list), data, sizeof(*data));
|
| 16815 | + }
|
| 16816 | +
|
| 16817 | + // add the list item
|
| 16818 | + *container = add_child(parser, *container, CMARK_NODE_ITEM,
|
| 16819 | + parser->first_nonspace + 1);
|
| 16820 | + /* TODO: static */
|
| 16821 | + memcpy(&((*container)->as.list), data, sizeof(*data));
|
| 16822 | + parser->mem->free(data);
|
| 16823 | + } else if (indented && !maybe_lazy && !parser->blank) {
|
| 16824 | + S_advance_offset(parser, input, CODE_INDENT, true);
|
| 16825 | + *container = add_child(parser, *container, CMARK_NODE_CODE_BLOCK,
|
| 16826 | + parser->offset + 1);
|
| 16827 | + (*container)->as.code.fenced = false;
|
| 16828 | + (*container)->as.code.fence_char = 0;
|
| 16829 | + (*container)->as.code.fence_length = 0;
|
| 16830 | + (*container)->as.code.fence_offset = 0;
|
| 16831 | + (*container)->as.code.info = cmark_chunk_literal("");
|
| 16832 | +
|
| 16833 | + } else {
|
| 16834 | + break;
|
| 16835 | + }
|
| 16836 | +
|
| 16837 | + if (accepts_lines(S_type(*container))) {
|
| 16838 | + // if it's a line container, it can't contain other containers
|
| 16839 | + break;
|
| 16840 | + }
|
| 16841 | +
|
| 16842 | + cont_type = S_type(*container);
|
| 16843 | + maybe_lazy = false;
|
| 16844 | + }
|
| 16845 | +}
|
| 16846 | +
|
| 16847 | +static void add_text_to_container(cmark_parser *parser, cmark_node *container,
|
| 16848 | + cmark_node *last_matched_container,
|
| 16849 | + cmark_chunk *input) {
|
| 16850 | + cmark_node *tmp;
|
| 16851 | + // what remains at parser->offset is a text line. add the text to the
|
| 16852 | + // appropriate container.
|
| 16853 | +
|
| 16854 | + S_find_first_nonspace(parser, input);
|
| 16855 | +
|
| 16856 | + if (parser->blank && container->last_child)
|
| 16857 | + S_set_last_line_blank(container->last_child, true);
|
| 16858 | +
|
| 16859 | + // block quote lines are never blank as they start with >
|
| 16860 | + // and we don't count blanks in fenced code for purposes of tight/loose
|
| 16861 | + // lists or breaking out of lists. we also don't set last_line_blank
|
| 16862 | + // on an empty list item.
|
| 16863 | + const cmark_node_type ctype = S_type(container);
|
| 16864 | + const bool last_line_blank =
|
| 16865 | + (parser->blank && ctype != CMARK_NODE_BLOCK_QUOTE &&
|
| 16866 | + ctype != CMARK_NODE_HEADING && ctype != CMARK_NODE_THEMATIC_BREAK &&
|
| 16867 | + !(ctype == CMARK_NODE_CODE_BLOCK && container->as.code.fenced) &&
|
| 16868 | + !(ctype == CMARK_NODE_ITEM && container->first_child == NULL &&
|
| 16869 | + container->start_line == parser->line_number));
|
| 16870 | +
|
| 16871 | + S_set_last_line_blank(container, last_line_blank);
|
| 16872 | +
|
| 16873 | + tmp = container;
|
| 16874 | + while (tmp->parent) {
|
| 16875 | + S_set_last_line_blank(tmp->parent, false);
|
| 16876 | + tmp = tmp->parent;
|
| 16877 | + }
|
| 16878 | +
|
| 16879 | + // If the last line processed belonged to a paragraph node,
|
| 16880 | + // and we didn't match all of the line prefixes for the open containers,
|
| 16881 | + // and we didn't start any new containers,
|
| 16882 | + // and the line isn't blank,
|
| 16883 | + // then treat this as a "lazy continuation line" and add it to
|
| 16884 | + // the open paragraph.
|
| 16885 | + if (parser->current != last_matched_container &&
|
| 16886 | + container == last_matched_container && !parser->blank &&
|
| 16887 | + S_type(parser->current) == CMARK_NODE_PARAGRAPH) {
|
| 16888 | + add_line(parser->current, input, parser);
|
| 16889 | + } else { // not a lazy continuation
|
| 16890 | + // Finalize any blocks that were not matched and set cur to container:
|
| 16891 | + while (parser->current != last_matched_container) {
|
| 16892 | + parser->current = finalize(parser, parser->current);
|
| 16893 | + assert(parser->current != NULL);
|
| 16894 | + }
|
| 16895 | +
|
| 16896 | + if (S_type(container) == CMARK_NODE_CODE_BLOCK) {
|
| 16897 | + add_line(container, input, parser);
|
| 16898 | + } else if (S_type(container) == CMARK_NODE_HTML_BLOCK) {
|
| 16899 | + add_line(container, input, parser);
|
| 16900 | +
|
| 16901 | + int matches_end_condition;
|
| 16902 | + switch (container->as.html_block_type) {
|
| 16903 | + case 1:
|
| 16904 | + // </script>, </style>, </pre>
|
| 16905 | + matches_end_condition =
|
| 16906 | + scan_html_block_end_1(input, parser->first_nonspace);
|
| 16907 | + break;
|
| 16908 | + case 2:
|
| 16909 | + // -->
|
| 16910 | + matches_end_condition =
|
| 16911 | + scan_html_block_end_2(input, parser->first_nonspace);
|
| 16912 | + break;
|
| 16913 | + case 3:
|
| 16914 | + // ?>
|
| 16915 | + matches_end_condition =
|
| 16916 | + scan_html_block_end_3(input, parser->first_nonspace);
|
| 16917 | + break;
|
| 16918 | + case 4:
|
| 16919 | + // >
|
| 16920 | + matches_end_condition =
|
| 16921 | + scan_html_block_end_4(input, parser->first_nonspace);
|
| 16922 | + break;
|
| 16923 | + case 5:
|
| 16924 | + // ]]>
|
| 16925 | + matches_end_condition =
|
| 16926 | + scan_html_block_end_5(input, parser->first_nonspace);
|
| 16927 | + break;
|
| 16928 | + default:
|
| 16929 | + matches_end_condition = 0;
|
| 16930 | + break;
|
| 16931 | + }
|
| 16932 | +
|
| 16933 | + if (matches_end_condition) {
|
| 16934 | + container = finalize(parser, container);
|
| 16935 | + assert(parser->current != NULL);
|
| 16936 | + }
|
| 16937 | + } else if (parser->blank) {
|
| 16938 | + // ??? do nothing
|
| 16939 | + } else if (accepts_lines(S_type(container))) {
|
| 16940 | + if (S_type(container) == CMARK_NODE_HEADING &&
|
| 16941 | + container->as.heading.setext == false) {
|
| 16942 | + chop_trailing_hashtags(input);
|
| 16943 | + }
|
| 16944 | + S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
|
| 16945 | + false);
|
| 16946 | + add_line(container, input, parser);
|
| 16947 | + } else {
|
| 16948 | + // create paragraph container for line
|
| 16949 | + container = add_child(parser, container, CMARK_NODE_PARAGRAPH,
|
| 16950 | + parser->first_nonspace + 1);
|
| 16951 | + S_advance_offset(parser, input, parser->first_nonspace - parser->offset,
|
| 16952 | + false);
|
| 16953 | + add_line(container, input, parser);
|
| 16954 | + }
|
| 16955 | +
|
| 16956 | + parser->current = container;
|
| 16957 | + }
|
| 16958 | +}
|
| 16959 | +
|
| 16960 | +/* See http://spec.commonmark.org/0.24/#phase-1-block-structure */
|
| 16961 | +static void S_process_line(cmark_parser *parser, const unsigned char *buffer,
|
| 16962 | + bufsize_t bytes) {
|
| 16963 | + cmark_node *last_matched_container;
|
| 16964 | + bool all_matched = true;
|
| 16965 | + cmark_node *container;
|
| 16966 | + cmark_chunk input;
|
| 16967 | +
|
| 16968 | + if (parser->options & CMARK_OPT_VALIDATE_UTF8)
|
| 16969 | + cmark_utf8proc_check(&parser->curline, buffer, bytes);
|
| 16970 | + else
|
| 16971 | + cmark_strbuf_put(&parser->curline, buffer, bytes);
|
| 16972 | +
|
| 16973 | + // ensure line ends with a newline:
|
| 16974 | + if (bytes == 0 || !S_is_line_end_char(parser->curline.ptr[bytes - 1]))
|
| 16975 | + cmark_strbuf_putc(&parser->curline, '\n');
|
| 16976 | +
|
| 16977 | + parser->offset = 0;
|
| 16978 | + parser->column = 0;
|
| 16979 | + parser->blank = false;
|
| 16980 | + parser->partially_consumed_tab = false;
|
| 16981 | +
|
| 16982 | + input.data = parser->curline.ptr;
|
| 16983 | + input.len = parser->curline.size;
|
| 16984 | + input.alloc = 0;
|
| 16985 | +
|
| 16986 | + parser->line_number++;
|
| 16987 | +
|
| 16988 | + last_matched_container = check_open_blocks(parser, &input, &all_matched);
|
| 16989 | +
|
| 16990 | + if (!last_matched_container)
|
| 16991 | + goto finished;
|
| 16992 | +
|
| 16993 | + container = last_matched_container;
|
| 16994 | +
|
| 16995 | + open_new_blocks(parser, &container, &input, all_matched);
|
| 16996 | +
|
| 16997 | + add_text_to_container(parser, container, last_matched_container, &input);
|
| 16998 | +
|
| 16999 | +finished:
|
| 17000 | + parser->last_line_length = input.len;
|
| 17001 | + if (parser->last_line_length &&
|
| 17002 | + input.data[parser->last_line_length - 1] == '\n')
|
| 17003 | + parser->last_line_length -= 1;
|
| 17004 | + if (parser->last_line_length &&
|
| 17005 | + input.data[parser->last_line_length - 1] == '\r')
|
| 17006 | + parser->last_line_length -= 1;
|
| 17007 | +
|
| 17008 | + cmark_strbuf_clear(&parser->curline);
|
| 17009 | +}
|
| 17010 | +
|
| 17011 | +cmark_node *cmark_parser_finish(cmark_parser *parser) {
|
| 17012 | + if (parser->linebuf.size) {
|
| 17013 | + S_process_line(parser, parser->linebuf.ptr, parser->linebuf.size);
|
| 17014 | + cmark_strbuf_clear(&parser->linebuf);
|
| 17015 | + }
|
| 17016 | +
|
| 17017 | + finalize_document(parser);
|
| 17018 | +
|
| 17019 | + if (parser->options & CMARK_OPT_NORMALIZE) {
|
| 17020 | + cmark_consolidate_text_nodes(parser->root);
|
| 17021 | + }
|
| 17022 | +
|
| 17023 | + cmark_strbuf_free(&parser->curline);
|
| 17024 | +
|
| 17025 | +#if CMARK_DEBUG_NODES
|
| 17026 | + if (cmark_node_check(parser->root, stderr)) {
|
| 17027 | + abort();
|
| 17028 | + }
|
| 17029 | +#endif
|
| 17030 | + return parser->root;
|
| 17031 | +}
|
| 17032 | +
|
| 17033 | +
|
| 17034 | +
|
| 17035 | +const char *cmark_version_string() { return CMARK_VERSION_STRING; }
|
| 17036 | +
|
| 17037 | +static void *xcalloc(size_t nmem, size_t size) {
|
| 17038 | + void *ptr = calloc(nmem, size);
|
| 17039 | + if (!ptr)
|
| 17040 | + abort();
|
| 17041 | + return ptr;
|
| 17042 | +}
|
| 17043 | +
|
| 17044 | +static void *xrealloc(void *ptr, size_t size) {
|
| 17045 | + void *new_ptr = realloc(ptr, size);
|
| 17046 | + if (!new_ptr)
|
| 17047 | + abort();
|
| 17048 | + return new_ptr;
|
| 17049 | +}
|
| 17050 | +
|
| 17051 | +cmark_mem DEFAULT_MEM_ALLOCATOR = {xcalloc, xrealloc, free};
|
| 17052 | +
|
| 17053 | +char *cmark_markdown_to_html(const char *text, size_t len, int options) {
|
| 17054 | + cmark_node *doc;
|
| 17055 | + char *result;
|
| 17056 | +
|
| 17057 | + doc = cmark_parse_document(text, len, options);
|
| 17058 | +
|
| 17059 | + result = cmark_render_html(doc, options);
|
| 17060 | + cmark_node_free(doc);
|
| 17061 | +
|
| 17062 | + return result;
|
| 17063 | +}
|
| 17064 | +
|
| 17065 | +
|
| 17066 | +
|
| 17067 | +/** 1 = space, 2 = punct, 3 = digit, 4 = alpha, 0 = other
|
| 17068 | + */
|
| 17069 | +static const uint8_t cmark_ctype_class[256] = {
|
| 17070 | + /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
| 17071 | + /* 0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0,
|
| 17072 | + /* 1 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17073 | + /* 2 */ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
| 17074 | + /* 3 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
|
| 17075 | + /* 4 */ 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
| 17076 | + /* 5 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2,
|
| 17077 | + /* 6 */ 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
| 17078 | + /* 7 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 0,
|
| 17079 | + /* 8 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17080 | + /* 9 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17081 | + /* a */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17082 | + /* b */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17083 | + /* c */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17084 | + /* d */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17085 | + /* e */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 17086 | + /* f */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
| 17087 | +
|
| 17088 | +/**
|
| 17089 | + * Returns 1 if c is a "whitespace" character as defined by the spec.
|
| 17090 | + */
|
| 17091 | +int cmark_isspace(char c) { return cmark_ctype_class[(uint8_t)c] == 1; }
|
| 17092 | +
|
| 17093 | +/**
|
| 17094 | + * Returns 1 if c is an ascii punctuation character.
|
| 17095 | + */
|
| 17096 | +int cmark_ispunct(char c) { return cmark_ctype_class[(uint8_t)c] == 2; }
|
| 17097 | +
|
| 17098 | +int cmark_isalnum(char c) {
|
| 17099 | + uint8_t result;
|
| 17100 | + result = cmark_ctype_class[(uint8_t)c];
|
| 17101 | + return (result == 3 || result == 4);
|
| 17102 | +}
|
| 17103 | +
|
| 17104 | +int cmark_isdigit(char c) { return cmark_ctype_class[(uint8_t)c] == 3; }
|
| 17105 | +
|
| 17106 | +int cmark_isalpha(char c) { return cmark_ctype_class[(uint8_t)c] == 4; }
|
| 17107 | +
|
| 17108 | +
|
| 17109 | +
|
| 17110 | +#include <stdarg.h>
|
| 17111 | +#include <string.h>
|
| 17112 | +#include <assert.h>
|
| 17113 | +#include <string.h>
|
| 17114 | +#include <stdio.h>
|
| 17115 | +#include <stdlib.h>
|
| 17116 | +#include <stdint.h>
|
| 17117 | +#include <limits.h>
|
| 17118 | +
|
| 17119 | +
|
| 17120 | +/* Used as default value for cmark_strbuf->ptr so that people can always
|
| 17121 | + * assume ptr is non-NULL and zero terminated even for new cmark_strbufs.
|
| 17122 | + */
|
| 17123 | +unsigned char cmark_strbuf__initbuf[1];
|
| 17124 | +
|
| 17125 | +#ifndef MIN
|
| 17126 | +#define MIN(x, y) ((x < y) ? x : y)
|
| 17127 | +#endif
|
| 17128 | +
|
| 17129 | +void cmark_strbuf_init(cmark_mem *mem, cmark_strbuf *buf,
|
| 17130 | + bufsize_t initial_size) {
|
| 17131 | + buf->mem = mem;
|
| 17132 | + buf->asize = 0;
|
| 17133 | + buf->size = 0;
|
| 17134 | + buf->ptr = cmark_strbuf__initbuf;
|
| 17135 | +
|
| 17136 | + if (initial_size > 0)
|
| 17137 | + cmark_strbuf_grow(buf, initial_size);
|
| 17138 | +}
|
| 17139 | +
|
| 17140 | +static CMARK_INLINE void S_strbuf_grow_by(cmark_strbuf *buf, bufsize_t add) {
|
| 17141 | + cmark_strbuf_grow(buf, buf->size + add);
|
| 17142 | +}
|
| 17143 | +
|
| 17144 | +void cmark_strbuf_grow(cmark_strbuf *buf, bufsize_t target_size) {
|
| 17145 | + assert(target_size > 0);
|
| 17146 | +
|
| 17147 | + if (target_size < buf->asize)
|
| 17148 | + return;
|
| 17149 | +
|
| 17150 | + if (target_size > (bufsize_t)(INT32_MAX / 2))
|
| 17151 | + abort();
|
| 17152 | +
|
| 17153 | + /* Oversize the buffer by 50% to guarantee amortized linear time
|
| 17154 | + * complexity on append operations. */
|
| 17155 | + bufsize_t new_size = target_size + target_size / 2;
|
| 17156 | + new_size += 1;
|
| 17157 | + new_size = (new_size + 7) & ~7;
|
| 17158 | +
|
| 17159 | + buf->ptr = (unsigned char *)buf->mem->realloc(buf->asize ? buf->ptr : NULL,
|
| 17160 | + new_size);
|
| 17161 | + buf->asize = new_size;
|
| 17162 | +}
|
| 17163 | +
|
| 17164 | +bufsize_t cmark_strbuf_len(const cmark_strbuf *buf) { return buf->size; }
|
| 17165 | +
|
| 17166 | +void cmark_strbuf_free(cmark_strbuf *buf) {
|
| 17167 | + if (!buf)
|
| 17168 | + return;
|
| 17169 | +
|
| 17170 | + if (buf->ptr != cmark_strbuf__initbuf)
|
| 17171 | + buf->mem->free(buf->ptr);
|
| 17172 | +
|
| 17173 | + cmark_strbuf_init(buf->mem, buf, 0);
|
| 17174 | +}
|
| 17175 | +
|
| 17176 | +void cmark_strbuf_clear(cmark_strbuf *buf) {
|
| 17177 | + buf->size = 0;
|
| 17178 | +
|
| 17179 | + if (buf->asize > 0)
|
| 17180 | + buf->ptr[0] = '\0';
|
| 17181 | +}
|
| 17182 | +
|
| 17183 | +void cmark_strbuf_set(cmark_strbuf *buf, const unsigned char *data,
|
| 17184 | + bufsize_t len) {
|
| 17185 | + if (len <= 0 || data == NULL) {
|
| 17186 | + cmark_strbuf_clear(buf);
|
| 17187 | + } else {
|
| 17188 | + if (data != buf->ptr) {
|
| 17189 | + if (len >= buf->asize)
|
| 17190 | + cmark_strbuf_grow(buf, len);
|
| 17191 | + memmove(buf->ptr, data, len);
|
| 17192 | + }
|
| 17193 | + buf->size = len;
|
| 17194 | + buf->ptr[buf->size] = '\0';
|
| 17195 | + }
|
| 17196 | +}
|
| 17197 | +
|
| 17198 | +void cmark_strbuf_sets(cmark_strbuf *buf, const char *string) {
|
| 17199 | + cmark_strbuf_set(buf, (const unsigned char *)string,
|
| 17200 | + string ? strlen(string) : 0);
|
| 17201 | +}
|
| 17202 | +
|
| 17203 | +void cmark_strbuf_putc(cmark_strbuf *buf, int c) {
|
| 17204 | + S_strbuf_grow_by(buf, 1);
|
| 17205 | + buf->ptr[buf->size++] = (unsigned char)(c & 0xFF);
|
| 17206 | + buf->ptr[buf->size] = '\0';
|
| 17207 | +}
|
| 17208 | +
|
| 17209 | +void cmark_strbuf_put(cmark_strbuf *buf, const unsigned char *data,
|
| 17210 | + bufsize_t len) {
|
| 17211 | + if (len <= 0)
|
| 17212 | + return;
|
| 17213 | +
|
| 17214 | + S_strbuf_grow_by(buf, len);
|
| 17215 | + memmove(buf->ptr + buf->size, data, len);
|
| 17216 | + buf->size += len;
|
| 17217 | + buf->ptr[buf->size] = '\0';
|
| 17218 | +}
|
| 17219 | +
|
| 17220 | +void cmark_strbuf_puts(cmark_strbuf *buf, const char *string) {
|
| 17221 | + cmark_strbuf_put(buf, (const unsigned char *)string, strlen(string));
|
| 17222 | +}
|
| 17223 | +
|
| 17224 | +void cmark_strbuf_copy_cstr(char *data, bufsize_t datasize,
|
| 17225 | + const cmark_strbuf *buf) {
|
| 17226 | + bufsize_t copylen;
|
| 17227 | +
|
| 17228 | + assert(buf);
|
| 17229 | + if (!data || datasize <= 0)
|
| 17230 | + return;
|
| 17231 | +
|
| 17232 | + data[0] = '\0';
|
| 17233 | +
|
| 17234 | + if (buf->size == 0 || buf->asize <= 0)
|
| 17235 | + return;
|
| 17236 | +
|
| 17237 | + copylen = buf->size;
|
| 17238 | + if (copylen > datasize - 1)
|
| 17239 | + copylen = datasize - 1;
|
| 17240 | + memmove(data, buf->ptr, copylen);
|
| 17241 | + data[copylen] = '\0';
|
| 17242 | +}
|
| 17243 | +
|
| 17244 | +void cmark_strbuf_swap(cmark_strbuf *buf_a, cmark_strbuf *buf_b) {
|
| 17245 | + cmark_strbuf t = *buf_a;
|
| 17246 | + *buf_a = *buf_b;
|
| 17247 | + *buf_b = t;
|
| 17248 | +}
|
| 17249 | +
|
| 17250 | +unsigned char *cmark_strbuf_detach(cmark_strbuf *buf) {
|
| 17251 | + unsigned char *data = buf->ptr;
|
| 17252 | +
|
| 17253 | + if (buf->asize == 0) {
|
| 17254 | + /* return an empty string */
|
| 17255 | + return (unsigned char *)buf->mem->calloc(1, 1);
|
| 17256 | + }
|
| 17257 | +
|
| 17258 | + cmark_strbuf_init(buf->mem, buf, 0);
|
| 17259 | + return data;
|
| 17260 | +}
|
| 17261 | +
|
| 17262 | +int cmark_strbuf_cmp(const cmark_strbuf *a, const cmark_strbuf *b) {
|
| 17263 | + int result = memcmp(a->ptr, b->ptr, MIN(a->size, b->size));
|
| 17264 | + return (result != 0) ? result
|
| 17265 | + : (a->size < b->size) ? -1 : (a->size > b->size) ? 1 : 0;
|
| 17266 | +}
|
| 17267 | +
|
| 17268 | +bufsize_t cmark_strbuf_strchr(const cmark_strbuf *buf, int c, bufsize_t pos) {
|
| 17269 | + if (pos >= buf->size)
|
| 17270 | + return -1;
|
| 17271 | + if (pos < 0)
|
| 17272 | + pos = 0;
|
| 17273 | +
|
| 17274 | + const unsigned char *p =
|
| 17275 | + (unsigned char *)memchr(buf->ptr + pos, c, buf->size - pos);
|
| 17276 | + if (!p)
|
| 17277 | + return -1;
|
| 17278 | +
|
| 17279 | + return (bufsize_t)(p - (const unsigned char *)buf->ptr);
|
| 17280 | +}
|
| 17281 | +
|
| 17282 | +bufsize_t cmark_strbuf_strrchr(const cmark_strbuf *buf, int c, bufsize_t pos) {
|
| 17283 | + if (pos < 0 || buf->size == 0)
|
| 17284 | + return -1;
|
| 17285 | + if (pos >= buf->size)
|
| 17286 | + pos = buf->size - 1;
|
| 17287 | +
|
| 17288 | + bufsize_t i;
|
| 17289 | + for (i = pos; i >= 0; i--) {
|
| 17290 | + if (buf->ptr[i] == (unsigned char)c)
|
| 17291 | + return i;
|
| 17292 | + }
|
| 17293 | +
|
| 17294 | + return -1;
|
| 17295 | +}
|
| 17296 | +
|
| 17297 | +void cmark_strbuf_truncate(cmark_strbuf *buf, bufsize_t len) {
|
| 17298 | + if (len < 0)
|
| 17299 | + len = 0;
|
| 17300 | +
|
| 17301 | + if (len < buf->size) {
|
| 17302 | + buf->size = len;
|
| 17303 | + buf->ptr[buf->size] = '\0';
|
| 17304 | + }
|
| 17305 | +}
|
| 17306 | +
|
| 17307 | +void cmark_strbuf_drop(cmark_strbuf *buf, bufsize_t n) {
|
| 17308 | + if (n > 0) {
|
| 17309 | + if (n > buf->size)
|
| 17310 | + n = buf->size;
|
| 17311 | + buf->size = buf->size - n;
|
| 17312 | + if (buf->size)
|
| 17313 | + memmove(buf->ptr, buf->ptr + n, buf->size);
|
| 17314 | +
|
| 17315 | + buf->ptr[buf->size] = '\0';
|
| 17316 | + }
|
| 17317 | +}
|
| 17318 | +
|
| 17319 | +void cmark_strbuf_rtrim(cmark_strbuf *buf) {
|
| 17320 | + if (!buf->size)
|
| 17321 | + return;
|
| 17322 | +
|
| 17323 | + while (buf->size > 0) {
|
| 17324 | + if (!cmark_isspace(buf->ptr[buf->size - 1]))
|
| 17325 | + break;
|
| 17326 | +
|
| 17327 | + buf->size--;
|
| 17328 | + }
|
| 17329 | +
|
| 17330 | + buf->ptr[buf->size] = '\0';
|
| 17331 | +}
|
| 17332 | +
|
| 17333 | +void cmark_strbuf_trim(cmark_strbuf *buf) {
|
| 17334 | + bufsize_t i = 0;
|
| 17335 | +
|
| 17336 | + if (!buf->size)
|
| 17337 | + return;
|
| 17338 | +
|
| 17339 | + while (i < buf->size && cmark_isspace(buf->ptr[i]))
|
| 17340 | + i++;
|
| 17341 | +
|
| 17342 | + cmark_strbuf_drop(buf, i);
|
| 17343 | +
|
| 17344 | + cmark_strbuf_rtrim(buf);
|
| 17345 | +}
|
| 17346 | +
|
| 17347 | +// Destructively modify string, collapsing consecutive
|
| 17348 | +// space and newline characters into a single space.
|
| 17349 | +void cmark_strbuf_normalize_whitespace(cmark_strbuf *s) {
|
| 17350 | + bool last_char_was_space = false;
|
| 17351 | + bufsize_t r, w;
|
| 17352 | +
|
| 17353 | + for (r = 0, w = 0; r < s->size; ++r) {
|
| 17354 | + if (cmark_isspace(s->ptr[r])) {
|
| 17355 | + if (!last_char_was_space) {
|
| 17356 | + s->ptr[w++] = ' ';
|
| 17357 | + last_char_was_space = true;
|
| 17358 | + }
|
| 17359 | + } else {
|
| 17360 | + s->ptr[w++] = s->ptr[r];
|
| 17361 | + last_char_was_space = false;
|
| 17362 | + }
|
| 17363 | + }
|
| 17364 | +
|
| 17365 | + cmark_strbuf_truncate(s, w);
|
| 17366 | +}
|
| 17367 | +
|
| 17368 | +// Destructively unescape a string: remove backslashes before punctuation chars.
|
| 17369 | +extern void cmark_strbuf_unescape(cmark_strbuf *buf) {
|
| 17370 | + bufsize_t r, w;
|
| 17371 | +
|
| 17372 | + for (r = 0, w = 0; r < buf->size; ++r) {
|
| 17373 | + if (buf->ptr[r] == '\\' && cmark_ispunct(buf->ptr[r + 1]))
|
| 17374 | + r++;
|
| 17375 | +
|
| 17376 | + buf->ptr[w++] = buf->ptr[r];
|
| 17377 | + }
|
| 17378 | +
|
| 17379 | + cmark_strbuf_truncate(buf, w);
|
| 17380 | +}
|
| 17381 | +
|
| 17382 | +
|
| 17383 | +static void S_node_unlink(cmark_node *node);
|
| 17384 | +
|
| 17385 | +#define NODE_MEM(node) cmark_node_mem(node)
|
| 17386 | +
|
| 17387 | +static CMARK_INLINE bool S_is_block(cmark_node *node) {
|
| 17388 | + if (node == NULL) {
|
| 17389 | + return false;
|
| 17390 | + }
|
| 17391 | + return node->type >= CMARK_NODE_FIRST_BLOCK &&
|
| 17392 | + node->type <= CMARK_NODE_LAST_BLOCK;
|
| 17393 | +}
|
| 17394 | +
|
| 17395 | +static CMARK_INLINE bool S_is_inline(cmark_node *node) {
|
| 17396 | + if (node == NULL) {
|
| 17397 | + return false;
|
| 17398 | + }
|
| 17399 | + return node->type >= CMARK_NODE_FIRST_INLINE &&
|
| 17400 | + node->type <= CMARK_NODE_LAST_INLINE;
|
| 17401 | +}
|
| 17402 | +
|
| 17403 | +static bool S_can_contain(cmark_node *node, cmark_node *child) {
|
| 17404 | + cmark_node *cur;
|
| 17405 | +
|
| 17406 | + if (node == NULL || child == NULL) {
|
| 17407 | + return false;
|
| 17408 | + }
|
| 17409 | +
|
| 17410 | + // Verify that child is not an ancestor of node or equal to node.
|
| 17411 | + cur = node;
|
| 17412 | + do {
|
| 17413 | + if (cur == child) {
|
| 17414 | + return false;
|
| 17415 | + }
|
| 17416 | + cur = cur->parent;
|
| 17417 | + } while (cur != NULL);
|
| 17418 | +
|
| 17419 | + if (child->type == CMARK_NODE_DOCUMENT) {
|
| 17420 | + return false;
|
| 17421 | + }
|
| 17422 | +
|
| 17423 | + switch (node->type) {
|
| 17424 | + case CMARK_NODE_DOCUMENT:
|
| 17425 | + case CMARK_NODE_BLOCK_QUOTE:
|
| 17426 | + case CMARK_NODE_ITEM:
|
| 17427 | + return S_is_block(child) && child->type != CMARK_NODE_ITEM;
|
| 17428 | +
|
| 17429 | + case CMARK_NODE_LIST:
|
| 17430 | + return child->type == CMARK_NODE_ITEM;
|
| 17431 | +
|
| 17432 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17433 | + return true;
|
| 17434 | +
|
| 17435 | + case CMARK_NODE_PARAGRAPH:
|
| 17436 | + case CMARK_NODE_HEADING:
|
| 17437 | + case CMARK_NODE_EMPH:
|
| 17438 | + case CMARK_NODE_STRONG:
|
| 17439 | + case CMARK_NODE_LINK:
|
| 17440 | + case CMARK_NODE_IMAGE:
|
| 17441 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17442 | + return S_is_inline(child);
|
| 17443 | +
|
| 17444 | + default:
|
| 17445 | + break;
|
| 17446 | + }
|
| 17447 | +
|
| 17448 | + return false;
|
| 17449 | +}
|
| 17450 | +
|
| 17451 | +cmark_node *cmark_node_new_with_mem(cmark_node_type type, cmark_mem *mem) {
|
| 17452 | + cmark_node *node = (cmark_node *)mem->calloc(1, sizeof(*node));
|
| 17453 | + cmark_strbuf_init(mem, &node->content, 0);
|
| 17454 | + node->type = (uint16_t)type;
|
| 17455 | +
|
| 17456 | + switch (node->type) {
|
| 17457 | + case CMARK_NODE_HEADING:
|
| 17458 | + node->as.heading.level = 1;
|
| 17459 | + break;
|
| 17460 | +
|
| 17461 | + case CMARK_NODE_LIST: {
|
| 17462 | + cmark_list *list = &node->as.list;
|
| 17463 | + list->list_type = CMARK_BULLET_LIST;
|
| 17464 | + list->start = 1;
|
| 17465 | + list->tight = false;
|
| 17466 | + break;
|
| 17467 | + }
|
| 17468 | +
|
| 17469 | + default:
|
| 17470 | + break;
|
| 17471 | + }
|
| 17472 | +
|
| 17473 | + return node;
|
| 17474 | +}
|
| 17475 | +
|
| 17476 | +cmark_node *cmark_node_new(cmark_node_type type) {
|
| 17477 | + extern cmark_mem DEFAULT_MEM_ALLOCATOR;
|
| 17478 | + return cmark_node_new_with_mem(type, &DEFAULT_MEM_ALLOCATOR);
|
| 17479 | +}
|
| 17480 | +
|
| 17481 | +// Free a cmark_node list and any children.
|
| 17482 | +static void S_free_nodes(cmark_node *e) {
|
| 17483 | + cmark_node *next;
|
| 17484 | + while (e != NULL) {
|
| 17485 | + cmark_strbuf_free(&e->content);
|
| 17486 | + switch (e->type) {
|
| 17487 | + case CMARK_NODE_CODE_BLOCK:
|
| 17488 | + cmark_chunk_free(NODE_MEM(e), &e->as.code.info);
|
| 17489 | + cmark_chunk_free(NODE_MEM(e), &e->as.code.literal);
|
| 17490 | + break;
|
| 17491 | + case CMARK_NODE_TEXT:
|
| 17492 | + case CMARK_NODE_HTML_INLINE:
|
| 17493 | + case CMARK_NODE_CODE:
|
| 17494 | + case CMARK_NODE_HTML_BLOCK:
|
| 17495 | + cmark_chunk_free(NODE_MEM(e), &e->as.literal);
|
| 17496 | + break;
|
| 17497 | + case CMARK_NODE_LINK:
|
| 17498 | + case CMARK_NODE_IMAGE:
|
| 17499 | + cmark_chunk_free(NODE_MEM(e), &e->as.link.url);
|
| 17500 | + cmark_chunk_free(NODE_MEM(e), &e->as.link.title);
|
| 17501 | + break;
|
| 17502 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17503 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17504 | + cmark_chunk_free(NODE_MEM(e), &e->as.custom.on_enter);
|
| 17505 | + cmark_chunk_free(NODE_MEM(e), &e->as.custom.on_exit);
|
| 17506 | + break;
|
| 17507 | + default:
|
| 17508 | + break;
|
| 17509 | + }
|
| 17510 | + if (e->last_child) {
|
| 17511 | + // Splice children into list
|
| 17512 | + e->last_child->next = e->next;
|
| 17513 | + e->next = e->first_child;
|
| 17514 | + }
|
| 17515 | + next = e->next;
|
| 17516 | + NODE_MEM(e)->free(e);
|
| 17517 | + e = next;
|
| 17518 | + }
|
| 17519 | +}
|
| 17520 | +
|
| 17521 | +void cmark_node_free(cmark_node *node) {
|
| 17522 | + S_node_unlink(node);
|
| 17523 | + node->next = NULL;
|
| 17524 | + S_free_nodes(node);
|
| 17525 | +}
|
| 17526 | +
|
| 17527 | +cmark_node_type cmark_node_get_type(cmark_node *node) {
|
| 17528 | + if (node == NULL) {
|
| 17529 | + return CMARK_NODE_NONE;
|
| 17530 | + } else {
|
| 17531 | + return (cmark_node_type)node->type;
|
| 17532 | + }
|
| 17533 | +}
|
| 17534 | +
|
| 17535 | +const char *cmark_node_get_type_string(cmark_node *node) {
|
| 17536 | + if (node == NULL) {
|
| 17537 | + return "NONE";
|
| 17538 | + }
|
| 17539 | +
|
| 17540 | + switch (node->type) {
|
| 17541 | + case CMARK_NODE_NONE:
|
| 17542 | + return "none";
|
| 17543 | + case CMARK_NODE_DOCUMENT:
|
| 17544 | + return "document";
|
| 17545 | + case CMARK_NODE_BLOCK_QUOTE:
|
| 17546 | + return "block_quote";
|
| 17547 | + case CMARK_NODE_LIST:
|
| 17548 | + return "list";
|
| 17549 | + case CMARK_NODE_ITEM:
|
| 17550 | + return "item";
|
| 17551 | + case CMARK_NODE_CODE_BLOCK:
|
| 17552 | + return "code_block";
|
| 17553 | + case CMARK_NODE_HTML_BLOCK:
|
| 17554 | + return "html_block";
|
| 17555 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17556 | + return "custom_block";
|
| 17557 | + case CMARK_NODE_PARAGRAPH:
|
| 17558 | + return "paragraph";
|
| 17559 | + case CMARK_NODE_HEADING:
|
| 17560 | + return "heading";
|
| 17561 | + case CMARK_NODE_THEMATIC_BREAK:
|
| 17562 | + return "thematic_break";
|
| 17563 | + case CMARK_NODE_TEXT:
|
| 17564 | + return "text";
|
| 17565 | + case CMARK_NODE_SOFTBREAK:
|
| 17566 | + return "softbreak";
|
| 17567 | + case CMARK_NODE_LINEBREAK:
|
| 17568 | + return "linebreak";
|
| 17569 | + case CMARK_NODE_CODE:
|
| 17570 | + return "code";
|
| 17571 | + case CMARK_NODE_HTML_INLINE:
|
| 17572 | + return "html_inline";
|
| 17573 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17574 | + return "custom_inline";
|
| 17575 | + case CMARK_NODE_EMPH:
|
| 17576 | + return "emph";
|
| 17577 | + case CMARK_NODE_STRONG:
|
| 17578 | + return "strong";
|
| 17579 | + case CMARK_NODE_LINK:
|
| 17580 | + return "link";
|
| 17581 | + case CMARK_NODE_IMAGE:
|
| 17582 | + return "image";
|
| 17583 | + }
|
| 17584 | +
|
| 17585 | + return "<unknown>";
|
| 17586 | +}
|
| 17587 | +
|
| 17588 | +cmark_node *cmark_node_next(cmark_node *node) {
|
| 17589 | + if (node == NULL) {
|
| 17590 | + return NULL;
|
| 17591 | + } else {
|
| 17592 | + return node->next;
|
| 17593 | + }
|
| 17594 | +}
|
| 17595 | +
|
| 17596 | +cmark_node *cmark_node_previous(cmark_node *node) {
|
| 17597 | + if (node == NULL) {
|
| 17598 | + return NULL;
|
| 17599 | + } else {
|
| 17600 | + return node->prev;
|
| 17601 | + }
|
| 17602 | +}
|
| 17603 | +
|
| 17604 | +cmark_node *cmark_node_parent(cmark_node *node) {
|
| 17605 | + if (node == NULL) {
|
| 17606 | + return NULL;
|
| 17607 | + } else {
|
| 17608 | + return node->parent;
|
| 17609 | + }
|
| 17610 | +}
|
| 17611 | +
|
| 17612 | +cmark_node *cmark_node_first_child(cmark_node *node) {
|
| 17613 | + if (node == NULL) {
|
| 17614 | + return NULL;
|
| 17615 | + } else {
|
| 17616 | + return node->first_child;
|
| 17617 | + }
|
| 17618 | +}
|
| 17619 | +
|
| 17620 | +cmark_node *cmark_node_last_child(cmark_node *node) {
|
| 17621 | + if (node == NULL) {
|
| 17622 | + return NULL;
|
| 17623 | + } else {
|
| 17624 | + return node->last_child;
|
| 17625 | + }
|
| 17626 | +}
|
| 17627 | +
|
| 17628 | +void *cmark_node_get_user_data(cmark_node *node) {
|
| 17629 | + if (node == NULL) {
|
| 17630 | + return NULL;
|
| 17631 | + } else {
|
| 17632 | + return node->user_data;
|
| 17633 | + }
|
| 17634 | +}
|
| 17635 | +
|
| 17636 | +int cmark_node_set_user_data(cmark_node *node, void *user_data) {
|
| 17637 | + if (node == NULL) {
|
| 17638 | + return 0;
|
| 17639 | + }
|
| 17640 | + node->user_data = user_data;
|
| 17641 | + return 1;
|
| 17642 | +}
|
| 17643 | +
|
| 17644 | +const char *cmark_node_get_literal(cmark_node *node) {
|
| 17645 | + if (node == NULL) {
|
| 17646 | + return NULL;
|
| 17647 | + }
|
| 17648 | +
|
| 17649 | + switch (node->type) {
|
| 17650 | + case CMARK_NODE_HTML_BLOCK:
|
| 17651 | + case CMARK_NODE_TEXT:
|
| 17652 | + case CMARK_NODE_HTML_INLINE:
|
| 17653 | + case CMARK_NODE_CODE:
|
| 17654 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.literal);
|
| 17655 | +
|
| 17656 | + case CMARK_NODE_CODE_BLOCK:
|
| 17657 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.literal);
|
| 17658 | +
|
| 17659 | + default:
|
| 17660 | + break;
|
| 17661 | + }
|
| 17662 | +
|
| 17663 | + return NULL;
|
| 17664 | +}
|
| 17665 | +
|
| 17666 | +int cmark_node_set_literal(cmark_node *node, const char *content) {
|
| 17667 | + if (node == NULL) {
|
| 17668 | + return 0;
|
| 17669 | + }
|
| 17670 | +
|
| 17671 | + switch (node->type) {
|
| 17672 | + case CMARK_NODE_HTML_BLOCK:
|
| 17673 | + case CMARK_NODE_TEXT:
|
| 17674 | + case CMARK_NODE_HTML_INLINE:
|
| 17675 | + case CMARK_NODE_CODE:
|
| 17676 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.literal, content);
|
| 17677 | + return 1;
|
| 17678 | +
|
| 17679 | + case CMARK_NODE_CODE_BLOCK:
|
| 17680 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.literal, content);
|
| 17681 | + return 1;
|
| 17682 | +
|
| 17683 | + default:
|
| 17684 | + break;
|
| 17685 | + }
|
| 17686 | +
|
| 17687 | + return 0;
|
| 17688 | +}
|
| 17689 | +
|
| 17690 | +int cmark_node_get_heading_level(cmark_node *node) {
|
| 17691 | + if (node == NULL) {
|
| 17692 | + return 0;
|
| 17693 | + }
|
| 17694 | +
|
| 17695 | + switch (node->type) {
|
| 17696 | + case CMARK_NODE_HEADING:
|
| 17697 | + return node->as.heading.level;
|
| 17698 | +
|
| 17699 | + default:
|
| 17700 | + break;
|
| 17701 | + }
|
| 17702 | +
|
| 17703 | + return 0;
|
| 17704 | +}
|
| 17705 | +
|
| 17706 | +int cmark_node_set_heading_level(cmark_node *node, int level) {
|
| 17707 | + if (node == NULL || level < 1 || level > 6) {
|
| 17708 | + return 0;
|
| 17709 | + }
|
| 17710 | +
|
| 17711 | + switch (node->type) {
|
| 17712 | + case CMARK_NODE_HEADING:
|
| 17713 | + node->as.heading.level = level;
|
| 17714 | + return 1;
|
| 17715 | +
|
| 17716 | + default:
|
| 17717 | + break;
|
| 17718 | + }
|
| 17719 | +
|
| 17720 | + return 0;
|
| 17721 | +}
|
| 17722 | +
|
| 17723 | +cmark_list_type cmark_node_get_list_type(cmark_node *node) {
|
| 17724 | + if (node == NULL) {
|
| 17725 | + return CMARK_NO_LIST;
|
| 17726 | + }
|
| 17727 | +
|
| 17728 | + if (node->type == CMARK_NODE_LIST) {
|
| 17729 | + return node->as.list.list_type;
|
| 17730 | + } else {
|
| 17731 | + return CMARK_NO_LIST;
|
| 17732 | + }
|
| 17733 | +}
|
| 17734 | +
|
| 17735 | +int cmark_node_set_list_type(cmark_node *node, cmark_list_type type) {
|
| 17736 | + if (!(type == CMARK_BULLET_LIST || type == CMARK_ORDERED_LIST)) {
|
| 17737 | + return 0;
|
| 17738 | + }
|
| 17739 | +
|
| 17740 | + if (node == NULL) {
|
| 17741 | + return 0;
|
| 17742 | + }
|
| 17743 | +
|
| 17744 | + if (node->type == CMARK_NODE_LIST) {
|
| 17745 | + node->as.list.list_type = type;
|
| 17746 | + return 1;
|
| 17747 | + } else {
|
| 17748 | + return 0;
|
| 17749 | + }
|
| 17750 | +}
|
| 17751 | +
|
| 17752 | +cmark_delim_type cmark_node_get_list_delim(cmark_node *node) {
|
| 17753 | + if (node == NULL) {
|
| 17754 | + return CMARK_NO_DELIM;
|
| 17755 | + }
|
| 17756 | +
|
| 17757 | + if (node->type == CMARK_NODE_LIST) {
|
| 17758 | + return node->as.list.delimiter;
|
| 17759 | + } else {
|
| 17760 | + return CMARK_NO_DELIM;
|
| 17761 | + }
|
| 17762 | +}
|
| 17763 | +
|
| 17764 | +int cmark_node_set_list_delim(cmark_node *node, cmark_delim_type delim) {
|
| 17765 | + if (!(delim == CMARK_PERIOD_DELIM || delim == CMARK_PAREN_DELIM)) {
|
| 17766 | + return 0;
|
| 17767 | + }
|
| 17768 | +
|
| 17769 | + if (node == NULL) {
|
| 17770 | + return 0;
|
| 17771 | + }
|
| 17772 | +
|
| 17773 | + if (node->type == CMARK_NODE_LIST) {
|
| 17774 | + node->as.list.delimiter = delim;
|
| 17775 | + return 1;
|
| 17776 | + } else {
|
| 17777 | + return 0;
|
| 17778 | + }
|
| 17779 | +}
|
| 17780 | +
|
| 17781 | +int cmark_node_get_list_start(cmark_node *node) {
|
| 17782 | + if (node == NULL) {
|
| 17783 | + return 0;
|
| 17784 | + }
|
| 17785 | +
|
| 17786 | + if (node->type == CMARK_NODE_LIST) {
|
| 17787 | + return node->as.list.start;
|
| 17788 | + } else {
|
| 17789 | + return 0;
|
| 17790 | + }
|
| 17791 | +}
|
| 17792 | +
|
| 17793 | +int cmark_node_set_list_start(cmark_node *node, int start) {
|
| 17794 | + if (node == NULL || start < 0) {
|
| 17795 | + return 0;
|
| 17796 | + }
|
| 17797 | +
|
| 17798 | + if (node->type == CMARK_NODE_LIST) {
|
| 17799 | + node->as.list.start = start;
|
| 17800 | + return 1;
|
| 17801 | + } else {
|
| 17802 | + return 0;
|
| 17803 | + }
|
| 17804 | +}
|
| 17805 | +
|
| 17806 | +int cmark_node_get_list_tight(cmark_node *node) {
|
| 17807 | + if (node == NULL) {
|
| 17808 | + return 0;
|
| 17809 | + }
|
| 17810 | +
|
| 17811 | + if (node->type == CMARK_NODE_LIST) {
|
| 17812 | + return node->as.list.tight;
|
| 17813 | + } else {
|
| 17814 | + return 0;
|
| 17815 | + }
|
| 17816 | +}
|
| 17817 | +
|
| 17818 | +int cmark_node_set_list_tight(cmark_node *node, int tight) {
|
| 17819 | + if (node == NULL) {
|
| 17820 | + return 0;
|
| 17821 | + }
|
| 17822 | +
|
| 17823 | + if (node->type == CMARK_NODE_LIST) {
|
| 17824 | + node->as.list.tight = tight == 1;
|
| 17825 | + return 1;
|
| 17826 | + } else {
|
| 17827 | + return 0;
|
| 17828 | + }
|
| 17829 | +}
|
| 17830 | +
|
| 17831 | +const char *cmark_node_get_fence_info(cmark_node *node) {
|
| 17832 | + if (node == NULL) {
|
| 17833 | + return NULL;
|
| 17834 | + }
|
| 17835 | +
|
| 17836 | + if (node->type == CMARK_NODE_CODE_BLOCK) {
|
| 17837 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.code.info);
|
| 17838 | + } else {
|
| 17839 | + return NULL;
|
| 17840 | + }
|
| 17841 | +}
|
| 17842 | +
|
| 17843 | +int cmark_node_set_fence_info(cmark_node *node, const char *info) {
|
| 17844 | + if (node == NULL) {
|
| 17845 | + return 0;
|
| 17846 | + }
|
| 17847 | +
|
| 17848 | + if (node->type == CMARK_NODE_CODE_BLOCK) {
|
| 17849 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.code.info, info);
|
| 17850 | + return 1;
|
| 17851 | + } else {
|
| 17852 | + return 0;
|
| 17853 | + }
|
| 17854 | +}
|
| 17855 | +
|
| 17856 | +const char *cmark_node_get_url(cmark_node *node) {
|
| 17857 | + if (node == NULL) {
|
| 17858 | + return NULL;
|
| 17859 | + }
|
| 17860 | +
|
| 17861 | + switch (node->type) {
|
| 17862 | + case CMARK_NODE_LINK:
|
| 17863 | + case CMARK_NODE_IMAGE:
|
| 17864 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.url);
|
| 17865 | + default:
|
| 17866 | + break;
|
| 17867 | + }
|
| 17868 | +
|
| 17869 | + return NULL;
|
| 17870 | +}
|
| 17871 | +
|
| 17872 | +int cmark_node_set_url(cmark_node *node, const char *url) {
|
| 17873 | + if (node == NULL) {
|
| 17874 | + return 0;
|
| 17875 | + }
|
| 17876 | +
|
| 17877 | + switch (node->type) {
|
| 17878 | + case CMARK_NODE_LINK:
|
| 17879 | + case CMARK_NODE_IMAGE:
|
| 17880 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.url, url);
|
| 17881 | + return 1;
|
| 17882 | + default:
|
| 17883 | + break;
|
| 17884 | + }
|
| 17885 | +
|
| 17886 | + return 0;
|
| 17887 | +}
|
| 17888 | +
|
| 17889 | +const char *cmark_node_get_title(cmark_node *node) {
|
| 17890 | + if (node == NULL) {
|
| 17891 | + return NULL;
|
| 17892 | + }
|
| 17893 | +
|
| 17894 | + switch (node->type) {
|
| 17895 | + case CMARK_NODE_LINK:
|
| 17896 | + case CMARK_NODE_IMAGE:
|
| 17897 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.link.title);
|
| 17898 | + default:
|
| 17899 | + break;
|
| 17900 | + }
|
| 17901 | +
|
| 17902 | + return NULL;
|
| 17903 | +}
|
| 17904 | +
|
| 17905 | +int cmark_node_set_title(cmark_node *node, const char *title) {
|
| 17906 | + if (node == NULL) {
|
| 17907 | + return 0;
|
| 17908 | + }
|
| 17909 | +
|
| 17910 | + switch (node->type) {
|
| 17911 | + case CMARK_NODE_LINK:
|
| 17912 | + case CMARK_NODE_IMAGE:
|
| 17913 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.link.title, title);
|
| 17914 | + return 1;
|
| 17915 | + default:
|
| 17916 | + break;
|
| 17917 | + }
|
| 17918 | +
|
| 17919 | + return 0;
|
| 17920 | +}
|
| 17921 | +
|
| 17922 | +const char *cmark_node_get_on_enter(cmark_node *node) {
|
| 17923 | + if (node == NULL) {
|
| 17924 | + return NULL;
|
| 17925 | + }
|
| 17926 | +
|
| 17927 | + switch (node->type) {
|
| 17928 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17929 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17930 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_enter);
|
| 17931 | + default:
|
| 17932 | + break;
|
| 17933 | + }
|
| 17934 | +
|
| 17935 | + return NULL;
|
| 17936 | +}
|
| 17937 | +
|
| 17938 | +int cmark_node_set_on_enter(cmark_node *node, const char *on_enter) {
|
| 17939 | + if (node == NULL) {
|
| 17940 | + return 0;
|
| 17941 | + }
|
| 17942 | +
|
| 17943 | + switch (node->type) {
|
| 17944 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17945 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17946 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_enter, on_enter);
|
| 17947 | + return 1;
|
| 17948 | + default:
|
| 17949 | + break;
|
| 17950 | + }
|
| 17951 | +
|
| 17952 | + return 0;
|
| 17953 | +}
|
| 17954 | +
|
| 17955 | +const char *cmark_node_get_on_exit(cmark_node *node) {
|
| 17956 | + if (node == NULL) {
|
| 17957 | + return NULL;
|
| 17958 | + }
|
| 17959 | +
|
| 17960 | + switch (node->type) {
|
| 17961 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17962 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17963 | + return cmark_chunk_to_cstr(NODE_MEM(node), &node->as.custom.on_exit);
|
| 17964 | + default:
|
| 17965 | + break;
|
| 17966 | + }
|
| 17967 | +
|
| 17968 | + return NULL;
|
| 17969 | +}
|
| 17970 | +
|
| 17971 | +int cmark_node_set_on_exit(cmark_node *node, const char *on_exit) {
|
| 17972 | + if (node == NULL) {
|
| 17973 | + return 0;
|
| 17974 | + }
|
| 17975 | +
|
| 17976 | + switch (node->type) {
|
| 17977 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 17978 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 17979 | + cmark_chunk_set_cstr(NODE_MEM(node), &node->as.custom.on_exit, on_exit);
|
| 17980 | + return 1;
|
| 17981 | + default:
|
| 17982 | + break;
|
| 17983 | + }
|
| 17984 | +
|
| 17985 | + return 0;
|
| 17986 | +}
|
| 17987 | +
|
| 17988 | +int cmark_node_get_start_line(cmark_node *node) {
|
| 17989 | + if (node == NULL) {
|
| 17990 | + return 0;
|
| 17991 | + }
|
| 17992 | + return node->start_line;
|
| 17993 | +}
|
| 17994 | +
|
| 17995 | +int cmark_node_get_start_column(cmark_node *node) {
|
| 17996 | + if (node == NULL) {
|
| 17997 | + return 0;
|
| 17998 | + }
|
| 17999 | + return node->start_column;
|
| 18000 | +}
|
| 18001 | +
|
| 18002 | +int cmark_node_get_end_line(cmark_node *node) {
|
| 18003 | + if (node == NULL) {
|
| 18004 | + return 0;
|
| 18005 | + }
|
| 18006 | + return node->end_line;
|
| 18007 | +}
|
| 18008 | +
|
| 18009 | +int cmark_node_get_end_column(cmark_node *node) {
|
| 18010 | + if (node == NULL) {
|
| 18011 | + return 0;
|
| 18012 | + }
|
| 18013 | + return node->end_column;
|
| 18014 | +}
|
| 18015 | +
|
| 18016 | +// Unlink a node without adjusting its next, prev, and parent pointers.
|
| 18017 | +static void S_node_unlink(cmark_node *node) {
|
| 18018 | + if (node == NULL) {
|
| 18019 | + return;
|
| 18020 | + }
|
| 18021 | +
|
| 18022 | + if (node->prev) {
|
| 18023 | + node->prev->next = node->next;
|
| 18024 | + }
|
| 18025 | + if (node->next) {
|
| 18026 | + node->next->prev = node->prev;
|
| 18027 | + }
|
| 18028 | +
|
| 18029 | + // Adjust first_child and last_child of parent.
|
| 18030 | + cmark_node *parent = node->parent;
|
| 18031 | + if (parent) {
|
| 18032 | + if (parent->first_child == node) {
|
| 18033 | + parent->first_child = node->next;
|
| 18034 | + }
|
| 18035 | + if (parent->last_child == node) {
|
| 18036 | + parent->last_child = node->prev;
|
| 18037 | + }
|
| 18038 | + }
|
| 18039 | +}
|
| 18040 | +
|
| 18041 | +void cmark_node_unlink(cmark_node *node) {
|
| 18042 | + S_node_unlink(node);
|
| 18043 | +
|
| 18044 | + node->next = NULL;
|
| 18045 | + node->prev = NULL;
|
| 18046 | + node->parent = NULL;
|
| 18047 | +}
|
| 18048 | +
|
| 18049 | +int cmark_node_insert_before(cmark_node *node, cmark_node *sibling) {
|
| 18050 | + if (node == NULL || sibling == NULL) {
|
| 18051 | + return 0;
|
| 18052 | + }
|
| 18053 | +
|
| 18054 | + if (!node->parent || !S_can_contain(node->parent, sibling)) {
|
| 18055 | + return 0;
|
| 18056 | + }
|
| 18057 | +
|
| 18058 | + S_node_unlink(sibling);
|
| 18059 | +
|
| 18060 | + cmark_node *old_prev = node->prev;
|
| 18061 | +
|
| 18062 | + // Insert 'sibling' between 'old_prev' and 'node'.
|
| 18063 | + if (old_prev) {
|
| 18064 | + old_prev->next = sibling;
|
| 18065 | + }
|
| 18066 | + sibling->prev = old_prev;
|
| 18067 | + sibling->next = node;
|
| 18068 | + node->prev = sibling;
|
| 18069 | +
|
| 18070 | + // Set new parent.
|
| 18071 | + cmark_node *parent = node->parent;
|
| 18072 | + sibling->parent = parent;
|
| 18073 | +
|
| 18074 | + // Adjust first_child of parent if inserted as first child.
|
| 18075 | + if (parent && !old_prev) {
|
| 18076 | + parent->first_child = sibling;
|
| 18077 | + }
|
| 18078 | +
|
| 18079 | + return 1;
|
| 18080 | +}
|
| 18081 | +
|
| 18082 | +int cmark_node_insert_after(cmark_node *node, cmark_node *sibling) {
|
| 18083 | + if (node == NULL || sibling == NULL) {
|
| 18084 | + return 0;
|
| 18085 | + }
|
| 18086 | +
|
| 18087 | + if (!node->parent || !S_can_contain(node->parent, sibling)) {
|
| 18088 | + return 0;
|
| 18089 | + }
|
| 18090 | +
|
| 18091 | + S_node_unlink(sibling);
|
| 18092 | +
|
| 18093 | + cmark_node *old_next = node->next;
|
| 18094 | +
|
| 18095 | + // Insert 'sibling' between 'node' and 'old_next'.
|
| 18096 | + if (old_next) {
|
| 18097 | + old_next->prev = sibling;
|
| 18098 | + }
|
| 18099 | + sibling->next = old_next;
|
| 18100 | + sibling->prev = node;
|
| 18101 | + node->next = sibling;
|
| 18102 | +
|
| 18103 | + // Set new parent.
|
| 18104 | + cmark_node *parent = node->parent;
|
| 18105 | + sibling->parent = parent;
|
| 18106 | +
|
| 18107 | + // Adjust last_child of parent if inserted as last child.
|
| 18108 | + if (parent && !old_next) {
|
| 18109 | + parent->last_child = sibling;
|
| 18110 | + }
|
| 18111 | +
|
| 18112 | + return 1;
|
| 18113 | +}
|
| 18114 | +
|
| 18115 | +int cmark_node_replace(cmark_node *oldnode, cmark_node *newnode) {
|
| 18116 | + if (!cmark_node_insert_before(oldnode, newnode)) {
|
| 18117 | + return 0;
|
| 18118 | + }
|
| 18119 | + cmark_node_unlink(oldnode);
|
| 18120 | + return 1;
|
| 18121 | +}
|
| 18122 | +
|
| 18123 | +int cmark_node_prepend_child(cmark_node *node, cmark_node *child) {
|
| 18124 | + if (!S_can_contain(node, child)) {
|
| 18125 | + return 0;
|
| 18126 | + }
|
| 18127 | +
|
| 18128 | + S_node_unlink(child);
|
| 18129 | +
|
| 18130 | + cmark_node *old_first_child = node->first_child;
|
| 18131 | +
|
| 18132 | + child->next = old_first_child;
|
| 18133 | + child->prev = NULL;
|
| 18134 | + child->parent = node;
|
| 18135 | + node->first_child = child;
|
| 18136 | +
|
| 18137 | + if (old_first_child) {
|
| 18138 | + old_first_child->prev = child;
|
| 18139 | + } else {
|
| 18140 | + // Also set last_child if node previously had no children.
|
| 18141 | + node->last_child = child;
|
| 18142 | + }
|
| 18143 | +
|
| 18144 | + return 1;
|
| 18145 | +}
|
| 18146 | +
|
| 18147 | +int cmark_node_append_child(cmark_node *node, cmark_node *child) {
|
| 18148 | + if (!S_can_contain(node, child)) {
|
| 18149 | + return 0;
|
| 18150 | + }
|
| 18151 | +
|
| 18152 | + S_node_unlink(child);
|
| 18153 | +
|
| 18154 | + cmark_node *old_last_child = node->last_child;
|
| 18155 | +
|
| 18156 | + child->next = NULL;
|
| 18157 | + child->prev = old_last_child;
|
| 18158 | + child->parent = node;
|
| 18159 | + node->last_child = child;
|
| 18160 | +
|
| 18161 | + if (old_last_child) {
|
| 18162 | + old_last_child->next = child;
|
| 18163 | + } else {
|
| 18164 | + // Also set first_child if node previously had no children.
|
| 18165 | + node->first_child = child;
|
| 18166 | + }
|
| 18167 | +
|
| 18168 | + return 1;
|
| 18169 | +}
|
| 18170 | +
|
| 18171 | +static void S_print_error(FILE *out, cmark_node *node, const char *elem) {
|
| 18172 | + if (out == NULL) {
|
| 18173 | + return;
|
| 18174 | + }
|
| 18175 | + fprintf(out, "Invalid '%s' in node type %s at %d:%d\n", elem,
|
| 18176 | + cmark_node_get_type_string(node), node->start_line,
|
| 18177 | + node->start_column);
|
| 18178 | +}
|
| 18179 | +
|
| 18180 | +int cmark_node_check(cmark_node *node, FILE *out) {
|
| 18181 | + cmark_node *cur;
|
| 18182 | + int errors = 0;
|
| 18183 | +
|
| 18184 | + if (!node) {
|
| 18185 | + return 0;
|
| 18186 | + }
|
| 18187 | +
|
| 18188 | + cur = node;
|
| 18189 | + for (;;) {
|
| 18190 | + if (cur->first_child) {
|
| 18191 | + if (cur->first_child->prev != NULL) {
|
| 18192 | + S_print_error(out, cur->first_child, "prev");
|
| 18193 | + cur->first_child->prev = NULL;
|
| 18194 | + ++errors;
|
| 18195 | + }
|
| 18196 | + if (cur->first_child->parent != cur) {
|
| 18197 | + S_print_error(out, cur->first_child, "parent");
|
| 18198 | + cur->first_child->parent = cur;
|
| 18199 | + ++errors;
|
| 18200 | + }
|
| 18201 | + cur = cur->first_child;
|
| 18202 | + continue;
|
| 18203 | + }
|
| 18204 | +
|
| 18205 | + next_sibling:
|
| 18206 | + if (cur == node) {
|
| 18207 | + break;
|
| 18208 | + }
|
| 18209 | + if (cur->next) {
|
| 18210 | + if (cur->next->prev != cur) {
|
| 18211 | + S_print_error(out, cur->next, "prev");
|
| 18212 | + cur->next->prev = cur;
|
| 18213 | + ++errors;
|
| 18214 | + }
|
| 18215 | + if (cur->next->parent != cur->parent) {
|
| 18216 | + S_print_error(out, cur->next, "parent");
|
| 18217 | + cur->next->parent = cur->parent;
|
| 18218 | + ++errors;
|
| 18219 | + }
|
| 18220 | + cur = cur->next;
|
| 18221 | + continue;
|
| 18222 | + }
|
| 18223 | +
|
| 18224 | + if (cur->parent->last_child != cur) {
|
| 18225 | + S_print_error(out, cur->parent, "last_child");
|
| 18226 | + cur->parent->last_child = cur;
|
| 18227 | + ++errors;
|
| 18228 | + }
|
| 18229 | + cur = cur->parent;
|
| 18230 | + goto next_sibling;
|
| 18231 | + }
|
| 18232 | +
|
| 18233 | + return errors;
|
| 18234 | +}
|
| 18235 | +
|
| 18236 | +
|
| 18237 | +#include "entities.inc"
|
| 18238 | +
|
| 18239 | +/* Binary tree lookup code for entities added by JGM */
|
| 18240 | +
|
| 18241 | +static const unsigned char *S_lookup(int i, int low, int hi,
|
| 18242 | + const unsigned char *s, int len) {
|
| 18243 | + int j;
|
| 18244 | + int cmp =
|
| 18245 | + strncmp((const char *)s, (const char *)cmark_entities[i].entity, len);
|
| 18246 | + if (cmp == 0 && cmark_entities[i].entity[len] == 0) {
|
| 18247 | + return (const unsigned char *)cmark_entities[i].bytes;
|
| 18248 | + } else if (cmp <= 0 && i > low) {
|
| 18249 | + j = i - ((i - low) / 2);
|
| 18250 | + if (j == i)
|
| 18251 | + j -= 1;
|
| 18252 | + return S_lookup(j, low, i - 1, s, len);
|
| 18253 | + } else if (cmp > 0 && i < hi) {
|
| 18254 | + j = i + ((hi - i) / 2);
|
| 18255 | + if (j == i)
|
| 18256 | + j += 1;
|
| 18257 | + return S_lookup(j, i + 1, hi, s, len);
|
| 18258 | + } else {
|
| 18259 | + return NULL;
|
| 18260 | + }
|
| 18261 | +}
|
| 18262 | +
|
| 18263 | +static const unsigned char *S_lookup_entity(const unsigned char *s, int len) {
|
| 18264 | + return S_lookup(CMARK_NUM_ENTITIES / 2, 0, CMARK_NUM_ENTITIES - 1, s, len);
|
| 18265 | +}
|
| 18266 | +
|
| 18267 | +bufsize_t houdini_unescape_ent(cmark_strbuf *ob, const uint8_t *src,
|
| 18268 | + bufsize_t size) {
|
| 18269 | + bufsize_t i = 0;
|
| 18270 | +
|
| 18271 | + if (size >= 3 && src[0] == '#') {
|
| 18272 | + int codepoint = 0;
|
| 18273 | + int num_digits = 0;
|
| 18274 | +
|
| 18275 | + if (_isdigit(src[1])) {
|
| 18276 | + for (i = 1; i < size && _isdigit(src[i]); ++i) {
|
| 18277 | + codepoint = (codepoint * 10) + (src[i] - '0');
|
| 18278 | +
|
| 18279 | + if (codepoint >= 0x110000) {
|
| 18280 | + // Keep counting digits but
|
| 18281 | + // avoid integer overflow.
|
| 18282 | + codepoint = 0x110000;
|
| 18283 | + }
|
| 18284 | + }
|
| 18285 | +
|
| 18286 | + num_digits = i - 1;
|
| 18287 | + }
|
| 18288 | +
|
| 18289 | + else if (src[1] == 'x' || src[1] == 'X') {
|
| 18290 | + for (i = 2; i < size && _isxdigit(src[i]); ++i) {
|
| 18291 | + codepoint = (codepoint * 16) + ((src[i] | 32) % 39 - 9);
|
| 18292 | +
|
| 18293 | + if (codepoint >= 0x110000) {
|
| 18294 | + // Keep counting digits but
|
| 18295 | + // avoid integer overflow.
|
| 18296 | + codepoint = 0x110000;
|
| 18297 | + }
|
| 18298 | + }
|
| 18299 | +
|
| 18300 | + num_digits = i - 2;
|
| 18301 | + }
|
| 18302 | +
|
| 18303 | + if (num_digits >= 1 && num_digits <= 8 && i < size && src[i] == ';') {
|
| 18304 | + if (codepoint == 0 || (codepoint >= 0xD800 && codepoint < 0xE000) ||
|
| 18305 | + codepoint >= 0x110000) {
|
| 18306 | + codepoint = 0xFFFD;
|
| 18307 | + }
|
| 18308 | + cmark_utf8proc_encode_char(codepoint, ob);
|
| 18309 | + return i + 1;
|
| 18310 | + }
|
| 18311 | + }
|
| 18312 | +
|
| 18313 | + else {
|
| 18314 | + if (size > CMARK_ENTITY_MAX_LENGTH)
|
| 18315 | + size = CMARK_ENTITY_MAX_LENGTH;
|
| 18316 | +
|
| 18317 | + for (i = CMARK_ENTITY_MIN_LENGTH; i < size; ++i) {
|
| 18318 | + if (src[i] == ' ')
|
| 18319 | + break;
|
| 18320 | +
|
| 18321 | + if (src[i] == ';') {
|
| 18322 | + const unsigned char *entity = S_lookup_entity(src, i);
|
| 18323 | +
|
| 18324 | + if (entity != NULL) {
|
| 18325 | + cmark_strbuf_puts(ob, (const char *)entity);
|
| 18326 | + return i + 1;
|
| 18327 | + }
|
| 18328 | +
|
| 18329 | + break;
|
| 18330 | + }
|
| 18331 | + }
|
| 18332 | + }
|
| 18333 | +
|
| 18334 | + return 0;
|
| 18335 | +}
|
| 18336 | +
|
| 18337 | +int houdini_unescape_html(cmark_strbuf *ob, const uint8_t *src,
|
| 18338 | + bufsize_t size) {
|
| 18339 | + bufsize_t i = 0, org, ent;
|
| 18340 | +
|
| 18341 | + while (i < size) {
|
| 18342 | + org = i;
|
| 18343 | + while (i < size && src[i] != '&')
|
| 18344 | + i++;
|
| 18345 | +
|
| 18346 | + if (likely(i > org)) {
|
| 18347 | + if (unlikely(org == 0)) {
|
| 18348 | + if (i >= size)
|
| 18349 | + return 0;
|
| 18350 | +
|
| 18351 | + cmark_strbuf_grow(ob, HOUDINI_UNESCAPED_SIZE(size));
|
| 18352 | + }
|
| 18353 | +
|
| 18354 | + cmark_strbuf_put(ob, src + org, i - org);
|
| 18355 | + }
|
| 18356 | +
|
| 18357 | + /* escaping */
|
| 18358 | + if (i >= size)
|
| 18359 | + break;
|
| 18360 | +
|
| 18361 | + i++;
|
| 18362 | +
|
| 18363 | + ent = houdini_unescape_ent(ob, src + i, size - i);
|
| 18364 | + i += ent;
|
| 18365 | +
|
| 18366 | + /* not really an entity */
|
| 18367 | + if (ent == 0)
|
| 18368 | + cmark_strbuf_putc(ob, '&');
|
| 18369 | + }
|
| 18370 | +
|
| 18371 | + return 1;
|
| 18372 | +}
|
| 18373 | +
|
| 18374 | +void houdini_unescape_html_f(cmark_strbuf *ob, const uint8_t *src,
|
| 18375 | + bufsize_t size) {
|
| 18376 | + if (!houdini_unescape_html(ob, src, size))
|
| 18377 | + cmark_strbuf_put(ob, src, size);
|
| 18378 | +}
|
| 18379 | +
|
| 18380 | +
|
| 18381 | +static const int S_leaf_mask =
|
| 18382 | + (1 << CMARK_NODE_HTML_BLOCK) | (1 << CMARK_NODE_THEMATIC_BREAK) |
|
| 18383 | + (1 << CMARK_NODE_CODE_BLOCK) | (1 << CMARK_NODE_TEXT) |
|
| 18384 | + (1 << CMARK_NODE_SOFTBREAK) | (1 << CMARK_NODE_LINEBREAK) |
|
| 18385 | + (1 << CMARK_NODE_CODE) | (1 << CMARK_NODE_HTML_INLINE);
|
| 18386 | +
|
| 18387 | +cmark_iter *cmark_iter_new(cmark_node *root) {
|
| 18388 | + if (root == NULL) {
|
| 18389 | + return NULL;
|
| 18390 | + }
|
| 18391 | + cmark_mem *mem = root->content.mem;
|
| 18392 | + cmark_iter *iter = (cmark_iter *)mem->calloc(1, sizeof(cmark_iter));
|
| 18393 | + iter->mem = mem;
|
| 18394 | + iter->root = root;
|
| 18395 | + iter->cur.ev_type = CMARK_EVENT_NONE;
|
| 18396 | + iter->cur.node = NULL;
|
| 18397 | + iter->next.ev_type = CMARK_EVENT_ENTER;
|
| 18398 | + iter->next.node = root;
|
| 18399 | + return iter;
|
| 18400 | +}
|
| 18401 | +
|
| 18402 | +void cmark_iter_free(cmark_iter *iter) { iter->mem->free(iter); }
|
| 18403 | +
|
| 18404 | +static bool S_is_leaf(cmark_node *node) {
|
| 18405 | + return ((1 << node->type) & S_leaf_mask) != 0;
|
| 18406 | +}
|
| 18407 | +
|
| 18408 | +cmark_event_type cmark_iter_next(cmark_iter *iter) {
|
| 18409 | + cmark_event_type ev_type = iter->next.ev_type;
|
| 18410 | + cmark_node *node = iter->next.node;
|
| 18411 | +
|
| 18412 | + iter->cur.ev_type = ev_type;
|
| 18413 | + iter->cur.node = node;
|
| 18414 | +
|
| 18415 | + if (ev_type == CMARK_EVENT_DONE) {
|
| 18416 | + return ev_type;
|
| 18417 | + }
|
| 18418 | +
|
| 18419 | + /* roll forward to next item, setting both fields */
|
| 18420 | + if (ev_type == CMARK_EVENT_ENTER && !S_is_leaf(node)) {
|
| 18421 | + if (node->first_child == NULL) {
|
| 18422 | + /* stay on this node but exit */
|
| 18423 | + iter->next.ev_type = CMARK_EVENT_EXIT;
|
| 18424 | + } else {
|
| 18425 | + iter->next.ev_type = CMARK_EVENT_ENTER;
|
| 18426 | + iter->next.node = node->first_child;
|
| 18427 | + }
|
| 18428 | + } else if (node == iter->root) {
|
| 18429 | + /* don't move past root */
|
| 18430 | + iter->next.ev_type = CMARK_EVENT_DONE;
|
| 18431 | + iter->next.node = NULL;
|
| 18432 | + } else if (node->next) {
|
| 18433 | + iter->next.ev_type = CMARK_EVENT_ENTER;
|
| 18434 | + iter->next.node = node->next;
|
| 18435 | + } else if (node->parent) {
|
| 18436 | + iter->next.ev_type = CMARK_EVENT_EXIT;
|
| 18437 | + iter->next.node = node->parent;
|
| 18438 | + } else {
|
| 18439 | + assert(false);
|
| 18440 | + iter->next.ev_type = CMARK_EVENT_DONE;
|
| 18441 | + iter->next.node = NULL;
|
| 18442 | + }
|
| 18443 | +
|
| 18444 | + return ev_type;
|
| 18445 | +}
|
| 18446 | +
|
| 18447 | +void cmark_iter_reset(cmark_iter *iter, cmark_node *current,
|
| 18448 | + cmark_event_type event_type) {
|
| 18449 | + iter->next.ev_type = event_type;
|
| 18450 | + iter->next.node = current;
|
| 18451 | + cmark_iter_next(iter);
|
| 18452 | +}
|
| 18453 | +
|
| 18454 | +cmark_node *cmark_iter_get_node(cmark_iter *iter) { return iter->cur.node; }
|
| 18455 | +
|
| 18456 | +cmark_event_type cmark_iter_get_event_type(cmark_iter *iter) {
|
| 18457 | + return iter->cur.ev_type;
|
| 18458 | +}
|
| 18459 | +
|
| 18460 | +cmark_node *cmark_iter_get_root(cmark_iter *iter) { return iter->root; }
|
| 18461 | +
|
| 18462 | +void cmark_consolidate_text_nodes(cmark_node *root) {
|
| 18463 | + if (root == NULL) {
|
| 18464 | + return;
|
| 18465 | + }
|
| 18466 | + cmark_iter *iter = cmark_iter_new(root);
|
| 18467 | + cmark_strbuf buf = CMARK_BUF_INIT(iter->mem);
|
| 18468 | + cmark_event_type ev_type;
|
| 18469 | + cmark_node *cur, *tmp, *next;
|
| 18470 | +
|
| 18471 | + while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
|
| 18472 | + cur = cmark_iter_get_node(iter);
|
| 18473 | + if (ev_type == CMARK_EVENT_ENTER && cur->type == CMARK_NODE_TEXT &&
|
| 18474 | + cur->next && cur->next->type == CMARK_NODE_TEXT) {
|
| 18475 | + cmark_strbuf_clear(&buf);
|
| 18476 | + cmark_strbuf_put(&buf, cur->as.literal.data, cur->as.literal.len);
|
| 18477 | + tmp = cur->next;
|
| 18478 | + while (tmp && tmp->type == CMARK_NODE_TEXT) {
|
| 18479 | + cmark_iter_next(iter); // advance pointer
|
| 18480 | + cmark_strbuf_put(&buf, tmp->as.literal.data, tmp->as.literal.len);
|
| 18481 | + next = tmp->next;
|
| 18482 | + cmark_node_free(tmp);
|
| 18483 | + tmp = next;
|
| 18484 | + }
|
| 18485 | + cmark_chunk_free(iter->mem, &cur->as.literal);
|
| 18486 | + cur->as.literal = cmark_chunk_buf_detach(&buf);
|
| 18487 | + }
|
| 18488 | + }
|
| 18489 | +
|
| 18490 | + cmark_strbuf_free(&buf);
|
| 18491 | + cmark_iter_free(iter);
|
| 18492 | +}
|
| 18493 | +
|
| 18494 | +
|
| 18495 | +#define BUFFER_SIZE 100
|
| 18496 | +
|
| 18497 | +// Functions to convert cmark_nodes to HTML strings.
|
| 18498 | +
|
| 18499 | +static void escape_html(cmark_strbuf *dest, const unsigned char *source,
|
| 18500 | + bufsize_t length) {
|
| 18501 | + houdini_escape_html0(dest, source, length, 0);
|
| 18502 | +}
|
| 18503 | +
|
| 18504 | +static CMARK_INLINE void cr(cmark_strbuf *html) {
|
| 18505 | + if (html->size && html->ptr[html->size - 1] != '\n')
|
| 18506 | + cmark_strbuf_putc(html, '\n');
|
| 18507 | +}
|
| 18508 | +
|
| 18509 | +struct render_state {
|
| 18510 | + cmark_strbuf *html;
|
| 18511 | + cmark_node *plain;
|
| 18512 | +};
|
| 18513 | +
|
| 18514 | +static void S_render_sourcepos(cmark_node *node, cmark_strbuf *html,
|
| 18515 | + int options) {
|
| 18516 | + char buffer[BUFFER_SIZE];
|
| 18517 | + if (CMARK_OPT_SOURCEPOS & options) {
|
| 18518 | + snprintf(buffer, BUFFER_SIZE, " data-sourcepos=\"%d:%d-%d:%d\"",
|
| 18519 | + cmark_node_get_start_line(node), cmark_node_get_start_column(node),
|
| 18520 | + cmark_node_get_end_line(node), cmark_node_get_end_column(node));
|
| 18521 | + cmark_strbuf_puts(html, buffer);
|
| 18522 | + }
|
| 18523 | +}
|
| 18524 | +
|
| 18525 | +static int S_render_node(cmark_node *node, cmark_event_type ev_type,
|
| 18526 | + struct render_state *state, int options) {
|
| 18527 | + cmark_node *parent;
|
| 18528 | + cmark_node *grandparent;
|
| 18529 | + cmark_strbuf *html = state->html;
|
| 18530 | + char start_heading[] = "<h0";
|
| 18531 | + char end_heading[] = "</h0";
|
| 18532 | + bool tight;
|
| 18533 | + char buffer[BUFFER_SIZE];
|
| 18534 | +
|
| 18535 | + bool entering = (ev_type == CMARK_EVENT_ENTER);
|
| 18536 | +
|
| 18537 | + if (state->plain == node) { // back at original node
|
| 18538 | + state->plain = NULL;
|
| 18539 | + }
|
| 18540 | +
|
| 18541 | + if (state->plain != NULL) {
|
| 18542 | + switch (node->type) {
|
| 18543 | + case CMARK_NODE_TEXT:
|
| 18544 | + case CMARK_NODE_CODE:
|
| 18545 | + case CMARK_NODE_HTML_INLINE:
|
| 18546 | + escape_html(html, node->as.literal.data, node->as.literal.len);
|
| 18547 | + break;
|
| 18548 | +
|
| 18549 | + case CMARK_NODE_LINEBREAK:
|
| 18550 | + case CMARK_NODE_SOFTBREAK:
|
| 18551 | + cmark_strbuf_putc(html, ' ');
|
| 18552 | + break;
|
| 18553 | +
|
| 18554 | + default:
|
| 18555 | + break;
|
| 18556 | + }
|
| 18557 | + return 1;
|
| 18558 | + }
|
| 18559 | +
|
| 18560 | + switch (node->type) {
|
| 18561 | + case CMARK_NODE_DOCUMENT:
|
| 18562 | + break;
|
| 18563 | +
|
| 18564 | + case CMARK_NODE_BLOCK_QUOTE:
|
| 18565 | + if (entering) {
|
| 18566 | + cr(html);
|
| 18567 | + cmark_strbuf_puts(html, "<blockquote");
|
| 18568 | + S_render_sourcepos(node, html, options);
|
| 18569 | + cmark_strbuf_puts(html, ">\n");
|
| 18570 | + } else {
|
| 18571 | + cr(html);
|
| 18572 | + cmark_strbuf_puts(html, "</blockquote>\n");
|
| 18573 | + }
|
| 18574 | + break;
|
| 18575 | +
|
| 18576 | + case CMARK_NODE_LIST: {
|
| 18577 | + cmark_list_type list_type = node->as.list.list_type;
|
| 18578 | + int start = node->as.list.start;
|
| 18579 | +
|
| 18580 | + if (entering) {
|
| 18581 | + cr(html);
|
| 18582 | + if (list_type == CMARK_BULLET_LIST) {
|
| 18583 | + cmark_strbuf_puts(html, "<ul");
|
| 18584 | + S_render_sourcepos(node, html, options);
|
| 18585 | + cmark_strbuf_puts(html, ">\n");
|
| 18586 | + } else if (start == 1) {
|
| 18587 | + cmark_strbuf_puts(html, "<ol");
|
| 18588 | + S_render_sourcepos(node, html, options);
|
| 18589 | + cmark_strbuf_puts(html, ">\n");
|
| 18590 | + } else {
|
| 18591 | + snprintf(buffer, BUFFER_SIZE, "<ol start=\"%d\"", start);
|
| 18592 | + cmark_strbuf_puts(html, buffer);
|
| 18593 | + S_render_sourcepos(node, html, options);
|
| 18594 | + cmark_strbuf_puts(html, ">\n");
|
| 18595 | + }
|
| 18596 | + } else {
|
| 18597 | + cmark_strbuf_puts(html,
|
| 18598 | + list_type == CMARK_BULLET_LIST ? "</ul>\n" : "</ol>\n");
|
| 18599 | + }
|
| 18600 | + break;
|
| 18601 | + }
|
| 18602 | +
|
| 18603 | + case CMARK_NODE_ITEM:
|
| 18604 | + if (entering) {
|
| 18605 | + cr(html);
|
| 18606 | + cmark_strbuf_puts(html, "<li");
|
| 18607 | + S_render_sourcepos(node, html, options);
|
| 18608 | + cmark_strbuf_putc(html, '>');
|
| 18609 | + } else {
|
| 18610 | + cmark_strbuf_puts(html, "</li>\n");
|
| 18611 | + }
|
| 18612 | + break;
|
| 18613 | +
|
| 18614 | + case CMARK_NODE_HEADING:
|
| 18615 | + if (entering) {
|
| 18616 | + cr(html);
|
| 18617 | + start_heading[2] = (char)('0' + node->as.heading.level);
|
| 18618 | + cmark_strbuf_puts(html, start_heading);
|
| 18619 | + S_render_sourcepos(node, html, options);
|
| 18620 | + cmark_strbuf_putc(html, '>');
|
| 18621 | + } else {
|
| 18622 | + end_heading[3] = (char)('0' + node->as.heading.level);
|
| 18623 | + cmark_strbuf_puts(html, end_heading);
|
| 18624 | + cmark_strbuf_puts(html, ">\n");
|
| 18625 | + }
|
| 18626 | + break;
|
| 18627 | +
|
| 18628 | + case CMARK_NODE_CODE_BLOCK:
|
| 18629 | + cr(html);
|
| 18630 | +
|
| 18631 | + if (node->as.code.info.len == 0) {
|
| 18632 | + cmark_strbuf_puts(html, "<pre");
|
| 18633 | + S_render_sourcepos(node, html, options);
|
| 18634 | + cmark_strbuf_puts(html, "><code>");
|
| 18635 | + } else {
|
| 18636 | + bufsize_t first_tag = 0;
|
| 18637 | + while (first_tag < node->as.code.info.len &&
|
| 18638 | + !cmark_isspace(node->as.code.info.data[first_tag])) {
|
| 18639 | + first_tag += 1;
|
| 18640 | + }
|
| 18641 | +
|
| 18642 | + cmark_strbuf_puts(html, "<pre");
|
| 18643 | + S_render_sourcepos(node, html, options);
|
| 18644 | + cmark_strbuf_puts(html, "><code class=\"language-");
|
| 18645 | + escape_html(html, node->as.code.info.data, first_tag);
|
| 18646 | + cmark_strbuf_puts(html, "\">");
|
| 18647 | + }
|
| 18648 | +
|
| 18649 | + escape_html(html, node->as.code.literal.data, node->as.code.literal.len);
|
| 18650 | + cmark_strbuf_puts(html, "</code></pre>\n");
|
| 18651 | + break;
|
| 18652 | +
|
| 18653 | + case CMARK_NODE_HTML_BLOCK:
|
| 18654 | + cr(html);
|
| 18655 | + if (options & CMARK_OPT_SAFE) {
|
| 18656 | + cmark_strbuf_puts(html, "<!-- raw HTML omitted -->");
|
| 18657 | + } else {
|
| 18658 | + cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);
|
| 18659 | + }
|
| 18660 | + cr(html);
|
| 18661 | + break;
|
| 18662 | +
|
| 18663 | + case CMARK_NODE_CUSTOM_BLOCK:
|
| 18664 | + cr(html);
|
| 18665 | + if (entering) {
|
| 18666 | + cmark_strbuf_put(html, node->as.custom.on_enter.data,
|
| 18667 | + node->as.custom.on_enter.len);
|
| 18668 | + } else {
|
| 18669 | + cmark_strbuf_put(html, node->as.custom.on_exit.data,
|
| 18670 | + node->as.custom.on_exit.len);
|
| 18671 | + }
|
| 18672 | + cr(html);
|
| 18673 | + break;
|
| 18674 | +
|
| 18675 | + case CMARK_NODE_THEMATIC_BREAK:
|
| 18676 | + cr(html);
|
| 18677 | + cmark_strbuf_puts(html, "<hr");
|
| 18678 | + S_render_sourcepos(node, html, options);
|
| 18679 | + cmark_strbuf_puts(html, " />\n");
|
| 18680 | + break;
|
| 18681 | +
|
| 18682 | + case CMARK_NODE_PARAGRAPH:
|
| 18683 | + parent = cmark_node_parent(node);
|
| 18684 | + grandparent = cmark_node_parent(parent);
|
| 18685 | + if (grandparent != NULL && grandparent->type == CMARK_NODE_LIST) {
|
| 18686 | + tight = grandparent->as.list.tight;
|
| 18687 | + } else {
|
| 18688 | + tight = false;
|
| 18689 | + }
|
| 18690 | + if (!tight) {
|
| 18691 | + if (entering) {
|
| 18692 | + cr(html);
|
| 18693 | + cmark_strbuf_puts(html, "<p");
|
| 18694 | + S_render_sourcepos(node, html, options);
|
| 18695 | + cmark_strbuf_putc(html, '>');
|
| 18696 | + } else {
|
| 18697 | + cmark_strbuf_puts(html, "</p>\n");
|
| 18698 | + }
|
| 18699 | + }
|
| 18700 | + break;
|
| 18701 | +
|
| 18702 | + case CMARK_NODE_TEXT:
|
| 18703 | + escape_html(html, node->as.literal.data, node->as.literal.len);
|
| 18704 | + break;
|
| 18705 | +
|
| 18706 | + case CMARK_NODE_LINEBREAK:
|
| 18707 | + cmark_strbuf_puts(html, "<br />\n");
|
| 18708 | + break;
|
| 18709 | +
|
| 18710 | + case CMARK_NODE_SOFTBREAK:
|
| 18711 | + if (options & CMARK_OPT_HARDBREAKS) {
|
| 18712 | + cmark_strbuf_puts(html, "<br />\n");
|
| 18713 | + } else if (options & CMARK_OPT_NOBREAKS) {
|
| 18714 | + cmark_strbuf_putc(html, ' ');
|
| 18715 | + } else {
|
| 18716 | + cmark_strbuf_putc(html, '\n');
|
| 18717 | + }
|
| 18718 | + break;
|
| 18719 | +
|
| 18720 | + case CMARK_NODE_CODE:
|
| 18721 | + cmark_strbuf_puts(html, "<code>");
|
| 18722 | + escape_html(html, node->as.literal.data, node->as.literal.len);
|
| 18723 | + cmark_strbuf_puts(html, "</code>");
|
| 18724 | + break;
|
| 18725 | +
|
| 18726 | + case CMARK_NODE_HTML_INLINE:
|
| 18727 | + if (options & CMARK_OPT_SAFE) {
|
| 18728 | + cmark_strbuf_puts(html, "<!-- raw HTML omitted -->");
|
| 18729 | + } else {
|
| 18730 | + cmark_strbuf_put(html, node->as.literal.data, node->as.literal.len);
|
| 18731 | + }
|
| 18732 | + break;
|
| 18733 | +
|
| 18734 | + case CMARK_NODE_CUSTOM_INLINE:
|
| 18735 | + if (entering) {
|
| 18736 | + cmark_strbuf_put(html, node->as.custom.on_enter.data,
|
| 18737 | + node->as.custom.on_enter.len);
|
| 18738 | + } else {
|
| 18739 | + cmark_strbuf_put(html, node->as.custom.on_exit.data,
|
| 18740 | + node->as.custom.on_exit.len);
|
| 18741 | + }
|
| 18742 | + break;
|
| 18743 | +
|
| 18744 | + case CMARK_NODE_STRONG:
|
| 18745 | + if (entering) {
|
| 18746 | + cmark_strbuf_puts(html, "<strong>");
|
| 18747 | + } else {
|
| 18748 | + cmark_strbuf_puts(html, "</strong>");
|
| 18749 | + }
|
| 18750 | + break;
|
| 18751 | +
|
| 18752 | + case CMARK_NODE_EMPH:
|
| 18753 | + if (entering) {
|
| 18754 | + cmark_strbuf_puts(html, "<em>");
|
| 18755 | + } else {
|
| 18756 | + cmark_strbuf_puts(html, "</em>");
|
| 18757 | + }
|
| 18758 | + break;
|
| 18759 | +
|
| 18760 | + case CMARK_NODE_LINK:
|
| 18761 | + if (entering) {
|
| 18762 | + cmark_strbuf_puts(html, "<a href=\"");
|
| 18763 | + if (!((options & CMARK_OPT_SAFE) &&
|
| 18764 | + scan_dangerous_url(&node->as.link.url, 0))) {
|
| 18765 | + houdini_escape_href(html, node->as.link.url.data,
|
| 18766 | + node->as.link.url.len);
|
| 18767 | + }
|
| 18768 | + if (node->as.link.title.len) {
|
| 18769 | + cmark_strbuf_puts(html, "\" title=\"");
|
| 18770 | + escape_html(html, node->as.link.title.data, node->as.link.title.len);
|
| 18771 | + }
|
| 18772 | + cmark_strbuf_puts(html, "\">");
|
| 18773 | + } else {
|
| 18774 | + cmark_strbuf_puts(html, "</a>");
|
| 18775 | + }
|
| 18776 | + break;
|
| 18777 | +
|
| 18778 | + case CMARK_NODE_IMAGE:
|
| 18779 | + if (entering) {
|
| 18780 | + cmark_strbuf_puts(html, "<img src=\"");
|
| 18781 | + if (!((options & CMARK_OPT_SAFE) &&
|
| 18782 | + scan_dangerous_url(&node->as.link.url, 0))) {
|
| 18783 | + houdini_escape_href(html, node->as.link.url.data,
|
| 18784 | + node->as.link.url.len);
|
| 18785 | + }
|
| 18786 | + cmark_strbuf_puts(html, "\" alt=\"");
|
| 18787 | + state->plain = node;
|
| 18788 | + } else {
|
| 18789 | + if (node->as.link.title.len) {
|
| 18790 | + cmark_strbuf_puts(html, "\" title=\"");
|
| 18791 | + escape_html(html, node->as.link.title.data, node->as.link.title.len);
|
| 18792 | + }
|
| 18793 | +
|
| 18794 | + cmark_strbuf_puts(html, "\" />");
|
| 18795 | + }
|
| 18796 | + break;
|
| 18797 | +
|
| 18798 | + default:
|
| 18799 | + assert(false);
|
| 18800 | + break;
|
| 18801 | + }
|
| 18802 | +
|
| 18803 | + // cmark_strbuf_putc(html, 'x');
|
| 18804 | + return 1;
|
| 18805 | +}
|
| 18806 | +
|
| 18807 | +char *cmark_render_html(cmark_node *root, int options) {
|
| 18808 | + char *result;
|
| 18809 | + cmark_strbuf html = CMARK_BUF_INIT(cmark_node_mem(root));
|
| 18810 | + cmark_event_type ev_type;
|
| 18811 | + cmark_node *cur;
|
| 18812 | + struct render_state state = {&html, NULL};
|
| 18813 | + cmark_iter *iter = cmark_iter_new(root);
|
| 18814 | +
|
| 18815 | + while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
|
| 18816 | + cur = cmark_iter_get_node(iter);
|
| 18817 | + S_render_node(cur, ev_type, &state, options);
|
| 18818 | + }
|
| 18819 | + result = (char *)cmark_strbuf_detach(&html);
|
| 18820 | +
|
| 18821 | + cmark_iter_free(iter);
|
| 18822 | + return result;
|
| 18823 | +}
|
| 18824 | +
|
| 18825 | +
|
| 18826 | +
|
| 18827 | +/**
|
| 18828 | + * According to the OWASP rules:
|
| 18829 | + *
|
| 18830 | + * & --> &
|
| 18831 | + * < --> <
|
| 18832 | + * > --> >
|
| 18833 | + * " --> "
|
| 18834 | + * ' --> ' ' is not recommended
|
| 18835 | + * / --> / forward slash is included as it helps end an HTML entity
|
| 18836 | + *
|
| 18837 | + */
|
| 18838 | +static const char HTML_ESCAPE_TABLE[] = {
|
| 18839 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18840 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 4,
|
| 18841 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18842 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18843 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18844 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18845 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18846 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18847 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18848 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18849 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18850 | +};
|
| 18851 | +
|
| 18852 | +static const char *HTML_ESCAPES[] = {"", """, "&", "'",
|
| 18853 | + "/", "<", ">"};
|
| 18854 | +
|
| 18855 | +int houdini_escape_html0(cmark_strbuf *ob, const uint8_t *src, bufsize_t size,
|
| 18856 | + int secure) {
|
| 18857 | + bufsize_t i = 0, org, esc = 0;
|
| 18858 | +
|
| 18859 | + while (i < size) {
|
| 18860 | + org = i;
|
| 18861 | + while (i < size && (esc = HTML_ESCAPE_TABLE[src[i]]) == 0)
|
| 18862 | + i++;
|
| 18863 | +
|
| 18864 | + if (i > org)
|
| 18865 | + cmark_strbuf_put(ob, src + org, i - org);
|
| 18866 | +
|
| 18867 | + /* escaping */
|
| 18868 | + if (unlikely(i >= size))
|
| 18869 | + break;
|
| 18870 | +
|
| 18871 | + /* The forward slash is only escaped in secure mode */
|
| 18872 | + if ((src[i] == '/' || src[i] == '\'') && !secure) {
|
| 18873 | + cmark_strbuf_putc(ob, src[i]);
|
| 18874 | + } else {
|
| 18875 | + cmark_strbuf_puts(ob, HTML_ESCAPES[esc]);
|
| 18876 | + }
|
| 18877 | +
|
| 18878 | + i++;
|
| 18879 | + }
|
| 18880 | +
|
| 18881 | + return 1;
|
| 18882 | +}
|
| 18883 | +
|
| 18884 | +int houdini_escape_html(cmark_strbuf *ob, const uint8_t *src, bufsize_t size) {
|
| 18885 | + return houdini_escape_html0(ob, src, size, 1);
|
| 18886 | +}
|
| 18887 | +
|
| 18888 | +
|
| 18889 | +/*
|
| 18890 | + * The following characters will not be escaped:
|
| 18891 | + *
|
| 18892 | + * -_.+!*'(),%#@?=;:/,+&$ alphanum
|
| 18893 | + *
|
| 18894 | + * Note that this character set is the addition of:
|
| 18895 | + *
|
| 18896 | + * - The characters which are safe to be in an URL
|
| 18897 | + * - The characters which are *not* safe to be in
|
| 18898 | + * an URL because they are RESERVED characters.
|
| 18899 | + *
|
| 18900 | + * We asume (lazily) that any RESERVED char that
|
| 18901 | + * appears inside an URL is actually meant to
|
| 18902 | + * have its native function (i.e. as an URL
|
| 18903 | + * component/separator) and hence needs no escaping.
|
| 18904 | + *
|
| 18905 | + * There are two exceptions: the chacters & (amp)
|
| 18906 | + * and ' (single quote) do not appear in the table.
|
| 18907 | + * They are meant to appear in the URL as components,
|
| 18908 | + * yet they require special HTML-entity escaping
|
| 18909 | + * to generate valid HTML markup.
|
| 18910 | + *
|
| 18911 | + * All other characters will be escaped to %XX.
|
| 18912 | + *
|
| 18913 | + */
|
| 18914 | +static const char HREF_SAFE[] = {
|
| 18915 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18916 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 18917 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 18918 | + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
|
| 18919 | + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
| 18920 | + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18921 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18922 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18923 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18924 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18925 | + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
| 18926 | +};
|
| 18927 | +
|
| 18928 | +int houdini_escape_href(cmark_strbuf *ob, const uint8_t *src, bufsize_t size) {
|
| 18929 | + static const uint8_t hex_chars[] = "0123456789ABCDEF";
|
| 18930 | + bufsize_t i = 0, org;
|
| 18931 | + uint8_t hex_str[3];
|
| 18932 | +
|
| 18933 | + hex_str[0] = '%';
|
| 18934 | +
|
| 18935 | + while (i < size) {
|
| 18936 | + org = i;
|
| 18937 | + while (i < size && HREF_SAFE[src[i]] != 0)
|
| 18938 | + i++;
|
| 18939 | +
|
| 18940 | + if (likely(i > org))
|
| 18941 | + cmark_strbuf_put(ob, src + org, i - org);
|
| 18942 | +
|
| 18943 | + /* escaping */
|
| 18944 | + if (i >= size)
|
| 18945 | + break;
|
| 18946 | +
|
| 18947 | + switch (src[i]) {
|
| 18948 | + /* amp appears all the time in URLs, but needs
|
| 18949 | + * HTML-entity escaping to be inside an href */
|
| 18950 | + case '&':
|
| 18951 | + cmark_strbuf_puts(ob, "&");
|
| 18952 | + break;
|
| 18953 | +
|
| 18954 | + /* the single quote is a valid URL character
|
| 18955 | + * according to the standard; it needs HTML
|
| 18956 | + * entity escaping too */
|
| 18957 | + case '\'':
|
| 18958 | + cmark_strbuf_puts(ob, "'");
|
| 18959 | + break;
|
| 18960 | +
|
| 18961 | +/* the space can be escaped to %20 or a plus
|
| 18962 | + * sign. we're going with the generic escape
|
| 18963 | + * for now. the plus thing is more commonly seen
|
| 18964 | + * when building GET strings */
|
| 18965 | +#if 0
|
| 18966 | + case ' ':
|
| 18967 | + cmark_strbuf_putc(ob, '+');
|
| 18968 | + break;
|
| 18969 | +#endif
|
| 18970 | +
|
| 18971 | + /* every other character goes with a %XX escaping */
|
| 18972 | + default:
|
| 18973 | + hex_str[1] = hex_chars[(src[i] >> 4) & 0xF];
|
| 18974 | + hex_str[2] = hex_chars[src[i] & 0xF];
|
| 18975 | + cmark_strbuf_put(ob, hex_str, 3);
|
| 18976 | + }
|
| 18977 | +
|
| 18978 | + i++;
|
| 18979 | + }
|
| 18980 | +
|
| 18981 | + return 1;
|
| 18982 | +}
|