513 char insequence = '\0'; |
513 char insequence = '\0'; |
514 for (size_t i = 0 ; i < src.length ; i++) { |
514 for (size_t i = 0 ; i < src.length ; i++) { |
515 // quoted strings / identifiers are a single token |
515 // quoted strings / identifiers are a single token |
516 if (src.ptr[i] == '\'' || src.ptr[i] == '`') { |
516 if (src.ptr[i] == '\'' || src.ptr[i] == '`') { |
517 if (src.ptr[i] == insequence) { |
517 if (src.ptr[i] == insequence) { |
518 // add quoted token to list |
518 // lookahead for escaped string quotes |
519 token->value.length++; |
519 if (src.ptr[i] == '\'' && i+2 < src.length && |
520 tokens = dav_parse_add_token(tokens, token); |
520 src.ptr[i+1] == src.ptr[i] && src.ptr[i+2] == src.ptr[i]) { |
521 token = NULL; |
521 token->value.length += 3; |
522 insequence = '\0'; |
522 i += 2; |
|
523 } else { |
|
524 // add quoted token to list |
|
525 token->value.length++; |
|
526 tokens = dav_parse_add_token(tokens, token); |
|
527 token = NULL; |
|
528 insequence = '\0'; |
|
529 } |
523 } else if (insequence == '\0') { |
530 } else if (insequence == '\0') { |
524 insequence = src.ptr[i]; |
531 insequence = src.ptr[i]; |
525 // always create new token for quoted strings |
532 // always create new token for quoted strings |
526 if (token) { |
533 if (token) { |
527 tokens = dav_parse_add_token(tokens, token); |
534 tokens = dav_parse_add_token(tokens, token); |