more accurate icnt for rep operator

This commit is contained in:
Kyryl Melekhin
2021-07-18 23:53:06 +00:00
parent 001ae2393b
commit 1e32e0d586
2 changed files with 7 additions and 2 deletions

6
pike.c
View File

@@ -290,7 +290,7 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
break;
case '{':;
int maxcnt = 0, mincnt = 0,
i = 0, icnt = 1, size, split;
i = 0, icnt = 0, size, split;
re++;
while (isdigit((unsigned char) *re))
mincnt = mincnt * 10 + *re++ - '0';
@@ -319,13 +319,15 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
}
if (code) {
for (i = 0; i < size; i++)
switch (code[term]) {
switch (code[term+i]) {
case CLASS:
i += code[term+i+2] * 2 + 1;
case JMP:
case SPLIT:
case RSPLIT:
case SAVE:
case CHAR:
i++;
icnt++;
}
}

View File

@@ -45,6 +45,7 @@ b[^c]*
[а-г]+
called|chief|dust|familiar|forth|waif|campaign|divers|smile|notice|kill|human|stands|nightshade|dollar|doughty|gloaming|twist|July|officers|wrest|coop|one|ability|welcome|significance|writer|spring|it's|helped|set|Paris|from|coomb|stay|hummock|taken|anon|makes|boat|nearly|am|justice|further|expression|contemporary|sooth|order|about|question|lived|apply|educational|of|night|satisfy|opened|never|success|until|visit|promise|parts|beneath|matter|typical|bade|apartment|rapidly|primary|bring|throat|hold|laws|understand|trade|desire|material|evidence|another|often|plash|model|someone|bond|hell|relationship|probably|exercise|performance|wants|known|countries|gammer|leeward|took|itself|representative|objection|aircraft
abc+h+d+f
([0-9]|abc){5}[0-9]+(grh)
"
input="\
abcdef
@@ -91,6 +92,7 @@ aaaabcdefghij
ааааабвг...
hhfd h23 performance
abcccccccccccchdf
344444442344grhhhsdfg
"
expect="\
(0,3)
@@ -137,6 +139,7 @@ expect="\
(0,16)
(10,21)
(0,17)
(0,15)(4,5)(12,15)
(0,0)
"
c=1