| @@ -2077,6 +2077,24 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
| else | |||
| failed = 1; | |||
| break; | |||
| case RULE_SKIPCHARS: { | |||
| // 'xyJ)' means 'skip characters backwards until xy' | |||
| char *p = pre_ptr; // pointer to current character in word | |||
| char *p2 = p; // pointer to previous character in word | |||
| while ((*p != *rule) && (*p != RULE_SPACE) && (*p != 0)) { | |||
| p2 = p; | |||
| p--; | |||
| } | |||
| // if succeed, set pre_ptr to next character after 'xy' and remaining | |||
| // 'xy' part is checked as usual in following cycles of PRE rule characters | |||
| if (*p == *rule) | |||
| pre_ptr = p2; | |||
| } | |||
| break; | |||
| default: | |||
| if (letter == rb) { | |||
| if (letter == RULE_SPACE) | |||