#include #include #include #include "hunspell.hxx" #ifndef WIN32 using namespace std; #endif int main(int argc, char **argv) { FILE *wtclst; int i; int dp; char buf[101]; Hunspell *pMS; /* first parse the command line options */ for (i = 1; i < 3; i++) if (!argv[i]) { fprintf(stderr, "correct syntax is:\nanalyze affix_file"); fprintf(stderr, " dictionary_file file_of_words_to_check\n"); fprintf(stderr, "use two words per line for morphological generation\n"); exit(1); } /* open the words to check list */ wtclst = fopen(argv[3], "r"); if (!wtclst) { fprintf(stderr, "Error - could not open file to check\n"); exit(1); } pMS = new Hunspell(argv[1], argv[2]); while (fgets(buf, 100, wtclst)) { *(buf + strlen(buf) - 1) = '\0'; if (*buf == '\0') continue; // morphgen demo char * s = strchr(buf, ' '); if (s) { *s = '\0'; char ** result; int n = pMS->generate(&result, buf, s+1); for (int i = 0; i < n; i++) { fprintf(stdout, "generate(%s, %s) = %s\n", buf, s+1, result[i]); } pMS->free_list(&result, n); if (n == 0) fprintf(stdout, "generate(%s, %s) = NO DATA\n", buf, s+1); } else { dp = pMS->spell(buf); fprintf(stdout, "> %s\n", buf); if (dp) { char ** result; int n = pMS->analyze(&result, buf); for (int i = 0; i < n; i++) { fprintf(stdout, "analyze(%s) = %s\n", buf, result[i]); } pMS->free_list(&result, n); n = pMS->stem(&result, buf); for (int i = 0; i < n; i++) { fprintf(stdout, "stem(%s) = %s\n", buf, result[i]); } pMS->free_list(&result, n); } else { fprintf(stdout, "Unknown word.\n"); } } } delete pMS; fclose(wtclst); return 0; }