|
|
|
|
|
|
|
|
|
|
|
|
|
|
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; |