| p = tr->letterGroups[group]; | p = tr->letterGroups[group]; | ||||
| if (p == NULL) | if (p == NULL) | ||||
| return 0; | |||||
| return -1; | |||||
| while (*p != RULE_GROUP_END) { | while (*p != RULE_GROUP_END) { | ||||
| if (pre) { | if (pre) { | ||||
| letter_group = LetterGroupNo(rule++); | letter_group = LetterGroupNo(rule++); | ||||
| if ((n_bytes = IsLetterGroup(tr, post_ptr-1, letter_group, 0)) >= 0) { | if ((n_bytes = IsLetterGroup(tr, post_ptr-1, letter_group, 0)) >= 0) { | ||||
| add_points = (20-distance_right); | add_points = (20-distance_right); | ||||
| if (n_bytes > 0) // move pointer, if non-zero length group was found | |||||
| if (n_bytes >= 0) // move pointer, if group was found | |||||
| post_ptr += (n_bytes-1); | post_ptr += (n_bytes-1); | ||||
| } else | } else | ||||
| failed = 1; | failed = 1; | ||||
| letter_group = LetterGroupNo(rule++); | letter_group = LetterGroupNo(rule++); | ||||
| if ((n_bytes = IsLetterGroup(tr, pre_ptr, letter_group, 1)) >= 0) { | if ((n_bytes = IsLetterGroup(tr, pre_ptr, letter_group, 1)) >= 0) { | ||||
| add_points = (20-distance_right); | add_points = (20-distance_right); | ||||
| if (n_bytes > 0) // move pointer, if non-zero length group was found | |||||
| pre_ptr -= (n_bytes-1); | |||||
| if (n_bytes >= 0) // move pointer, if group was found | |||||
| pre_ptr -= (n_bytes-1); | |||||
| } else | } else | ||||
| failed = 1; | failed = 1; | ||||
| break; | break; |