I'd suggest that a_rules, b_rules, ..., z_rules should all be entries in a big array.

Say this big array is called rules - then you can replace this whole switch with a subscript check and array dereference:

```c++
unsigned idx = *word_end - 'a';
stop = (idx > 'z' - 'a') || Implement_Rules(word, &rules[idx]);
```