| 1444 | } |
| 1445 | |
| 1446 | void fxGetNextTokenJSON(txParser* parser) |
| 1447 | { |
| 1448 | int c; |
| 1449 | txString p; |
| 1450 | txString q; |
| 1451 | |
| 1452 | parser->states[0] = parser->states[2]; |
| 1453 | |
| 1454 | parser->states[2].crlf = 0; |
| 1455 | parser->states[2].escaped = 0; |
| 1456 | parser->states[2].integer = 0; |
| 1457 | parser->states[2].modifierLength = 0; |
| 1458 | parser->states[2].modifier = parser->emptyString; |
| 1459 | parser->states[2].number = 0; |
| 1460 | parser->states[2].rawLength = 0; |
| 1461 | parser->states[2].raw = parser->emptyString; |
| 1462 | parser->states[2].stringLength = 0; |
| 1463 | parser->states[2].string = parser->emptyString; |
| 1464 | parser->states[2].symbol = C_NULL; |
| 1465 | parser->states[2].token = XS_NO_TOKEN; |
| 1466 | |
| 1467 | while (parser->states[2].token == XS_NO_TOKEN) { |
| 1468 | switch (parser->character) { |
| 1469 | case C_EOF: |
| 1470 | parser->states[2].token = XS_TOKEN_EOF; |
| 1471 | break; |
| 1472 | case 10: |
| 1473 | parser->states[2].line++; |
| 1474 | fxGetNextCharacter(parser); |
| 1475 | parser->states[2].crlf = 1; |
| 1476 | break; |
| 1477 | case 13: |
| 1478 | parser->states[2].line++; |
| 1479 | fxGetNextCharacter(parser); |
| 1480 | if (parser->character == 10) |
| 1481 | fxGetNextCharacter(parser); |
| 1482 | parser->states[2].crlf = 1; |
| 1483 | break; |
| 1484 | |
| 1485 | case '\t': |
| 1486 | case ' ': |
| 1487 | fxGetNextCharacter(parser); |
| 1488 | break; |
| 1489 | |
| 1490 | case '0': |
| 1491 | fxGetNextCharacter(parser); |
| 1492 | c = parser->character; |
| 1493 | if (c == '.') { |
| 1494 | fxGetNextCharacter(parser); |
| 1495 | c = parser->character; |
| 1496 | if ((('0' <= c) && (c <= '9')) || (c == 'e') || (c == 'E')) |
| 1497 | fxGetNextNumberE(parser, 1); |
| 1498 | else { |
| 1499 | parser->states[2].number = 0; |
| 1500 | parser->states[2].token = XS_TOKEN_NUMBER; |
| 1501 | } |
| 1502 | } |
| 1503 | else if ((c == 'b') || (c == 'B')) { |
no test coverage detected