| 1442 | } |
| 1443 | |
| 1444 | void fxCaptureNameParse(txPatternParser* parser, txInteger* length) |
| 1445 | { |
| 1446 | txString p = parser->error; |
| 1447 | txString q = p + sizeof(parser->error) - 1; |
| 1448 | if (parser->character == '\\') |
| 1449 | fxCaptureNameEscape(parser); |
| 1450 | if (fxIsIdentifierFirst(parser->character)) { |
| 1451 | p = mxStringByteEncode(p, parser->character); |
| 1452 | fxPatternParserNext(parser); |
| 1453 | } |
| 1454 | else |
| 1455 | fxPatternParserError(parser, gxErrors[mxInvalidName]); |
| 1456 | while (parser->character != '>') { |
| 1457 | if (parser->character == '\\') |
| 1458 | fxCaptureNameEscape(parser); |
| 1459 | if (fxIsIdentifierNext(parser->character)) { |
| 1460 | if (mxStringByteLength(parser->character) > (q - p)) |
| 1461 | fxPatternParserError(parser, gxErrors[mxNameOverflow]); |
| 1462 | p = mxStringByteEncode(p, parser->character); |
| 1463 | fxPatternParserNext(parser); |
| 1464 | } |
| 1465 | else |
| 1466 | fxPatternParserError(parser, gxErrors[mxInvalidName]); |
| 1467 | } |
| 1468 | parser->flags &= ~XS_REGEXP_NAME; |
| 1469 | fxPatternParserNext(parser); |
| 1470 | *p = 0; |
| 1471 | *length = mxPtrDiff(p - parser->error); |
| 1472 | } |
| 1473 | |
| 1474 | void fxCaptureNameParticipate(txPatternParser* parser, txCapture* capture) |
| 1475 | { |
no test coverage detected