| 1345 | } |
| 1346 | |
| 1347 | void* fxCharSetStringsSequence(txPatternParser* parser, txString string) |
| 1348 | { |
| 1349 | void* result = NULL; |
| 1350 | void* former = NULL; |
| 1351 | void* current = NULL; |
| 1352 | txSequence* formerBranch = NULL; |
| 1353 | txSequence* currentBranch = NULL; |
| 1354 | while (*string) { |
| 1355 | txInteger character; |
| 1356 | string = fxUTF8Decode(string, &character); // no surrogate |
| 1357 | current = fxCharSetCanonicalizeSingle(parser, fxCharSetSingle(parser, character)); |
| 1358 | if (former) { |
| 1359 | currentBranch = fxPatternParserCreateTerm(parser, sizeof(txSequence), fxSequenceMeasure); |
| 1360 | currentBranch->left = former; |
| 1361 | currentBranch->right = current; |
| 1362 | if (formerBranch) |
| 1363 | formerBranch->right = (txTerm*)currentBranch; |
| 1364 | else |
| 1365 | result = currentBranch; |
| 1366 | formerBranch = currentBranch; |
| 1367 | } |
| 1368 | else |
| 1369 | result = current; |
| 1370 | former = current; |
| 1371 | } |
| 1372 | return result; |
| 1373 | } |
| 1374 | |
| 1375 | void* fxCharSetWords(txPatternParser* parser) |
| 1376 | { |
no test coverage detected