Support manual callout with string argument at start of condition.
This commit is contained in:
parent
e43b3d435b
commit
baf08a3d37
|
@ -5218,11 +5218,41 @@ for (;; ptr++)
|
||||||
used to check for an assertion condition. That's all that is needed! */
|
used to check for an assertion condition. That's all that is needed! */
|
||||||
|
|
||||||
if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C)
|
if (ptr[1] == CHAR_QUESTION_MARK && ptr[2] == CHAR_C)
|
||||||
|
{
|
||||||
|
if (IS_DIGIT(ptr[3]) || ptr[3] == CHAR_RIGHT_PARENTHESIS)
|
||||||
{
|
{
|
||||||
for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break;
|
for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break;
|
||||||
if (ptr[i] == CHAR_RIGHT_PARENTHESIS)
|
if (ptr[i] == CHAR_RIGHT_PARENTHESIS)
|
||||||
tempptr += i + 1;
|
tempptr += i + 1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uint32_t delimiter = 0;
|
||||||
|
for (i = 0; PRIV(callout_start_delims)[i] != 0; i++)
|
||||||
|
{
|
||||||
|
if (ptr[3] == PRIV(callout_start_delims)[i])
|
||||||
|
{
|
||||||
|
delimiter = PRIV(callout_end_delims)[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (delimiter != 0)
|
||||||
|
{
|
||||||
|
for (i = 4; ptr + i < cb->end_pattern; i++)
|
||||||
|
{
|
||||||
|
if (ptr[i] == delimiter)
|
||||||
|
{
|
||||||
|
if (ptr[i+1] == delimiter) i++;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ptr[i+1] == CHAR_RIGHT_PARENTHESIS) tempptr += i + 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* For conditions that are assertions, check the syntax, and then exit
|
/* For conditions that are assertions, check the syntax, and then exit
|
||||||
the switch. This will take control down to where bracketed groups
|
the switch. This will take control down to where bracketed groups
|
||||||
|
|
|
@ -4210,4 +4210,12 @@ a random value. /Ix
|
||||||
|
|
||||||
/(?:a(?C`code`)){3}/B
|
/(?:a(?C`code`)){3}/B
|
||||||
|
|
||||||
|
/^(?(?C25)(?=abc)abcd|xyz)/B
|
||||||
|
abcdefg
|
||||||
|
xyz123
|
||||||
|
|
||||||
|
/^(?(?C$abc$)(?=abc)abcd|xyz)/B
|
||||||
|
abcdefg
|
||||||
|
xyz123
|
||||||
|
|
||||||
# End of testinput2
|
# End of testinput2
|
||||||
|
|
|
@ -4827,4 +4827,12 @@
|
||||||
/^a(b)c(?C{AB})def/B
|
/^a(b)c(?C{AB})def/B
|
||||||
abcdef\=callout_capture
|
abcdef\=callout_capture
|
||||||
|
|
||||||
|
/^(?(?C25)(?=abc)abcd|xyz)/B
|
||||||
|
abcdefg
|
||||||
|
xyz123
|
||||||
|
|
||||||
|
/^(?(?C$abc$)(?=abc)abcd|xyz)/B
|
||||||
|
abcdefg
|
||||||
|
xyz123
|
||||||
|
|
||||||
# End of testinput6
|
# End of testinput6
|
||||||
|
|
|
@ -14094,4 +14094,56 @@ Callout: {AB} last capture = 1
|
||||||
End
|
End
|
||||||
------------------------------------------------------------------
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
/^(?(?C25)(?=abc)abcd|xyz)/B
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Bra
|
||||||
|
^
|
||||||
|
Cond
|
||||||
|
Callout 25 9 7
|
||||||
|
Assert
|
||||||
|
abc
|
||||||
|
Ket
|
||||||
|
abcd
|
||||||
|
Alt
|
||||||
|
xyz
|
||||||
|
Ket
|
||||||
|
Ket
|
||||||
|
End
|
||||||
|
------------------------------------------------------------------
|
||||||
|
abcdefg
|
||||||
|
--->abcdefg
|
||||||
|
25 ^ (?=abc)
|
||||||
|
0: abcd
|
||||||
|
xyz123
|
||||||
|
--->xyz123
|
||||||
|
25 ^ (?=abc)
|
||||||
|
0: xyz
|
||||||
|
|
||||||
|
/^(?(?C$abc$)(?=abc)abcd|xyz)/B
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Bra
|
||||||
|
^
|
||||||
|
Cond
|
||||||
|
CalloutStr $abc$ 12 7
|
||||||
|
Assert
|
||||||
|
abc
|
||||||
|
Ket
|
||||||
|
abcd
|
||||||
|
Alt
|
||||||
|
xyz
|
||||||
|
Ket
|
||||||
|
Ket
|
||||||
|
End
|
||||||
|
------------------------------------------------------------------
|
||||||
|
abcdefg
|
||||||
|
Callout: $abc$
|
||||||
|
--->abcdefg
|
||||||
|
^ (?=abc)
|
||||||
|
0: abcd
|
||||||
|
xyz123
|
||||||
|
Callout: $abc$
|
||||||
|
--->xyz123
|
||||||
|
^ (?=abc)
|
||||||
|
0: xyz
|
||||||
|
|
||||||
# End of testinput2
|
# End of testinput2
|
||||||
|
|
|
@ -7835,4 +7835,56 @@ Callout: {AB} last capture = 0
|
||||||
^ ^ d
|
^ ^ d
|
||||||
0: abcdef
|
0: abcdef
|
||||||
|
|
||||||
|
/^(?(?C25)(?=abc)abcd|xyz)/B
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Bra
|
||||||
|
^
|
||||||
|
Cond
|
||||||
|
Callout 25 9 7
|
||||||
|
Assert
|
||||||
|
abc
|
||||||
|
Ket
|
||||||
|
abcd
|
||||||
|
Alt
|
||||||
|
xyz
|
||||||
|
Ket
|
||||||
|
Ket
|
||||||
|
End
|
||||||
|
------------------------------------------------------------------
|
||||||
|
abcdefg
|
||||||
|
--->abcdefg
|
||||||
|
25 ^ (?=abc)
|
||||||
|
0: abcd
|
||||||
|
xyz123
|
||||||
|
--->xyz123
|
||||||
|
25 ^ (?=abc)
|
||||||
|
0: xyz
|
||||||
|
|
||||||
|
/^(?(?C$abc$)(?=abc)abcd|xyz)/B
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Bra
|
||||||
|
^
|
||||||
|
Cond
|
||||||
|
CalloutStr $abc$ 12 7
|
||||||
|
Assert
|
||||||
|
abc
|
||||||
|
Ket
|
||||||
|
abcd
|
||||||
|
Alt
|
||||||
|
xyz
|
||||||
|
Ket
|
||||||
|
Ket
|
||||||
|
End
|
||||||
|
------------------------------------------------------------------
|
||||||
|
abcdefg
|
||||||
|
Callout: $abc$
|
||||||
|
--->abcdefg
|
||||||
|
^ (?=abc)
|
||||||
|
0: abcd
|
||||||
|
xyz123
|
||||||
|
Callout: $abc$
|
||||||
|
--->xyz123
|
||||||
|
^ (?=abc)
|
||||||
|
0: xyz
|
||||||
|
|
||||||
# End of testinput6
|
# End of testinput6
|
||||||
|
|
Loading…
Reference in New Issue