diff options
-rw-r--r-- | engines/sci/parser/vocabulary.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/engines/sci/parser/vocabulary.cpp b/engines/sci/parser/vocabulary.cpp index b4a223dcff..3344b79e26 100644 --- a/engines/sci/parser/vocabulary.cpp +++ b/engines/sci/parser/vocabulary.cpp @@ -530,18 +530,19 @@ bool Vocabulary::tokenizeString(ResultWordListList &retval, const char *sentence *error = NULL; do { - c = sentence[pos_in_sentence++]; + if (Common::isAlnum(c) || (c == '-' && wordLen) || (c >= 0x80)) { currentWord[wordLen] = lowerCaseMap[c]; ++wordLen; - } - // Continue on this word */ - // Words may contain a '-', but may not - // start with one. - else { - if (wordLen) { // Finished a word? + } else if (c == '\'' && wordLen && (sentence[pos_in_sentence] == 's' || sentence[pos_in_sentence] == 'S')) { + // Skip apostrophe-s at the end of the word, if it exists + pos_in_sentence++; // skip the 's' + } else { + // Continue on this word. Words may contain a '-', but may not start with + // one. + if (wordLen) { // Finished a word? ResultWordList lookup_result; // Look it up |