#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %ownrecord(*)%name NIL == 0
static struct BROTHER *NIL = 0;
// 2
// 3 !-------------------------------!
// 4 ! WORD !
// 5 ! Copyright 1985 A. R. Deas !
// 6 !-------------------------------!
// 7
// 8 {---------------------------------------------------------------------------}
// 9 { WORD infile outfile [-a] [-b] [-c] [-d] [-dict fname] [-f] [-h] [-l] [-m] }
// 10 { [-n] [-p] [-r] [-s] [-t] [-u] [-w] }
// 11 { }
// 12 { FUNCTION }
// 13 { Produce word lists: vocabularies, lists of spelling errors, }
// 14 { word frequency lists, word counts, list multiple words. }
// 15 { }
// 16 { OPTIONS }
// 17 { default produce nothing at all }
// 18 { -a shorthand for [-c -m -n -u -w] }
// 19 { -b What is the biggest (longest) word }
// 20 { -c Check spelling }
// 21 { -d include Digits }
// 22 { -f produce vocabulary list, sorted by frequency }
// 23 { -h print help info }
// 24 { -l produce vocabulary list, sorted Lexically }
// 25 { -m flag error when multiple instances of same word occur }
// 26 { -n for each spelling error, give me help with the spelling}
// 27 { -p produce Pure word lists - no frequency info }
// 28 { -r print vocabulary lists in Reverse order }
// 29 { -s disregard `@' instead of seeing it as a special alpha }
// 30 { -t consider `\' to be a char instead disregarding it }
// 31 { -w print Word count and variety of words }
// 32 { -u check word Usage and help me with my writing style }
// 33 { -dict dictname use dictionary in file dictname instead of minidict }
// 34 {---------------------------------------------------------------------------}
// 35
// 36 {---------------------------------------------------------------------------}
// 37 { How it works: }
// 38 { Interpet command line }
// 39 { if no options then stop }
// 40 { hash all words in the infile into the WORD TABLE }
// 41 { MARK - remember where heap is }
// 42 { if help wanted then call help }
// 43 { if spelling wanted }
// 44 { produce a sort tree in lex order }
// 45 { open dictionary file }
// 46 { cut links from tree to hash table where you find a word }
// 47 { close dictionary }
// 48 { print out sort tree }
// 49 { RELEASE }
// 50 { fi }
// 51 { if word count wanted then produce word count }
// 52 { if lexical sort of words wanted then sort and print table and RELEASE }
// 53 { if frequency sort of words wanted then sort and print table and RELEASE }
// 54 {---------------------------------------------------------------------------}
// 55
// 56
// 57 !%include "UTILS:util.imp" {for unadulterated STOI and ITOS}
// 58
// 59
// 60 {QUICK STORAGE TABLE}
// 61
// 62 %recordformat word rec(%string (31) word, %integer occurances,
struct WORDREC {
union {
struct {
_imp_string31 WORD;
int OCCURANCES;
struct WORDREC *NEXT;
};
};
};
// 63+ %record (word rec) %name next)
// 64 %constantinteger hash table size = 16_0FFF {4095}
// 65 %ownrecord (word rec) %name %array word table(0:hash table size)
static struct WORDREC *WORDTABLE[4096];
struct _imp_dv WORDTABLE_dv = {WORDTABLE, sizeof(struct WORDREC *) /*, dims, <bounds> */};
// 66
// 67
// 68 {SORTING TREE}
// 69
// 70 %recordformat node(%record (word rec) %name word,
struct NODE {
union {
struct {
struct WORDREC *WORD;
struct NODE *LSON;
struct NODE *RSON;
struct NODE *BROTHER;
};
};
};
// 71+ %record (node) %name lson, rson, brother)
// 72 %ownrecord (node) %name sort tree
static struct NODE *SORTTREE;
// 73
// 74 {Things needed to flag multiple words}
// 75 %ownstring (31) prev word = ""
static _imp_string31 PREVWORD = _imp_str_init("");
// 76 %owninteger line number = 1
static int LINENUMBER = 1;
// 77 %owninteger num words in sentences = 0
static int NUMWORDSINSENTENCES = 0;
// 78 %owninteger sentence count = 0
static int SENTENCECOUNT = 0;
// 79 %owninteger recursive reference = 0
static int RECURSIVEREFERENCE = 0;
// 80 %owninteger words from start of sentence = 1
static int WORDSFROMSTARTOFSENTENCE = 1;
// 81 %owninteger in a sentence = 1
static int INASENTENCE = 1;
// 82 %owninteger just finished a sentence = 0
static int JUSTFINISHEDASENTENCE = 0;
// 83
// 84 {CLI THINGS}
// 85
// 86 %constantinteger A option = 2_100000000000000,
// 87+ B option = 2_010000000000000,
// 88+ C option = 2_001000000000000,
// 89+ D option = 2_000100000000000,
// 90+ F option = 2_000010000000000,
// 91+ H option = 2_000001000000000,
// 92+ L option = 2_000000100000000,
// 93+ M option = 2_000000010000000,
// 94+ N option = 2_000000001000000,
// 95+ P option = 2_000000000100000,
// 96+ R option = 2_000000000010000,
// 97+ S option = 2_000000000001000,
// 98+ T option = 2_000000000000100,
// 99+ U option = 2_000000000000010,
// 100+ W option = 2_000000000000001
// 101 %owninteger options = 0
static int OPTIONS = 0;
// 102 %ownstring (31) dictfile = "STYLE:DICT"
static _imp_string31 DICTFILE = _imp_str_init("STYLE:DICT");
// 103 %ownstring (31) inf=""
static _imp_string31 INF = _imp_str_init("");
// 104 %ownstring (31) outf=""
static _imp_string31 OUTF = _imp_str_init("");
// 105
// 106 {INTERPRET COMMAND LINE}
// 107
// 108 %routine interpret command line
static void INTERPRETCOMMANDLINE(void) {
// 109
// 110 ! define param("Source file",inf,pam major+pam infile)
// 111 ! define param("Destination file",outf,pam major+pam outfile)
// 112 ! define param("Dictionary file",dictfile,0)
// 113 ! define boolean params(",,,,,,,,,,,,,,,,,A,B,C,D,F,H,L,M,N,P,R,S,T,U,W",
// 114 ! options,0)
// 115 ! process parameters(cliparam)
// 116
// 117 %own %string (255) Prog name = "Style"
static _imp_string255 PROGNAME = _imp_str_init("Style");
// 118
// 119 !!%string(255)%fn cliparam
// 120 !!%constinteger R0 = 0
// 121 !!%integer strad,i
// 122 !!%string(255) s
// 123 !! *STMFD_12!,<0,1,2,3>
// 124 !! *SWI_16
// 125 !! *STR_R0,Strad
// 126 !! *LDMFD_12!,<0,1,2,3>
// 127 !! s = ""
// 128 !! %cycle
// 129 !! i = byteinteger(STRAD)
// 130 !! %if i <= 13 %start
// 131 !! Prog name = s %and s = "" %unless s -> Prog name.(" ").s
// 132 !! %result=s
// 133 !! %finish
// 134 !! s <- s.tostring(i)
// 135 !! strad=strad+1
// 136 !! %repeat
// 137 !!%end
// 138
// 139 %routine handle(%string(255) s)
void HANDLE(_imp_string255 S) {
// 140 %own %integer pos state = 0
static int POSSTATE = 0;
// 141 %integer ch
int CH;
// 142 %switch which(1:4), option(0:255)
int WHICH_index;
int WHICH_line;
char *WHICH_file;
static const void *WHICH[4] = {&&case_WHICH_missing, &&case_WHICH_missing, &&case_WHICH_missing,
&&case_WHICH_missing};
int OPTION_index;
int OPTION_line;
char *OPTION_file;
static const void *OPTION[256] = {
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing,
&&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing, &&case_OPTION_missing};
// 143 %return %if s=""
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("")) != 0) goto L_0001;
/* clang-format on */
return;
L_0001:;
// 144 %if CHARNO(s, 1) # '-' %start
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &S, 1) == 45) goto L_0002;
// 145 pos state = pos state+1
POSSTATE = POSSTATE + 1;
// 146 -> which(pos state)
WHICH_line = __LINE__;
WHICH_file = __FILE__;
WHICH_index = POSSTATE;
goto case_WHICH_dispatch;
// 147 which(1): inf = s; %return
case_WHICH_1:;
/* clang-format off */
_imp_strncpy(/*?*/&INF, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = S; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
return;
// 148 which(2): outf = s; %return
case_WHICH_2:;
/* clang-format off */
_imp_strncpy(/*?*/&OUTF, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = S; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
return;
// 149 which(3): dictfile = s; %return
case_WHICH_3:;
/* clang-format off */
_imp_strncpy(/*?*/&DICTFILE, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = S; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
return;
// 150 which(4): pos state = pos state-1
case_WHICH_4:;
POSSTATE = POSSTATE - 1;
// 151 print string("*** Spurious parameter '".s."'".snl)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("*** Spurious parameter '"), (_imp_string *)/*?*/&S); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("'")); (_imp_string255 *)&tmp;}), ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_SNL(); (void *)&tmp;})); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 152 %return
return;
// 153 %else
L_0002:;
// 154 %if s = "-help" %or s = "-Help" %or s = "-HELP" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("-help")) == 0) goto L_0004;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("-Help")) == 0) goto L_0004;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("-HELP")) != 0) goto L_0005;
/* clang-format on */
L_0004:;
// 155 Options = Options ! H Option
OPTIONS = OPTIONS | 512;
// 156 %elseif LENGTH(s) # 2
goto L_0006;
L_0005:;
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &S) == 2) goto L_0007;
// 157 print string("*** Spurious option '".s."'".snl)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("*** Spurious option '"), (_imp_string *)/*?*/&S); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("'")); (_imp_string255 *)&tmp;}), ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_SNL(); (void *)&tmp;})); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 158 %return
return;
// 159 %else
L_0007:;
// 160 ch = CHARNO(s, 2)
CH = *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &S, 2);
// 161 -> option(ch)
OPTION_line = __LINE__;
OPTION_file = __FILE__;
OPTION_index = CH;
goto case_OPTION_dispatch;
// 162 option('A'): option('a'): Options = Options ! A Option; %return
case_OPTION_65:;
case_OPTION_97:;
OPTIONS = OPTIONS | 16384;
return;
// 163 option('B'): option('b'): Options = Options ! B Option; %return
case_OPTION_66:;
case_OPTION_98:;
OPTIONS = OPTIONS | 8192;
return;
// 164 option('C'): option('c'): Options = Options ! C Option; %return
case_OPTION_67:;
case_OPTION_99:;
OPTIONS = OPTIONS | 4096;
return;
// 165 option('D'): option('d'): Options = Options ! D Option; %return
case_OPTION_68:;
case_OPTION_100:;
OPTIONS = OPTIONS | 2048;
return;
// 166 option('F'): option('f'): Options = Options ! F Option; %return
case_OPTION_70:;
case_OPTION_102:;
OPTIONS = OPTIONS | 1024;
return;
// 167 option('H'): option('h'): Options = Options ! H Option; %return
case_OPTION_72:;
case_OPTION_104:;
OPTIONS = OPTIONS | 512;
return;
// 168 option('L'): option('l'): Options = Options ! L Option; %return
case_OPTION_76:;
case_OPTION_108:;
OPTIONS = OPTIONS | 256;
return;
// 169 option('M'): option('m'): Options = Options ! M Option; %return
case_OPTION_77:;
case_OPTION_109:;
OPTIONS = OPTIONS | 128;
return;
// 170 option('N'): option('n'): Options = Options ! N Option; %return
case_OPTION_78:;
case_OPTION_110:;
OPTIONS = OPTIONS | 64;
return;
// 171 option('P'): option('p'): Options = Options ! P Option; %return
case_OPTION_80:;
case_OPTION_112:;
OPTIONS = OPTIONS | 32;
return;
// 172 option('R'): option('r'): Options = Options ! R Option; %return
case_OPTION_82:;
case_OPTION_114:;
OPTIONS = OPTIONS | 16;
return;
// 173 option('S'): option('s'): Options = Options ! S Option; %return
case_OPTION_83:;
case_OPTION_115:;
OPTIONS = OPTIONS | 8;
return;
// 174 option('T'): option('t'): Options = Options ! T Option; %return
case_OPTION_84:;
case_OPTION_116:;
OPTIONS = OPTIONS | 4;
return;
// 175 option('U'): option('u'): Options = Options ! U Option; %return
case_OPTION_85:;
case_OPTION_117:;
OPTIONS = OPTIONS | 2;
return;
// 176 option('W'): option('w'): Options = Options ! W Option; %return
case_OPTION_87:;
case_OPTION_119:;
OPTIONS = OPTIONS | 1;
return;
// 177 OPTION(*):
case_OPTION_default:;
// 178 print string("*** Spurious option '".s."'".snl)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("*** Spurious option '"), (_imp_string *)/*?*/&S); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("'")); (_imp_string255 *)&tmp;}), ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_SNL(); (void *)&tmp;})); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 179 %return
return;
// 180 %finish
L_0006:;
// 181 %finish
// 182 %end
return;
case_WHICH_dispatch:
if (WHICH_index < 1 || WHICH_index > 4)
_imp_signalf(6, 3, WHICH_index, "->WHICH(%d) out of bounds at %s line %d", WHICH_index, WHICH_file, WHICH_line);
goto *WHICH[WHICH_index - 1];
case_WHICH_missing:
_imp_signalf(8, 2, WHICH_index, "switch jump to undefined label WHICH(%d): at %s line %d", WHICH_index, WHICH_file,
WHICH_line);
case_OPTION_dispatch:
if (OPTION_index < 0 || OPTION_index > 255)
_imp_signalf(6, 3, OPTION_index, "->OPTION(%d) out of bounds at %s line %d", OPTION_index, OPTION_file,
OPTION_line);
goto *OPTION[OPTION_index - 0];
case_OPTION_missing:
_imp_signalf(8, 2, OPTION_index, "switch jump to undefined label OPTION(%d): at %s line %d", OPTION_index,
OPTION_file, OPTION_line);
} /* end of HANDLE */
// 183
// 184 %string(255)%fn first(%string(255)%name s)
_imp_string255 FIRST(_imp_string255 * S) {
// 185 %string(255) left
_imp_string255 LEFT;
// 186 %if s -> left.(" ").s %then %result = left
if (!(_imp_resolve(*({
_imp_string255 tmp = *S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &LEFT, *({
_imp_string tmp = _imp_str_literal(" ");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)S)))
goto L_0009;
return *(_imp_string255 *)/*?*/ &LEFT;
L_0009:;
// 187 left = s; s = ""
/* clang-format off */
_imp_strncpy(/*?*/&LEFT, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *S; (void *)&tmp;}), /*max:*/255);
/* clang-format on */
*S = _imp_str_literal("");
// 188 %result = left
return *(_imp_string255 *)/*?*/ &LEFT;
// 189 %end
} /* end of FIRST */
// 190
// 191 %string(255) s, one, left, right
_imp_string255 S;
_imp_string255 ONE;
_imp_string255 LEFT;
_imp_string255 RIGHT;
// 192
// 193 options = 0
OPTIONS = 0;
// 194
// 195 s = cliparam
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_CLIPARAM(); (void *)&tmp;}), /*max:*/255);
/* clang-format on */
// 196 s = left." ".right %while s -> left.(" ").right
L_000A:;
if (!(_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &LEFT, *({
_imp_string tmp = _imp_str_literal(" ");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &RIGHT)))
goto L_000B;
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&LEFT, (_imp_string *)/*?*/_imp_str_literal_ptr(" ")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&RIGHT); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);
/* clang-format on */
goto L_000A;
L_000B:;
// 197 %if s -> left.("-dict ").right %C
if (_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &LEFT, *({
_imp_string tmp = _imp_str_literal("-dict ");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &RIGHT))
goto L_000C;
if (_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &LEFT, *({
_imp_string tmp = _imp_str_literal("-DICT ");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &RIGHT))
goto L_000C;
if (!(_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &LEFT, *({
_imp_string tmp = _imp_str_literal("-Dict ");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &RIGHT)))
goto L_000D;
L_000C:;
// 198+ %or s -> left.("-DICT ").right %C
// 199+ %or s -> left.("-Dict ").right %start
// 200 dictfile = first(right); s = left.right
/* clang-format off */
_imp_strncpy(/*?*/&DICTFILE, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = FIRST((_imp_string255 *)/*p*//*?*/&RIGHT); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
/* clang-format off */
_imp_strncpy(/*?*/&S, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&LEFT, (_imp_string *)/*?*/&RIGHT); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/255);
/* clang-format on */
// 201 %finish
L_000D:;
// 202
// 203 %while s -> one.(" ").s %cycle
L_000E:;
if (!(_imp_resolve(*({
_imp_string255 tmp = S;
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &ONE, *({
_imp_string tmp = _imp_str_literal(" ");
(_imp_string255 *)&tmp;
}),
(_imp_string255 *)/*?*/ &S)))
goto L_000F;
// 204 handle(one)
HANDLE(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = ONE/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 205 %repeat
goto L_000E;
L_000F:;
// 206 handle(s)
HANDLE(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = S/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 207
// 208 options = H Option %if Options=0 %and inf=""
if (OPTIONS != 0) goto L_0010;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&INF, (_imp_string *)/*?*/_imp_str_literal_ptr("")) != 0) goto L_0010;
/* clang-format on */
OPTIONS = 512;
L_0010:;
// 209 options = A Option %if Options=0
if (OPTIONS != 0) goto L_0011;
OPTIONS = 16384;
L_0011:;
// 210 options = options ! M Option ! C Option ! W Option %if (options & A option)#0
if (OPTIONS & 16384 == 0) goto L_0012;
OPTIONS = OPTIONS | 128 | 4096 | 1;
L_0012:;
// 211 options = options ! N Option ! U Option %if (options & A Option)#0
if (OPTIONS & 16384 == 0) goto L_0013;
OPTIONS = OPTIONS | 64 | 2;
L_0013:;
// 212
// 213 %if inf # "" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&INF, (_imp_string *)/*?*/_imp_str_literal_ptr("")) == 0) goto L_0014;
/* clang-format on */
// 214 Open Input(1, inf)
_imp_OPENINPUT(1,
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = INF/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 215 Select Input(1)
_imp_SELECTINPUT(1);
// 216 %finish
L_0014:;
// 217 %if outf # "" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&OUTF, (_imp_string *)/*?*/_imp_str_literal_ptr("")) == 0) goto L_0015;
/* clang-format on */
// 218 Open output(1, outf)
_imp_OPENOUTPUT(1,
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = OUTF/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 219 Select Output(1)
_imp_SELECTOUTPUT(1);
// 220 %finish
L_0015:;
// 221 %end {of interpret command line}
return;
} /* end of INTERPRETCOMMANDLINE */
// ?PROGNAME unused
// 222
// 223
// 224 {LEXICAL TABLES}
// 225
// 226 %constantbyteinteger wordchar = 0,
// 227+ blankspace = 1,
// 228+ illegal char = 2,
// 229+ noise word = 3 {ignore words containing one of these},
// 230+ bad alpha = 4,
// 231+ punctuation = 5,
// 232+ newline char = 10
// 233 %ownbyteinteger %array lexical type (0:255) =
static unsigned char LEXICALTYPE[256] = {2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 1, 2,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 2,
2, 2, 1,
5, 5, 1,
1, 1, 5,
5, 5, 5,
1, 1, 5,
1, 5, 3,
3, 3, 3,
3, 3, 3,
3, 3, 3,
3, 5, 5,
1, 1, 1,
5, 0, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 4, 4,
4, 3, 3,
1, 1, 1,
5, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
0, 0, 0,
5, 1, 1,
1, 2, [128 ... 255] = 2};
struct _imp_dv LEXICALTYPE_dv = {LEXICALTYPE, sizeof(unsigned char) /*, dims, <bounds> */};
// 234+ illegal char {NUL}, illegal char {SOH},
// 235+ illegal char {STX}, illegal char {ETX},
// 236+ illegal char {EOT}, illegal char {ENQ},
// 237+ illegal char {ACK}, illegal char {BEL},
// 238+ illegal char {BS}, illegal char {HT},
// 239+ blankspace {NL}, illegal char {VT},
// 240+ illegal char {FF}, illegal char {CR},
// 241+ illegal char {SO}, illegal char {SI},
// 242+ illegal char {DLE}, illegal char {DC1},
// 243+ illegal char {DC2}, illegal char {DC3},
// 244+ illegal char {DC4}, illegal char {NAK},
// 245+ illegal char {SYN}, illegal char {ETB},
// 246+ illegal char {CAN}, illegal char {EM},
// 247+ illegal char {SUB}, illegal char {ESC},
// 248+ illegal char {FS}, illegal char {GS},
// 249+ illegal char {RS}, illegal char {US},
// 250+ blank space { }, punctuation {!},
// 251+ punctuation {"}, blank space {#},
// 252+ blank space {$}, blank space {%},
// 253+ punctuation {&}, punctuation {'},
// 254+ punctuation {(}, punctuation {)},
// 255+ blank space {*}, blank space {+},
// 256+ punctuation {,}, blank space {-},
// 257+ punctuation {.}, noise word {/},
// 258+ noise word {0}, noise word {1},
// 259+ noise word {2}, noise word {3},
// 260+ noise word {4}, noise word {5},
// 261+ noise word {6}, noise word {7},
// 262+ noise word {8}, noise word {9},
// 263+ punctuation {:}, punctuation {;},
// 264+ blank space {<}, blank space {=},
// 265+ blank space {>}, punctuation {?},
// 266+ word char {@}, bad alpha {A},
// 267+ bad alpha {B}, bad alpha {C},
// 268+ bad alpha {D}, bad alpha {E},
// 269+ bad alpha {F}, bad alpha {G},
// 270+ bad alpha {H}, bad alpha {I},
// 271+ bad alpha {J}, bad alpha {K},
// 272+ bad alpha {L}, bad alpha {M},
// 273+ bad alpha {N}, bad alpha {O},
// 274+ bad alpha {P}, bad alpha {Q},
// 275+ bad alpha {R}, bad alpha {S},
// 276+ bad alpha {T}, bad alpha {U},
// 277+ bad alpha {V}, bad alpha {W},
// 278+ bad alpha {X}, bad alpha {Y},
// 279+ bad alpha {Z}, noise word {[},
// 280+ noise word {for LATEX \}, blank space {]},
// 281+ blank space {^}, blank space {_},
// 282+ punctuation {`}, word char {a},
// 283+ word char {b}, word char {c},
// 284+ word char {d}, word char {e},
// 285+ word char {f}, word char {g},
// 286+ word char {h}, word char {i},
// 287+ word char {j}, word char {k},
// 288+ word char {l}, word char {m},
// 289+ word char {n}, word char {o},
// 290+ word char {p}, word char {q},
// 291+ word char {r}, word char {s},
// 292+ word char {t}, word char {u},
// 293+ word char {v}, word char {w},
// 294+ word char {x}, word char {y},
// 295+ word char {z}, punctuation {curly bra},
// 296+ blank space {|}, blank space {curly ket},
// 297+ blank space {~}, illegal char {DEL},
// 298+ illegal char(*)
// 299 %owninteger %array punctuation count(0:255) = 0(*)
static int PUNCTUATIONCOUNT[256] = {[0 ... 255] = 0};
struct _imp_dv PUNCTUATIONCOUNT_dv = {PUNCTUATIONCOUNT, sizeof(int) /*, dims, <bounds> */};
// 300
// 301 {INIT}
// 302
// 303 %routine init
static void INIT(void) {
// 304 %integer i
int I;
// 305 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_0016:
if (I == 4095) goto L_0017;
I += 1;
// 306 word table(i) == NIL
WORDTABLE[I] = (struct WORDREC *)NIL;
// 307 %repeat
goto L_0016;
}
L_0017:;
// 308 sort tree == NIL
SORTTREE = (struct NODE *)NIL;
// 309
// 310 {handle latex ctrl char}
// 311 %if (options & T option)#0 %start
if (OPTIONS & 4 == 0) goto L_0019;
// 312 lexical type('\') = blank space
LEXICALTYPE[92] = 1;
// 313 lexical type('(') = blank space
LEXICALTYPE[40] = 1;
// 314 lexical type('{') = blank space
LEXICALTYPE[123] = 1;
// 315 %finish
L_0019:;
// 316
// 317 {handle scribe ctrl char}
// 318 %if (options & S option)#0 %start
if (OPTIONS & 8 == 0) goto L_001A;
// 319 lexical type('@') = noise word
LEXICALTYPE[64] = 3;
// 320 %finish
L_001A:;
// 321
// 322 {handle digits}
// 323 %if (options & D option)#0 %start
if (OPTIONS & 2048 == 0) goto L_001B;
// 324 %for i='0',1,'9' %cycle
// %for I = 48, 1, 57 %cycle
{
I = 47;
L_001C:
if (I == 57) goto L_001D;
I += 1;
// 325 lexical type(i) = word char
LEXICALTYPE[I] = 0;
// 326 %repeat
goto L_001C;
}
L_001D:;
// 327 %finish
L_001B:;
// 328 %end {of init}
return;
} /* end of INIT */
// 329
// 330
// 331 {HELP}
// 332
// 333 %routine help
static void HELP(void) {
// 334 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{---------------------------------------------------------------------------}"));
// 335+ "{---------------------------------------------------------------------------}")
// 336 Newline
_imp_NEWLINE();
// 337 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ WORD infile outfile [-a] [-b] [-c] [-d] [-dict fname] [-f] [-h] [-l] [-m] }"));
// 338+ "{ WORD infile outfile [-a] [-b] [-c] [-d] [-dict fname] [-f] [-h] [-l] [-m] }")
// 339 Newline
_imp_NEWLINE();
// 340 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ [-p] [-r] [-s] [-t] [-u] [-w] }"));
// 341+ "{ [-p] [-r] [-s] [-t] [-u] [-w] }")
// 342 Newline
_imp_NEWLINE();
// 343 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ }"));
// 344+ "{ }")
// 345 Newline
_imp_NEWLINE();
// 346 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ FUNCTION }"));
// 347+ "{ FUNCTION }")
// 348 Newline
_imp_NEWLINE();
// 349 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ Produce word lists: vocabularies, lists of spelling errors, }"));
// 350+ "{ Produce word lists: vocabularies, lists of spelling errors, }")
// 351 Newline
_imp_NEWLINE();
// 352 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ word frequency lists, word counts, list multiple words. }"));
// 353+ "{ word frequency lists, word counts, list multiple words. }")
// 354 Newline
_imp_NEWLINE();
// 355 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ Option -t is in support of TEX and LATEX }"));
// 356+ "{ Option -t is in support of TEX and LATEX }")
// 357 Newline
_imp_NEWLINE();
// 358 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ }"));
// 359+ "{ }")
// 360 Newline
_imp_NEWLINE();
// 361 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ OPTIONS }"));
// 362+ "{ OPTIONS }")
// 363 Newline
_imp_NEWLINE();
// 364 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ default same as [-a] }"));
// 365+ "{ default same as [-a] }")
// 366 Newline
_imp_NEWLINE();
// 367 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -a shorthand for [-c -m -n -u -w] }"));
// 368+ "{ -a shorthand for [-c -m -n -u -w] }")
// 369 Newline
_imp_NEWLINE();
// 370 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -b What is the biggest (longest) word }"));
// 371+ "{ -b What is the biggest (longest) word }")
// 372 Newline
_imp_NEWLINE();
// 373 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -c Check spelling }"));
// 374+ "{ -c Check spelling }")
// 375 Newline
_imp_NEWLINE();
// 376 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -d include Digits }"));
// 377+ "{ -d include Digits }")
// 378 Newline
_imp_NEWLINE();
// 379 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -f produce vocabulary list, sorted by frequency }"));
// 380+ "{ -f produce vocabulary list, sorted by frequency }")
// 381 Newline
_imp_NEWLINE();
// 382 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -h print help info }"));
// 383+ "{ -h print help info }")
// 384 Newline
_imp_NEWLINE();
// 385 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -l produce vocabulary list, sorted Lexically }"));
// 386+ "{ -l produce vocabulary list, sorted Lexically }")
// 387 Newline
_imp_NEWLINE();
// 388 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -m flag error when multiple instances of same word occur }"));
// 389+ "{ -m flag error when multiple instances of same word occur }")
// 390 Newline
_imp_NEWLINE();
// 391 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -n for each spelling error, give me help with the spelling}"));
// 392+ "{ -n for each spelling error, give me help with the spelling}")
// 393 Newline
_imp_NEWLINE();
// 394 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -r print vocabulary lists in Reverse order }"));
// 395+ "{ -r print vocabulary lists in Reverse order }")
// 396 Newline
_imp_NEWLINE();
// 397 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -s disregard `@' instead of seeing it as a special alpha }"));
// 398+ "{ -s disregard `@' instead of seeing it as a special alpha }")
// 399 Newline
_imp_NEWLINE();
// 400 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -t consider `\\' to be a char instead disregarding it }"));
// 401+ "{ -t consider `\' to be a char instead disregarding it }")
// 402 Newline
_imp_NEWLINE();
// 403 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -u check word Usage and help me with my writing style }"));
// 404+ "{ -u check word Usage and help me with my writing style }")
// 405 Newline
_imp_NEWLINE();
// 406 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -w print Word count and variety of words }"));
// 407+ "{ -w print Word count and variety of words }")
// 408 Newline
_imp_NEWLINE();
// 409 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ -dict dictname use dictionary in file <dictname> instead of default }"));
// 410+ "{ -dict dictname use dictionary in file <dictname> instead of default }")
// 411 Newline
_imp_NEWLINE();
// 412 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{ (Default dict is STYLE:DICT) }"));
// 413+ "{ (Default dict is STYLE:DICT) }")
// 414 Newline
_imp_NEWLINE();
// 415 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("{---------------------------------------------------------------------------}"));
// 416+ "{---------------------------------------------------------------------------}")
// 417 Newline
_imp_NEWLINE();
// 418 %if Options = H Option %then %stop
if (OPTIONS != 512) goto L_001F;
_imp_stop(0);
L_001F:;
// 419 %end {of help}
return;
} /* end of HELP */
// 420
// 421
// 422 {NEXT WORD}
// 423
// 424 %string (31) %function next word
static _imp_string31 NEXTWORD(void) {
// 425
// 426 {GET SYMBOL}
// 427 %integer %function get symbol
int GETSYMBOL(void) {
// 428 %integer ch
int CH;
// 429 Read Symbol(ch)
_imp_READSYMBOL(/*?*/ &CH);
// 430 line number = line number + 1 %if ch = newline char
if (CH != 10) goto L_0020;
LINENUMBER = LINENUMBER + 1;
L_0020:;
// 431 %if lexical type(ch) = punctuation %start
if (LEXICALTYPE[CH] != 5) goto L_0021;
// 432 punctuation count(ch) = punctuation count(ch) + 1
PUNCTUATIONCOUNT[CH] = PUNCTUATIONCOUNT[CH] + 1;
// 433 prev word = "."
/* clang-format off */
_imp_strncpy(/*?*/&PREVWORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal("."); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 434 %finish
L_0021:;
// 435 %if 'A' <= ch <= 'Z' %start
{
// Double-sided test on CH (Part I)
int tmp;
if (65 > (tmp = CH)) goto L_0022;
// Double-sided test on CH (Part II)
if (tmp > 90) goto L_0022;
}
// 436 {convert to lower case}
// 437 %result = ch - 'A' + 'a'
return CH - 65 + 97;
// 438 %else
L_0022:;
// 439 %result = ch
return CH;
// 440 %finish
// 441 %end {of get symbol}
} /* end of GETSYMBOL */
// 442
// 443 %integer ch
int CH;
// 444 %ownbyteinteger ready to start a new sentence = 0
static unsigned char READYTOSTARTANEWSENTENCE = 0;
// 445 %string (31) word
_imp_string31 WORD;
// 446
// 447 {MAIN OF NEXT WORD}
// 448
// 449 word = ""
/* clang-format off */
_imp_strncpy(/*?*/&WORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 450 ch = get symbol
CH = GETSYMBOL();
// 451
// 452 %while lexical type(ch) # word char %and %c
L_0023:;
if (LEXICALTYPE[CH] == 0) goto L_0024;
if (LEXICALTYPE[CH] == 3) goto L_0024;
// 453+ lexical type(ch) # noise word %cycle
// 454 ch = get symbol
CH = GETSYMBOL();
// 455 %repeat
goto L_0023;
L_0024:;
// 456
// 457 {check that have no noise words}
// 458 %if lexical type(ch) = noise word %start
if (LEXICALTYPE[CH] != 3) goto L_0025;
// 459 {skip to end of word}
// 460 %while lexical type(ch) # blank space %cycle
L_0026:;
if (LEXICALTYPE[CH] == 1) goto L_0027;
// 461 ch = get symbol
CH = GETSYMBOL();
// 462 %repeat
goto L_0026;
L_0027:;
// 463 %result = next word
return *(_imp_string31 *)/*?*/ &NEXTWORD();
// 464 %finish
L_0025:;
// 465
// 466 {read word}
// 467 %while lexical type(ch) = word char %and LENGTH(word) < 31 %cycle
L_0028:;
if (LEXICALTYPE[CH] != 0) goto L_0029;
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &WORD) >= 31) goto L_0029;
// 468 word = word . Tostring(ch)
/* clang-format off */
_imp_strncpy(/*?*/&WORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&WORD, ({__typeof__(_imp_string1) tmp; /*E*/ tmp = _imp_TOSTRING(CH); (void *)&tmp;})); (_imp_string255 *)&tmp;}); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 469 ch = get symbol
CH = GETSYMBOL();
// 470 %repeat
goto L_0028;
L_0029:;
// 471
// 472 {watch for startf a new sentence}
// 473 %if ready to start a new sentence = 1 %start
if (READYTOSTARTANEWSENTENCE != 1) goto L_002A;
// 474 words from start of sentence = 1 {the first word in a new sentence}
WORDSFROMSTARTOFSENTENCE = 1;
// 475 ready to start a new sentence = 0
READYTOSTARTANEWSENTENCE = 0;
// 476 in a sentence = 1
INASENTENCE = 1;
// 477 %else
goto L_002B;
L_002A:;
// 478 words from start of sentence = words from start of sentence + 1
WORDSFROMSTARTOFSENTENCE = WORDSFROMSTARTOFSENTENCE + 1;
// 479 %finish
L_002B:;
// 480
// 481 {Keep score of how many sentences parsed}
// 482 %if ch = '.' %or ch = '!' %or ch = '?' %or ch = ':' %start
if (CH == 46) goto L_0018;
if (CH == 33) goto L_0018;
if (CH == 63) goto L_0018;
if (CH != 58) goto L_002C;
L_0018:;
// 483 sentence count = sentence count + 1
SENTENCECOUNT = SENTENCECOUNT + 1;
// 484 ready to start a new sentence = 1
READYTOSTARTANEWSENTENCE = 1;
// 485 %finish
L_002C:;
// 486
// 487 {watch for end of a sentence}
// 488 %if ready to start a new sentence = 1 %start
if (READYTOSTARTANEWSENTENCE != 1) goto L_002D;
// 489 just finished a sentence = 1
JUSTFINISHEDASENTENCE = 1;
// 490 in a sentence = 0
INASENTENCE = 0;
// 491 %else
goto L_002E;
L_002D:;
// 492 just finished a sentence = 0
JUSTFINISHEDASENTENCE = 0;
// 493 %finish
L_002E:;
// 494
// 495 {check that have no noise words}
// 496 %if lexical type(ch) = noise word %start
if (LEXICALTYPE[CH] != 3) goto L_002F;
// 497 {skip to end of word}
// 498 %while lexical type(ch) # blank space %cycle
L_0030:;
if (LEXICALTYPE[CH] == 1) goto L_0031;
// 499 ch = get symbol
CH = GETSYMBOL();
// 500 %repeat
goto L_0030;
L_0031:;
// 501 %result = next word
return *(_imp_string31 *)/*?*/ &NEXTWORD();
// 502 %else
L_002F:;
// 503 %while lexical type(ch) = word char %cycle
L_0032:;
if (LEXICALTYPE[CH] != 0) goto L_0033;
// 504 ch = get symbol
CH = GETSYMBOL();
// 505 %repeat
goto L_0032;
L_0033:;
// 506 %result = word
return *(_imp_string31 *)/*?*/ &WORD;
// 507 %finish
// 508 %end {of next word}
} /* end of NEXTWORD */
// 509
// 510
// 511 {HASHING ADDR}
// 512
// 513 %integerfunction hash addr(%string (31) name)
static int HASHADDR(_imp_string31 NAME) {
// 514 %integer hash index = 0; %integer char
int HASHINDEX;
HASHINDEX = 0;
int CHAR;
// 515 %for char = 1,1,LENGTH (name) %cycle
// %for CHAR = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&NAME) %cycle
{
int _final = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &NAME);
if (invalid_for_loop(1, 1, _final))
_imp_signal(5, 1, 0, "Illegal cycle CHAR = 1, 1, *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&NAME)");
CHAR = 0;
L_0034:
if (CHAR == _final) goto L_0035;
CHAR += 1;
// 516 hash index = hash index<<1 !! CHARNO(name,char)
HASHINDEX = HASHINDEX << 1 ^ *_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &NAME, CHAR);
// 517 %repeat
goto L_0034;
}
L_0035:;
// 518 %result = hash index & hash table size
return HASHINDEX & 4095;
// 519 %end {of hash code generated from string}
} /* end of HASHADDR */
// 520
// 521
// 522 {ENDS WITH S}
// 523 %predicate ends with s(%string (31) s)
static int ENDSWITHS(_imp_string31 S) {
// 524 {plurality test}
// 525 %true %if CHARNO(s,LENGTH(s)) = 's'
if (*_imp_CHARNO((_imp_string255 *)/*p*/ /*?*/ &S, *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &S)) != 115)
goto L_0037;
return 1 /*TRUE*/;
L_0037:;
// 526 %false
return 0 /*FALSE*/;
// 527 %end {of ends with s}
} /* end of ENDSWITHS */
// 528
// 529 {HAVE ARTICLE}
// 530 %predicate have article(%string (31) s)
static int HAVEARTICLE(_imp_string31 S) {
// 531 %true %if s = "a" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("a")) == 0) goto L_0036;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("the")) != 0) goto L_0038;
/* clang-format on */
L_0036:;
return 1 /*TRUE*/;
L_0038:;
// 532+ s = "the"
// 533 %false
return 0 /*FALSE*/;
// 534 %end {of have article}
} /* end of HAVEARTICLE */
// 535
// 536 {HAVE CONJUGATION}
// 537 %predicate have conjugation(%string (31) s)
static int HAVECONJUGATION(_imp_string31 S) {
// 538 %true %if s = "and" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("and")) == 0) goto L_0039;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("but")) == 0) goto L_0039;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("yet")) == 0) goto L_0039;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("while")) == 0) goto L_0039;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("though")) != 0) goto L_003A;
/* clang-format on */
L_0039:;
return 1 /*TRUE*/;
L_003A:;
// 539+ s = "but" %or %c
// 540+ s = "yet" %or %c
// 541+ s = "while" %or %c
// 542+ s = "though"
// 543 %false
return 0 /*FALSE*/;
// 544 %end {of have conjugation}
} /* end of HAVECONJUGATION */
// 545
// 546 {HAVE PREPOSITION}
// 547 %predicate have preposition(%string (31) s)
static int HAVEPREPOSITION(_imp_string31 S) {
// 548 %true %if s = "from" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("from")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("to")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("on")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("by")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("at")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("in")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("over")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("along")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("after")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("before")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("with")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("without")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("near")) == 0) goto L_003B;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("next")) != 0) goto L_003C;
/* clang-format on */
L_003B:;
return 1 /*TRUE*/;
L_003C:;
// 549+ s = "to" %or %c
// 550+ s = "on" %or %c
// 551+ s = "by" %or %c
// 552+ s = "at" %or %c
// 553+ s = "in" %or %c
// 554+ s = "over" %or %c
// 555+ s = "along" %or %c
// 556+ s = "after" %or %c
// 557+ s = "before" %or %c
// 558+ s = "with" %or %c
// 559+ s = "without" %or %c
// 560+ s = "near" %or %c
// 561+ s = "next"
// 562 %false
return 0 /*FALSE*/;
// 563 %end {of have preposition}
} /* end of HAVEPREPOSITION */
// 564
// 565 {HAVE PRONOUN}
// 566 %predicate have pronoun(%string (31) s)
static int HAVEPRONOUN(_imp_string31 S) {
// 567 %true %if s = "i" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("i")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("you")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("she")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("he")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("we")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("they")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("who")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("whom")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("them")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("which")) == 0) goto L_003D;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("near")) != 0) goto L_003E;
/* clang-format on */
L_003D:;
return 1 /*TRUE*/;
L_003E:;
// 568+ s = "you" %or %c
// 569+ s = "she" %or %c
// 570+ s = "he" %or %c
// 571+ s = "we" %or %c
// 572+ s = "they" %or %c
// 573+ s = "who" %or %c
// 574+ s = "whom" %or %c
// 575+ s = "them" %or %c
// 576+ s = "which" %or %c
// 577+ s = "near"
// 578 %false
return 0 /*FALSE*/;
// 579 %end {of have pronoun}
} /* end of HAVEPRONOUN */
// 580
// 581 {HAVE REFERENCE}
// 582 %predicate have reference(%string (31) s)
static int HAVEREFERENCE(_imp_string31 S) {
// 583 %true %if s = "that" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("that")) == 0) goto L_003F;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("these")) == 0) goto L_003F;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("this")) == 0) goto L_003F;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("those")) == 0) goto L_003F;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("it")) != 0) goto L_0040;
/* clang-format on */
L_003F:;
return 1 /*TRUE*/;
L_0040:;
// 584+ s = "these" %or %c
// 585+ s = "this" %or %c
// 586+ s = "those" %or %c
// 587+ s = "it"
// 588 %false
return 0 /*FALSE*/;
// 589 %end {of have reference}
} /* end of HAVEREFERENCE */
// 590
// 591 {HAVE ADVERB}
// 592 %predicate have adverb(%string (31) s)
static int HAVEADVERB(_imp_string31 S) {
// 593 %true %if s = "is" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("is")) == 0) goto L_0041;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("are")) == 0) goto L_0041;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("can")) == 0) goto L_0041;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("may")) == 0) goto L_0041;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("were")) == 0) goto L_0041;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("was")) == 0) goto L_0041;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&S, (_imp_string *)/*?*/_imp_str_literal_ptr("should")) != 0) goto L_0042;
/* clang-format on */
L_0041:;
return 1 /*TRUE*/;
L_0042:;
// 594+ s = "are" %or %c
// 595+ s = "can" %or %c
// 596+ s = "may" %or %c
// 597+ s = "were" %or %c
// 598+ s = "was" %or %c
// 599+ s = "should"
// 600 %false
return 0 /*FALSE*/;
// 601 %end {of have reference}
} /* end of HAVEADVERB */
// 602
// 603
// 604 {CREATE VOCABULARY}
// 605
// 606 %routine create vocabulary
static void CREATEVOCABULARY(void) {
// 607 %record (word rec) %name word holder
struct WORDREC *WORDHOLDER;
// 608 %integer hash posn
int HASHPOSN;
// 609 %string (31) word
_imp_string31 WORD;
// 610 %cycle
L_0043:;
// 611 word = next word
/* clang-format off */
_imp_strncpy(/*?*/&WORD, ({__typeof__(_imp_string31) tmp;/*B*/ tmp = NEXTWORD(); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 612 %if in a sentence = 1 %start
if (INASENTENCE != 1) goto L_0044;
// 613 num words in sentences = num words in sentences + 1
NUMWORDSINSENTENCES = NUMWORDSINSENTENCES + 1;
// 614 %finish
L_0044:;
// 615 %if (options & M option)#0 %and %c
if (OPTIONS & 128 == 0) goto L_0045;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/&PREVWORD) != 0) goto L_0045;
/* clang-format on */
if (WORDSFROMSTARTOFSENTENCE <= 1) goto L_0045;
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &WORD) > 1) goto L_001E;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("a")) != 0) goto L_0045;
/* clang-format on */
L_001E:;
// 616+ word = prev word %and words from start of sentence > 1 %and %c
// 617+ (Length(word) > 1 %or word = "a") %start
// 618 Print String("Line ".ITOS(line number,0).": Duplicate of """.%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Duplicate of \"")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&WORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("\"")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 619+ word."""")
// 620 Newline
_imp_NEWLINE();
// 621 %finish
L_0045:;
// 622 %if (options & U option)#0 %start
if (OPTIONS & 2 == 0) goto L_0046;
// 623 %if words from start of sentence = 2 %and %c
if (WORDSFROMSTARTOFSENTENCE != 2) goto L_0047;
if (!(HAVEREFERENCE(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = PREVWORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_0047;
if (!(HAVEADVERB(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = WORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_0047;
// 624+ have reference(prev word) %and %c
// 625+ have adverb(word) %start
// 626 recursive reference = recursive reference + 1
RECURSIVEREFERENCE = RECURSIVEREFERENCE + 1;
// 627 %finish
L_0047:;
// 628 %if words from start of sentence = 1 %and word = "such" %start
if (WORDSFROMSTARTOFSENTENCE != 1) goto L_0048;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("such")) != 0) goto L_0048;
/* clang-format on */
// 629 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Use of recursive SUCH is legal jargon.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 630+ ": Use of recursive SUCH is legal jargon.")
// 631 Newline
_imp_NEWLINE();
// 632 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Recursive SUCH is a nasty construct. It makes your writing awkward."));
// 633+ " Recursive SUCH is a nasty construct. It makes your writing awkward.")
// 634 Newline
_imp_NEWLINE();
// 635 %finish
L_0048:;
// 636 %if (word = "inevitably" %or word = "necessarily") %and %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("inevitably")) == 0) goto L_0049;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("necessarily")) != 0) goto L_004A;
/* clang-format on */
L_0049:;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("must")) != 0) goto L_004A;
/* clang-format on */
// 637+ prev word = "must" %start
// 638 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Redundant MUST. Using MUST here is very sloppy.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 639+ ": Redundant MUST. Using MUST here is very sloppy.")
// 640 Newline
_imp_NEWLINE();
// 641 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 56 of Gower's \"Plain Words\" (1973 ed)"));
// 642+ " See page 56 of Gower's ""Plain Words"" (1973 ed)");
// 643 Newline
_imp_NEWLINE();
// 644 %finish
L_004A:;
// 645 %if words from start of sentence > 1 %and %c
if (WORDSFROMSTARTOFSENTENCE <= 1) goto L_004B;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("incidentally")) != 0) goto L_004B;
/* clang-format on */
// 646+ word = "incidentally" %start
// 647 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Intrusive INCIDENTALLY. It intrudes too much into the sentence")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 648+ ": Intrusive INCIDENTALLY. It intrudes too much into the sentence")
// 649 Newline
_imp_NEWLINE();
// 650 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 56 of Gower's \"Plain Words\" (1973 ed)"));
// 651+ " See page 56 of Gower's ""Plain Words"" (1973 ed)");
// 652 Newline
_imp_NEWLINE();
// 653 %finish
L_004B:;
// 654 %if (word = "incidentally" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("incidentally")) == 0) goto L_004C;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("definitely")) == 0) goto L_004C;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("actually")) == 0) goto L_004C;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("specific")) == 0) goto L_004C;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("particularly")) != 0) goto L_004D;
/* clang-format on */
L_004C:;
if (!(HAVEREFERENCE(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = PREVWORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_004D;
// 655+ word = "definitely" %or %c
// 656+ word = "actually" %or %c
// 657+ word = "specific" %or %c
// 658+ word = "particularly") %and %c
// 659+ have reference(prev word) %start
// 660 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Using \"")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&WORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("\" here intrudes into your sentence. Remove it.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 661+ ": Using """.word.""" here intrudes into your sentence. Remove it.")
// 662 Newline
_imp_NEWLINE();
// 663 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 56 of Gower's \"Plain Words\" (1973 ed)"));
// 664+ " See page 56 of Gower's ""Plain Words"" (1973 ed)");
// 665 Newline
_imp_NEWLINE();
// 666 %finish
L_004D:;
// 667 ! %if (word = "case") %and have article(prev word) %start
// 668 ! Print String("--- Line ".ITOS(line number,0).%c
// 669 ! ": Using CASE here is almost certainly wrong.")
// 670 ! Newline
// 671 ! Print String(%c
// 672 ! " See page 58 of Gower's ""Plain Words"" (1973 ed)");
// 673 ! Newline
// 674 ! %finish
// 675 %if (word = "instance") %and prev word = "first" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("instance")) != 0) goto L_004E;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("first")) != 0) goto L_004E;
/* clang-format on */
// 676 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Bad cliche. Remove the word INSTANCE and restructure.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 677+ ": Bad cliche. Remove the word INSTANCE and restructure.")
// 678 Newline
_imp_NEWLINE();
// 679 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 59 of Gower's \"Plain Words\" (1973 ed)"));
// 680+ " See page 59 of Gower's ""Plain Words"" (1973 ed)");
// 681 Newline
_imp_NEWLINE();
// 682 %finish
L_004E:;
// 683 %if (word = "concerned") %and have adverb(prev word) %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("concerned")) != 0) goto L_004F;
/* clang-format on */
if (!(HAVEADVERB(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = PREVWORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_004F;
// 684 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Bad cliche. Variant of AS FAR AS or SOMETHING .. IS CONCERNED.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 685+ ": Bad cliche. Variant of AS FAR AS or SOMETHING .. IS CONCERNED.")
// 686 Newline
_imp_NEWLINE();
// 687 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 59 of Gower's \"Plain Words\" (1973 ed)"));
// 688+ " See page 59 of Gower's ""Plain Words"" (1973 ed)");
// 689 Newline
_imp_NEWLINE();
// 690 %finish
L_004F:;
// 691 %if (word = "time") %and prev word = "such" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("time")) != 0) goto L_0050;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("such")) != 0) goto L_0050;
/* clang-format on */
// 692 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Bad cliche. Variant of UNTIL SUCH TIME. You mean WHEN.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 693+ ": Bad cliche. Variant of UNTIL SUCH TIME. You mean WHEN.")
// 694 Newline
_imp_NEWLINE();
// 695 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 60 of Gower's \"Plain Words\" (1973 ed)"));
// 696+ " See page 60 of Gower's ""Plain Words"" (1973 ed)");
// 697 Newline
_imp_NEWLINE();
// 698 %finish
L_0050:;
// 699 %if prev word = "signal" %and word = "out" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("signal")) != 0) goto L_0051;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("out")) != 0) goto L_0051;
/* clang-format on */
// 700 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Misprint. SIGNAL OUT instead of SINGLE OUT")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 701+ ": Misprint. SIGNAL OUT instead of SINGLE OUT")
// 702 Newline
_imp_NEWLINE();
// 703 %finish
L_0051:;
// 704 %if prev word = "farther" %and words from start of sentence = 1 %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("farther")) != 0) goto L_0052;
/* clang-format on */
if (WORDSFROMSTARTOFSENTENCE != 1) goto L_0052;
// 705 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": You use FARTHER when you mean FURTHER.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 706+ ": You use FARTHER when you mean FURTHER.")
// 707 Newline
_imp_NEWLINE();
// 708 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 189 of Fowler's \"Modern English Usage\" (1983 ed)"));
// 709+ " See page 189 of Fowler's ""Modern English Usage"" (1983 ed)");
// 710 Newline
_imp_NEWLINE();
// 711 %finish
L_0052:;
// 712 ! %if prev word = "if" %and word = "and" %start
// 713 ! {could be IF AND only if}
// 714 ! Print String("--- Line ".ITOS(line number,0).%c
// 715 ! ": Parrot. Parrot. (IF AND is a parrot's expression)")
// 716 ! Newline
// 717 ! Print String(%c
// 718 ! " See page 264 of Fowler's ""Modern English Usage"" (1983 ed)");
// 719 ! Newline
// 720 ! %finish
// 721 %if prev word = "and" %and word = "but" %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("and")) != 0) goto L_0053;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("but")) != 0) goto L_0053;
/* clang-format on */
// 722 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": AND BUT is an especially bad conjugation.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 723+ ": AND BUT is an especially bad conjugation.")
// 724 Newline
_imp_NEWLINE();
// 725 %elseif have conjugation(prev word) %and have conjugation(word)
goto L_0054;
L_0053:;
if (!(HAVECONJUGATION(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = PREVWORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_0055;
if (!(HAVECONJUGATION(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = WORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_0055;
// 726 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Redundant conjugation. \"")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&PREVWORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("\" followed by \"")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&WORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("\"")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 727+ ": Redundant conjugation. """.prev word.""" followed by """.%c
// 728+ word."""")
// 729 Newline
_imp_NEWLINE();
// 730 %finish
L_0055:;
L_0054:;
// 731 %if prev word = "form" %and have article(word) %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("form")) != 0) goto L_0056;
/* clang-format on */
if (!(HAVEARTICLE(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = WORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_0056;
// 732 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": Hickup in parse caused by verb FORM followed by ")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&WORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("\"")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 733+ ": Hickup in parse caused by verb FORM followed by ".%c
// 734+ "the article """.word."""")
// 735 Newline
_imp_NEWLINE();
// 736 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Please check that you mean FORM and not FROM."));
// 737+ " Please check that you mean FORM and not FROM.");
// 738 Newline
_imp_NEWLINE();
// 739 %finish
L_0056:;
// 740 %if Length(prev word) >= 7 %and %c
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &PREVWORD) < 7) goto L_0057;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&_imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&PREVWORD, 1, 7), (_imp_string *)/*?*/_imp_str_literal_ptr("infring")) != 0) goto L_0057;
/* clang-format on */
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &WORD) < 2) goto L_0057;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&_imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&WORD, 1, 2), (_imp_string *)/*?*/_imp_str_literal_ptr("up")) != 0) goto L_0057;
/* clang-format on */
// 741+ Substring(prev word,1,7) = "infring" %and %c
// 742+ Length(word) >= 2 %and Substring(word,1,2) = "up" %start
// 743 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": You have infringed the meaning of the word INFRINGE.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 744+ ": You have infringed the meaning of the word INFRINGE.")
// 745 Newline
_imp_NEWLINE();
// 746 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" You probably mean ENCROACH or TRESPASS instead"));
// 747+ " You probably mean ENCROACH or TRESPASS instead");
// 748 Newline
_imp_NEWLINE();
// 749 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 283 of Fowler's \"Modern English Usage\" (1983 ed)"));
// 750+ " See page 283 of Fowler's ""Modern English Usage"" (1983 ed)");
// 751 Newline
_imp_NEWLINE();
// 752 %finish
L_0057:;
// 753 %if Length(word) >= 5 %and Substring(word,1,5) = "infer" %and %c
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &WORD) < 5) goto L_0058;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&_imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&WORD, 1, 5), (_imp_string *)/*?*/_imp_str_literal_ptr("infer")) != 0) goto L_0058;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("inference")) == 0) goto L_0058;
/* clang-format on */
// 754+ word # "inference" %start
// 755 %if have preposition(prev word) %or have pronoun(prev word) %start
if (HAVEPREPOSITION(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = PREVWORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
))
goto L_0059;
if (!(HAVEPRONOUN(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = PREVWORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
)))
goto L_005A;
L_0059:;
// 756 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": You use INFER when you mean IMPLY.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 757+ ": You use INFER when you mean IMPLY.")
// 758 Newline
_imp_NEWLINE();
// 759 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 282 of Fowler's \"Modern English Usage\" (1983 ed)"));
// 760+ " See page 282 of Fowler's ""Modern English Usage"" (1983 ed)");
// 761 Newline
_imp_NEWLINE();
// 762 %finish
L_005A:;
// 763 %finish
L_0058:;
// 764 %if (Length(word)>=5 %and Substring(word,1,5) = "impli") %or %c
if (*_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &WORD) < 5) goto L_005B;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&_imp_SUBSTRING((_imp_string255 *)/*p*//*?*/&WORD, 1, 5), (_imp_string *)/*?*/_imp_str_literal_ptr("impli")) == 0) goto L_005C;
/* clang-format on */
L_005B:;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORD, (_imp_string *)/*?*/_imp_str_literal_ptr("imply")) != 0) goto L_005D;
/* clang-format on */
L_005C:;
// 765+ word = "imply" %start
// 766 %if prev word = "can" %or %c
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("can")) == 0) goto L_005E;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("he")) == 0) goto L_005E;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("article")) == 0) goto L_005E;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&PREVWORD, (_imp_string *)/*?*/_imp_str_literal_ptr("may")) != 0) goto L_005F;
/* clang-format on */
L_005E:;
// 767+ prev word = "he" %or %c
// 768+ prev word = "article" %or %c
// 769+ prev word = "may" %start
// 770 Print String("--- Line ".ITOS(line number,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- Line "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LINENUMBER, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(": You use IMPLY when you mean INFER.")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 771+ ": You use IMPLY when you mean INFER.")
// 772 Newline
_imp_NEWLINE();
// 773 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 282 of Fowler's \"Modern English Usage\" (1983 ed)"));
// 774+ " See page 282 of Fowler's ""Modern English Usage"" (1983 ed)");
// 775 Newline
_imp_NEWLINE();
// 776 %finish
L_005F:;
// 777 %finish
L_005D:;
// 778 %finish
L_0046:;
// 779 hash posn = hash addr(word)
HASHPOSN = HASHADDR(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = WORD/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
);
// 780 word holder == word table(hash posn)
WORDHOLDER = (struct WORDREC *)WORDTABLE[HASHPOSN];
// 781 %if word holder == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(WORDHOLDER)) != _imp_ADDR((void *)(NIL))) goto L_0060;
/* clang-format on */
// 782 word holder == New(word holder)
WORDHOLDER = (struct WORDREC *)_imp_NEW(WORDHOLDER);
// 783 word holder_word = word
/* clang-format off */
_imp_strncpy(/*?*/&WORDHOLDER->WORD, ({__typeof__(_imp_string31) tmp;/*B*/ tmp = WORD; (void *)&tmp;}), /*max:*/255);
/* clang-format on */
// 784 word holder_occurances = 1
WORDHOLDER->OCCURANCES = 1;
// 785 word holder_next == NIL
WORDHOLDER->NEXT = (struct WORDREC *)NIL;
// 786 word table(hash posn) == word holder
WORDTABLE[HASHPOSN] = (struct WORDREC *)WORDHOLDER;
// 787 %elseif word holder_word # word
goto L_0061;
L_0060:;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORDHOLDER->WORD, (_imp_string *)/*?*/&WORD) == 0) goto L_0062;
/* clang-format on */
// 788 %while word holder ## NIL %and word holder_word # word %cycle
L_0063:;
/* clang-format off */
if (_imp_ADDR((void *)(WORDHOLDER)) == _imp_ADDR((void *)(NIL))) goto L_0064;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WORDHOLDER->WORD, (_imp_string *)/*?*/&WORD) == 0) goto L_0064;
/* clang-format on */
// 789 word holder == word holder_next
WORDHOLDER = (struct WORDREC *)WORDHOLDER->NEXT;
// 790 %repeat
goto L_0063;
L_0064:;
// 791 %if word holder == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(WORDHOLDER)) != _imp_ADDR((void *)(NIL))) goto L_0065;
/* clang-format on */
// 792 word holder == New(word holder)
WORDHOLDER = (struct WORDREC *)_imp_NEW(WORDHOLDER);
// 793 word holder_word = word
/* clang-format off */
_imp_strncpy(/*?*/&WORDHOLDER->WORD, ({__typeof__(_imp_string31) tmp;/*B*/ tmp = WORD; (void *)&tmp;}), /*max:*/255);
/* clang-format on */
// 794 word holder_occurances = 1
WORDHOLDER->OCCURANCES = 1;
// 795 word holder_next == word table(hash posn)
WORDHOLDER->NEXT = (struct WORDREC *)WORDTABLE[HASHPOSN];
// 796 word table(hash posn) == word holder
WORDTABLE[HASHPOSN] = (struct WORDREC *)WORDHOLDER;
// 797 %else
goto L_0066;
L_0065:;
// 798 word holder_occurances = word holder_occurances + 1
WORDHOLDER->OCCURANCES = WORDHOLDER->OCCURANCES + 1;
// 799 %finish
L_0066:;
// 800 %else
goto L_0061;
L_0062:;
// 801 word holder_occurances = word holder_occurances + 1
WORDHOLDER->OCCURANCES = WORDHOLDER->OCCURANCES + 1;
// 802 %finish
L_0061:;
// 803 prev word = word
/* clang-format off */
_imp_strncpy(/*?*/&PREVWORD, ({__typeof__(_imp_string31) tmp;/*B*/ tmp = WORD; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 804 %repeat
goto L_0043;
// 805 %end {of create vocabulary}
} /* end of CREATEVOCABULARY */
// 806
// 807
// 808
// 809 {SORT WORD TABLE LEXICALLY}
// 810
// 811 %routine sort word table lexically
static void SORTWORDTABLELEXICALLY(void) {
// 812 { Transfer hash table to a binary tree }
// 813
// 814 %routine add to tree(%record (node) %name nd,%record (word rec) %name wd)
void ADDTOTREE(struct NODE * ND, struct WORDREC * WD) {
// 815 %record (node) %name nn == NIL
struct NODE *NN;
NN = (struct NODE *)NIL;
// 816 %if wd_word > nd_word_word %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WD->WORD, (_imp_string *)/*?*/&ND->WORD->WORD) <= 0) goto L_0067;
/* clang-format on */
// 817 %if nd_rson == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(ND->RSON)) != _imp_ADDR((void *)(NIL))) goto L_0068;
/* clang-format on */
// 818 nn == New(nn)
NN = (struct NODE *)_imp_NEW(NN);
// 819 nn = 0; nn_rson == NIL; nn_lson == NIL; nn_brother == NIL
*NN = (struct NODE){0};
NN->RSON = (struct NODE *)NIL;
NN->LSON = (struct NODE *)NIL;
NN->BROTHER = (struct NODE *)NIL;
// 820 nn_word == wd
NN->WORD = (struct NODE *)WD;
// 821 nd_rson == nn
ND->RSON = (struct NODE *)NN;
// 822 %else
goto L_0069;
L_0068:;
// 823 add to tree(nd_rson,wd)
ADDTOTREE(ND->RSON, WD);
// 824 %finish
L_0069:;
// 825 %finish
L_0067:;
// 826 %if wd_word < nd_word_word %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&WD->WORD, (_imp_string *)/*?*/&ND->WORD->WORD) >= 0) goto L_006A;
/* clang-format on */
// 827 %if nd_lson == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(ND->LSON)) != _imp_ADDR((void *)(NIL))) goto L_006B;
/* clang-format on */
// 828 nn == New(nn)
NN = (struct NODE *)_imp_NEW(NN);
// 829 nn = 0; nn_rson == NIL; nn_lson == NIL; nn_brother == NIL
*NN = (struct NODE){0};
NN->RSON = (struct NODE *)NIL;
NN->LSON = (struct NODE *)NIL;
NN->BROTHER = (struct NODE *)NIL;
// 830 nn_word == wd
NN->WORD = (struct NODE *)WD;
// 831 nd_lson == nn
ND->LSON = (struct NODE *)NN;
// 832 %else
goto L_006C;
L_006B:;
// 833 add to tree(nd_lson,wd)
ADDTOTREE(ND->LSON, WD);
// 834 %finish
L_006C:;
// 835 %finish
L_006A:;
// 836 %end {of add to tree}
return;
} /* end of ADDTOTREE */
// 837
// 838 %record (word rec) %name mw
struct WORDREC *MW;
// 839 %string (31) word
_imp_string31 WORD;
// 840 %integer i
int I;
// 841
// 842 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_006D:
if (I == 4095) goto L_006E;
I += 1;
// 843 mw == word table(i)
MW = (struct WORDREC *)WORDTABLE[I];
// 844 %while mw ## NIL %cycle
L_0070:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_0071;
/* clang-format on */
// 845 word = mw_word
/* clang-format off */
_imp_strncpy(/*?*/&WORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = MW->WORD; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 846 %if sort tree == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(SORTTREE)) != _imp_ADDR((void *)(NIL))) goto L_0072;
/* clang-format on */
// 847 sort tree == New(sort tree)
SORTTREE = (struct NODE *)_imp_NEW(SORTTREE);
// 848 sort tree = 0
*SORTTREE = (struct NODE){0};
// 849 sort tree_rson == NIL; sort tree_lson == NIL
SORTTREE->RSON = (struct NODE *)NIL;
SORTTREE->LSON = (struct NODE *)NIL;
// 850 sort tree_brother == NIL
SORTTREE->BROTHER = (struct NODE *)NIL;
// 851 sort tree_word == mw
SORTTREE->WORD = (struct NODE *)MW;
// 852 %else
goto L_0073;
L_0072:;
// 853 add to tree(sort tree, mw)
ADDTOTREE(SORTTREE, MW);
// 854 %finish
L_0073:;
// 855 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 856 %repeat
goto L_0070;
L_0071:;
// 857 %repeat
goto L_006D;
}
L_006E:;
// 858 %end {of sort word table lexically}
return;
} /* end of SORTWORDTABLELEXICALLY */
// 859
// 860
// 861 {SORT WORD TABLE BY FREQUENCY}
// 862
// 863 %routine sort word table by frequency
static void SORTWORDTABLEBYFREQUENCY(void) {
// 864 { Transfer hash table to a binary tree }
// 865
// 866 %routine add to tree(%record (node) %name nd,%record (word rec) %name wd)
void ADDTOTREE(struct NODE * ND, struct WORDREC * WD) {
// 867 %record (node) %name nn
struct NODE *NN;
// 868 %if wd_occurances > nd_word_occurances %start
if (WD->OCCURANCES <= ND->WORD->OCCURANCES) goto L_0074;
// 869 %if nd_rson == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(ND->RSON)) != _imp_ADDR((void *)(NIL))) goto L_0075;
/* clang-format on */
// 870 nn == New(nn)
NN = (struct NODE *)_imp_NEW(NN);
// 871 nn = 0; nn_rson == NIL; nn_lson == NIL; nn_brother == NIL
*NN = (struct NODE){0};
NN->RSON = (struct NODE *)NIL;
NN->LSON = (struct NODE *)NIL;
NN->BROTHER = (struct NODE *)NIL;
// 872 nn_word == wd
NN->WORD = (struct NODE *)WD;
// 873 nd_rson == nn
ND->RSON = (struct NODE *)NN;
// 874 %else
goto L_0076;
L_0075:;
// 875 add to tree(nd_rson,wd)
ADDTOTREE(ND->RSON, WD);
// 876 %finish
L_0076:;
// 877 %finish
L_0074:;
// 878 %if wd_occurances = nd_word_occurances %start
if (WD->OCCURANCES != ND->WORD->OCCURANCES) goto L_0077;
// 879 nn == New(nn)
NN = (struct NODE *)_imp_NEW(NN);
// 880 nn = 0; nn_rson == NIL; nn_lson == NIL; nn_brother == NIL
*NN = (struct NODE){0};
NN->RSON = (struct NODE *)NIL;
NN->LSON = (struct NODE *)NIL;
NN->BROTHER = (struct NODE *)NIL;
// 881 nn_word == wd
NN->WORD = (struct NODE *)WD;
// 882 nn_brother == nd_brother
NN->BROTHER = (struct NODE *)ND->BROTHER;
// 883 nd_brother == nn
ND->BROTHER = (struct NODE *)NN;
// 884 %finish
L_0077:;
// 885 %if wd_occurances < nd_word_occurances %start
if (WD->OCCURANCES >= ND->WORD->OCCURANCES) goto L_0078;
// 886 %if nd_lson == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(ND->LSON)) != _imp_ADDR((void *)(NIL))) goto L_0079;
/* clang-format on */
// 887 nn == New(nn)
NN = (struct NODE *)_imp_NEW(NN);
// 888 nn = 0; nn_rson == NIL; nn_lson == NIL; nn_brother == NIL
*NN = (struct NODE){0};
NN->RSON = (struct NODE *)NIL;
NN->LSON = (struct NODE *)NIL;
NN->BROTHER = (struct NODE *)NIL;
// 889 nn_word == wd
NN->WORD = (struct NODE *)WD;
// 890 nd_lson == nn
ND->LSON = (struct NODE *)NN;
// 891 %else
goto L_007A;
L_0079:;
// 892 add to tree(nd_lson,wd)
ADDTOTREE(ND->LSON, WD);
// 893 %finish
L_007A:;
// 894 %finish
L_0078:;
// 895 %end {of add to tree}
return;
} /* end of ADDTOTREE */
// 896
// 897 %record (node) %name nd
struct NODE *ND;
// 898 %record (word rec) %name mw
struct WORDREC *MW;
// 899 %string (31) word
_imp_string31 WORD;
// 900 %integer i
int I;
// 901
// 902 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_007B:
if (I == 4095) goto L_007C;
I += 1;
// 903 mw == word table(i)
MW = (struct WORDREC *)WORDTABLE[I];
// 904 %while mw ## NIL %cycle
L_007D:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_007E;
/* clang-format on */
// 905 word = mw_word
/* clang-format off */
_imp_strncpy(/*?*/&WORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = MW->WORD; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 906 %if sort tree == NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(SORTTREE)) != _imp_ADDR((void *)(NIL))) goto L_007F;
/* clang-format on */
// 907 sort tree == New(sort tree)
SORTTREE = (struct NODE *)_imp_NEW(SORTTREE);
// 908 sort tree = 0
*SORTTREE = (struct NODE){0};
// 909 sort tree_rson == NIL; sort tree_lson == NIL
SORTTREE->RSON = (struct NODE *)NIL;
SORTTREE->LSON = (struct NODE *)NIL;
// 910 sort tree_brother == NIL
SORTTREE->BROTHER = (struct NODE *)NIL;
// 911 sort tree_word == mw
SORTTREE->WORD = (struct NODE *)MW;
// 912 %else
goto L_0080;
L_007F:;
// 913 add to tree(sort tree,mw)
ADDTOTREE(SORTTREE, MW);
// 914 %finish
L_0080:;
// 915 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 916 %repeat
goto L_007D;
L_007E:;
// 917 %repeat
goto L_007B;
}
L_007C:;
// 918 %end {of sort word table lexically}
return;
} /* end of SORTWORDTABLEBYFREQUENCY */
// ?ND unused
// 919
// 920
// 921 {PRINT OUT SORT TREE}
// 922
// 923 %routine print node(%record (node) %name nd)
static void PRINTNODE(struct NODE *ND) {
// 924 %record (word rec) %name mw
struct WORDREC *MW;
// 925 %integer i
int I;
// 926 %return %if nd == NIL
/* clang-format off */
if (_imp_ADDR((void *)(ND)) != _imp_ADDR((void *)(NIL))) goto L_0081;
/* clang-format on */
return;
L_0081:;
// 927 print node(nd_lson)
PRINTNODE(ND->LSON);
// 928 mw == nd_word
MW = (struct WORDREC *)ND->WORD;
// 929 print string(mw_word)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = MW->WORD/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 930 %if (options & P option)=0 %start
if (OPTIONS & 32 != 0) goto L_0082;
// 931 %for i=LENGTH(mw_word),1,40 %cycle
// %for I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MW->WORD), 1, 40 %cycle
{
int _initial = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &MW->WORD);
if (invalid_for_loop(_initial, 1, 40))
_imp_signal(5, 1, 0, "Illegal cycle I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MW->WORD), 1, 40");
I = _initial - (1);
L_0083:
if (I == 40) goto L_0084;
I += 1;
// 932 Print String(" ")
_imp_PRINTSTRING(_imp_str_literal(" "));
// 933 %repeat
goto L_0083;
}
L_0084:;
// 934 print String(ITOS(mw_occurances,7))
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = _imp_ITOS(MW->OCCURANCES, 7)/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 935 %finish
L_0082:;
// 936 Newline
_imp_NEWLINE();
// 937 print node(nd_brother)
PRINTNODE(ND->BROTHER);
// 938 print node(nd_rson)
PRINTNODE(ND->RSON);
// 939 %end {of print node}
return;
} /* end of PRINTNODE */
// 940
// 941
// 942 {PRINT OUT SORT TREE IN REVERSE}
// 943
// 944 %routine print node in reverse(%record (node) %name nd)
static void PRINTNODEINREVERSE(struct NODE *ND) {
// 945 %record (word rec) %name mw
struct WORDREC *MW;
// 946 %integer i
int I;
// 947 %return %if nd == NIL
/* clang-format off */
if (_imp_ADDR((void *)(ND)) != _imp_ADDR((void *)(NIL))) goto L_0086;
/* clang-format on */
return;
L_0086:;
// 948 print node in reverse(nd_rson)
PRINTNODEINREVERSE(ND->RSON);
// 949 print node in reverse(nd_brother)
PRINTNODEINREVERSE(ND->BROTHER);
// 950 mw == nd_word
MW = (struct WORDREC *)ND->WORD;
// 951 Print string(mw_word)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = MW->WORD/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 952 %if (options & P option)=0 %start
if (OPTIONS & 32 != 0) goto L_0087;
// 953 %for i=LENGTH(mw_word),1,40 %cycle
// %for I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MW->WORD), 1, 40 %cycle
{
int _initial = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &MW->WORD);
if (invalid_for_loop(_initial, 1, 40))
_imp_signal(5, 1, 0, "Illegal cycle I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MW->WORD), 1, 40");
I = _initial - (1);
L_0088:
if (I == 40) goto L_0089;
I += 1;
// 954 Print String(" ")
_imp_PRINTSTRING(_imp_str_literal(" "));
// 955 %repeat
goto L_0088;
}
L_0089:;
// 956 Print String(ITOS(mw_occurances,7))
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = _imp_ITOS(MW->OCCURANCES, 7)/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 957 %finish
L_0087:;
// 958 Newline
_imp_NEWLINE();
// 959 print node in reverse(nd_lson)
PRINTNODEINREVERSE(ND->LSON);
// 960 %end {of print node in reverse}
return;
} /* end of PRINTNODEINREVERSE */
// 961
// 962
// 963 {NUMBER OF WORDS}
// 964
// 965 %integerfunction number of words
static int NUMBEROFWORDS(void) {
// 966 %record (word rec) %name mw
struct WORDREC *MW;
// 967 %integer i,num words
int I;
int NUMWORDS;
// 968
// 969 num words = 0
NUMWORDS = 0;
// 970 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_008A:
if (I == 4095) goto L_008B;
I += 1;
// 971 %if word table(i) ## NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(WORDTABLE[I])) == _imp_ADDR((void *)(NIL))) goto L_008C;
/* clang-format on */
// 972 mw == word table(i)
MW = (struct WORDREC *)WORDTABLE[I];
// 973 %while mw ## NIL %cycle
L_008D:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_008E;
/* clang-format on */
// 974 num words = num words + mw_occurances
NUMWORDS = NUMWORDS + MW->OCCURANCES;
// 975 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 976 %repeat
goto L_008D;
L_008E:;
// 977 %finish
L_008C:;
// 978 %repeat
goto L_008A;
}
L_008B:;
// 979 %result = num words
return NUMWORDS;
// 980 %end {of number of words}
} /* end of NUMBEROFWORDS */
// 981
// 982
// 983 {AVERAGE WORD LENGTH}
// 984
// 985 %realfunction average word length
static float AVERAGEWORDLENGTH(void) {
// 986 %record (word rec) %name mw
struct WORDREC *MW;
// 987 %integer i,num words,num chars
int I;
int NUMWORDS;
int NUMCHARS;
// 988
// 989 num words = 0; num chars = 0
NUMWORDS = 0;
NUMCHARS = 0;
// 990 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_008F:
if (I == 4095) goto L_0090;
I += 1;
// 991 %if word table(i) ## NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(WORDTABLE[I])) == _imp_ADDR((void *)(NIL))) goto L_0091;
/* clang-format on */
// 992 mw == word table(i)
MW = (struct WORDREC *)WORDTABLE[I];
// 993 %while mw ## NIL %cycle
L_0092:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_0093;
/* clang-format on */
// 994 num words = num words + mw_occurances
NUMWORDS = NUMWORDS + MW->OCCURANCES;
// 995 num chars = num chars + (LENGTH(mw_word)*mw_occurances)
NUMCHARS = NUMCHARS + *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &MW->WORD) * MW->OCCURANCES;
// 996 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 997 %repeat
goto L_0092;
L_0093:;
// 998 %finish
L_0091:;
// 999 %repeat
goto L_008F;
}
L_0090:;
// 1000 %result = num chars / num words
return (double)(NUMCHARS / NUMWORDS);
// 1001 %end {of number of words}
} /* end of AVERAGEWORDLENGTH */
// 1002
// 1003
// 1004 {WORD COUNT}
// 1005
// 1006 %routine WORD COUNT
static void WORDCOUNT(void) {
// 1007 %record (word rec) %name mw
struct WORDREC *MW;
// 1008 %integer i,num words, variety
int I;
int NUMWORDS;
int VARIETY;
// 1009
// 1010 num words = 0; variety = 0
NUMWORDS = 0;
VARIETY = 0;
// 1011 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_0094:
if (I == 4095) goto L_0095;
I += 1;
// 1012 %if word table(i) ## NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(WORDTABLE[I])) == _imp_ADDR((void *)(NIL))) goto L_0096;
/* clang-format on */
// 1013 mw == word table(i)
MW = (struct WORDREC *)WORDTABLE[I];
// 1014 %while mw ## NIL %cycle
L_0097:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_0098;
/* clang-format on */
// 1015 num words = num words + mw_occurances
NUMWORDS = NUMWORDS + MW->OCCURANCES;
// 1016 variety = variety + 1
VARIETY = VARIETY + 1;
// 1017 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 1018 %repeat
goto L_0097;
L_0098:;
// 1019 %finish
L_0096:;
// 1020 %repeat
goto L_0094;
}
L_0095:;
// 1021 Print String("Word count = ".ITOS(num words,0))
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("Word count = "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(NUMWORDS, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1022 Newline
_imp_NEWLINE();
// 1023 Print String("Number of different words = ".ITOS(variety,0))
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("Number of different words = "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(VARIETY, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1024 Newline
_imp_NEWLINE();
// 1025 %end {of word count}
return;
} /* end of WORDCOUNT */
// 1026
// 1027
// 1028 {DO SPELLING CHECK}
// 1029
// 1030 %routine do spelling check {from sort tree}
static void DOSPELLINGCHECK(void) {
// 1031
// 1032 %string (31) my word
_imp_string31 MYWORD;
// 1033 %owninteger printed heading = 0
static int PRINTEDHEADING = 0;
// 1034
// 1035 {go down to}
// 1036 %routine go down to(%record (node) %name nd)
void GODOWNTO(struct NODE * ND) {
// 1037 %ownstring (31) dictionary word = ""
static _imp_string31 DICTIONARYWORD = _imp_str_init("");
// 1038 %integer i
int I;
// 1039 %return %if nd == NIL
/* clang-format off */
if (_imp_ADDR((void *)(ND)) != _imp_ADDR((void *)(NIL))) goto L_0099;
/* clang-format on */
return;
L_0099:;
// 1040 go down to(nd_lson)
GODOWNTO(ND->LSON);
// 1041 my word = nd_word_word
/* clang-format off */
_imp_strncpy(/*?*/&MYWORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = ND->WORD->WORD; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 1042 %while dictionary word < my word %cycle
L_009A:;
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&DICTIONARYWORD, (_imp_string *)/*?*/&MYWORD) >= 0) goto L_009B;
/* clang-format on */
// 1043 prev word = dictionary word
/* clang-format off */
_imp_strncpy(/*?*/&PREVWORD, ({__typeof__(_imp_string31) tmp;/*B*/ tmp = DICTIONARYWORD; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 1044 dictionary word = next word
/* clang-format off */
_imp_strncpy(/*?*/&DICTIONARYWORD, ({__typeof__(_imp_string31) tmp;/*B*/ tmp = NEXTWORD(); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 1045 %repeat
goto L_009A;
L_009B:;
// 1046 %if dictionary word # my word %start
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&DICTIONARYWORD, (_imp_string *)/*?*/&MYWORD) == 0) goto L_009C;
/* clang-format on */
// 1047 {Have spelling error}
// 1048 %if printed heading = 0 %and (options & P option)=0 %start
if (PRINTEDHEADING != 0) goto L_009D;
if (OPTIONS & 32 != 0) goto L_009D;
// 1049 Print String("MISSPELT WORDS:")
_imp_PRINTSTRING(_imp_str_literal("MISSPELT WORDS:"));
// 1050 Newline
_imp_NEWLINE();
// 1051 printed heading = 1
PRINTEDHEADING = 1;
// 1052 %finish
L_009D:;
// 1053 Print string(my word)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = MYWORD/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1054 %if (options & N option)# 0 %start
if (OPTIONS & 64 == 0) goto L_009E;
// 1055 %for i=LENGTH(my word),1,34 %cycle
// %for I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MYWORD), 1, 34 %cycle
{
int _initial = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &MYWORD);
if (invalid_for_loop(_initial, 1, 34))
_imp_signal(5, 1, 0, "Illegal cycle I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MYWORD), 1, 34");
I = _initial - (1);
L_009F:
if (I == 34) goto L_00A0;
I += 1;
// 1056 Print String(" ")
_imp_PRINTSTRING(_imp_str_literal(" "));
// 1057 %repeat
goto L_009F;
}
L_00A0:;
// 1058 Print String("(".prev word.", ".dictionary word.")")
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("("), (_imp_string *)/*?*/&PREVWORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(", ")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&DICTIONARYWORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(")")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1059 %finish
L_009E:;
// 1060 Newline
_imp_NEWLINE();
// 1061 %finish
L_009C:;
// 1062
// 1063 go down to(nd_rson)
GODOWNTO(ND->RSON);
// 1064 %end {of go down to}
return;
} /* end of GODOWNTO */
// 1065
// 1066 %integer i
int I;
// 1067
// 1068 %onevent 3,9 %start
if (!_imp_on_event(3, 9)) goto L_00A2;
// 1069 %if event_event = 3 %start
if (_imp_EVENT().EVENT != 3) goto L_00A3;
// 1070 Select Output(0)
_imp_SELECTOUTPUT(0);
// 1071 Print String("Ether or file system error:")
_imp_PRINTSTRING(_imp_str_literal("Ether or file system error:"));
// 1072 Print String(itos(event_info {extra},0)."_".%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join(({__typeof__(_imp_string255) tmp; /*D*/ tmp = _imp_ITOS(_imp_EVENT().INFO, 0); (void *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("_")); (_imp_string255 *)&tmp;}), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(_imp_EVENT().SUB, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(" ")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&_imp_EVENT().MESSAGE); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1073+ itos(event_sub {event},0)." ".event_message)
// 1074 Newline
_imp_NEWLINE();
// 1075 %stop
_imp_stop(0);
// 1076 %else
L_00A3:;
// 1077 Print string(my word)
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = MYWORD/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1078 %if (options & N option)# 0 %start
if (OPTIONS & 64 == 0) goto L_00A4;
// 1079 %for i=LENGTH(my word),1,34 %cycle
// %for I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MYWORD), 1, 34 %cycle
{
int _initial = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &MYWORD);
if (invalid_for_loop(_initial, 1, 34))
_imp_signal(5, 1, 0, "Illegal cycle I = *_imp_LENGTH((_imp_string255 *)/*p*//*?*/&MYWORD), 1, 34");
I = _initial - (1);
L_00A5:
if (I == 34) goto L_00A6;
I += 1;
// 1080 Print String(" ")
_imp_PRINTSTRING(_imp_str_literal(" "));
// 1081 %repeat
goto L_00A5;
}
L_00A6:;
// 1082 Print String("(".prev word.")")
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("("), (_imp_string *)/*?*/&PREVWORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(")")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1083 %finish
L_00A4:;
// 1084 Newline
_imp_NEWLINE();
// 1085 %return
return;
// 1086 %finish
// 1087 %finish
L_00A2:;
// 1088
// 1089 prev word = "-"
/* clang-format off */
_imp_strncpy(/*?*/&PREVWORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal("-"); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 1090 go down to(sort tree)
GODOWNTO(SORTTREE);
// 1091 %if printed heading = 0 %start
if (PRINTEDHEADING != 0) goto L_00A8;
// 1092 Print String("No spelling errors found."); Newline
_imp_PRINTSTRING(_imp_str_literal("No spelling errors found."));
_imp_NEWLINE();
// 1093 %finish
L_00A8:;
// 1094 %end {do spelling check}
return;
} /* end of DOSPELLINGCHECK */
// 1095
// 1096
// 1097 {NUMBER OF}
// 1098
// 1099 %integerfunction number of(%string (31) s)
static int NUMBEROF(_imp_string31 S) {
// 1100 %integer hash posn
int HASHPOSN;
// 1101 %record (word rec) %name mw
struct WORDREC *MW;
// 1102 hash posn = hash addr(s)
HASHPOSN = HASHADDR(
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = S/*q*/; (_imp_string31 *)&tmp; })
/* clang-format on */
);
// 1103 mw == word table(hash posn)
MW = (struct WORDREC *)WORDTABLE[HASHPOSN];
// 1104 %while mw ## NIL %and mw_word # s %cycle
L_00A9:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_00AA;
/* clang-format on */
/* clang-format off */
if (_imp_strcmp((_imp_string *)/*?*/&MW->WORD, (_imp_string *)/*?*/&S) == 0) goto L_00AA;
/* clang-format on */
// 1105 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 1106 %repeat
goto L_00A9;
L_00AA:;
// 1107 %result = mw_occurances %if mw ## NIL
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_00AB;
/* clang-format on */
return MW->OCCURANCES;
L_00AB:;
// 1108 %result = 0 {otherwise}
return 0;
// 1109 %end {of number of}
} /* end of NUMBEROF */
// 1110
// 1111
// 1112 {MAIN PROGRAM}
// 1113 %predicate Open DictFile
static int OPENDICTFILE(void) {
// 1114 %on %event 3,9 %start
if (!_imp_on_event(3, 9)) goto L_00AC;
// 1115 %false
return 0 /*FALSE*/;
// 1116 %finish
L_00AC:;
// 1117 Open Input(1,dictfile)
_imp_OPENINPUT(1,
/* clang-format off */
*({ __typeof__(_imp_string31) tmp = DICTFILE/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1118 %true
return 1 /*TRUE*/;
// 1119 %end
} /* end of OPENDICTFILE */
// 1120
// 1121 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 1122
// 1123 %record (word rec) %name mw
struct WORDREC *MW;
// 1124 %string (31) longest word
_imp_string31 LONGESTWORD;
// 1125 %integer i, longest, num words
int I;
int LONGEST;
int NUMWORDS;
// 1126 %real average number of words per sentence
float AVERAGENUMBEROFWORDSPERSENTENCE;
// 1127
// 1128 %onevent 3,9 %start
if (!_imp_on_event(3, 9)) goto L_00AD;
// 1129 %if event_event = 3 %start
if (_imp_EVENT().EVENT != 3) goto L_00AE;
// 1130 Select Output(0)
_imp_SELECTOUTPUT(0);
// 1131 Print String("Ether or file system error:")
_imp_PRINTSTRING(_imp_str_literal("Ether or file system error:"));
// 1132 Print String(itos(event_info {extra},0)."_".%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join(({__typeof__(_imp_string255) tmp; /*D*/ tmp = _imp_ITOS(_imp_EVENT().INFO, 0); (void *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr("_")); (_imp_string255 *)&tmp;}), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(_imp_EVENT().SUB, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(" ")); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/&_imp_EVENT().MESSAGE); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1133+ itos(event_sub {event},0)." ".event_message)
// 1134 Newline
_imp_NEWLINE();
// 1135 %stop
_imp_stop(0);
// 1136 %else
L_00AE:;
// 1137 Close Input
_imp_CLOSEINPUT();
// 1138 in a sentence = 0
INASENTENCE = 0;
// 1139 words from start of sentence = 0
WORDSFROMSTARTOFSENTENCE = 0;
// 1140 just finished a sentence = 0
JUSTFINISHEDASENTENCE = 0;
// 1141 %if (options & U option)#0 %start
if (OPTIONS & 2 == 0) goto L_00AF;
// 1142 %if (options & P option)=0 %start
if (OPTIONS & 32 != 0) goto L_00B0;
// 1143 Print String("WORD USAGE AND STYLISTIC ANALYSIS")
_imp_PRINTSTRING(_imp_str_literal("WORD USAGE AND STYLISTIC ANALYSIS"));
// 1144 Newline
_imp_NEWLINE();
// 1145 %finish
L_00B0:;
// 1146 %if sentence count < 10 %start
if (SENTENCECOUNT >= 10) goto L_00B1;
// 1147 Print String("Not enough sentences to give usage statistics")
_imp_PRINTSTRING(_imp_str_literal("Not enough sentences to give usage statistics"));
// 1148 Newline
_imp_NEWLINE();
// 1149 %else
goto L_00B2;
L_00B1:;
// 1150 {Reading age}
// 1151 num words = number of words
NUMWORDS = NUMBEROFWORDS();
// 1152 average number of words per sentence = %c
AVERAGENUMBEROFWORDSPERSENTENCE = (double)(NUMWORDSINSENTENCES / SENTENCECOUNT);
// 1153+ num words in sentences / sentence count
// 1154 Print String("--- ".%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(SENTENCECOUNT, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(" sentences parsed,")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1155+ ITOS(sentence count,0)." sentences parsed,".%c
// 1156+ " with an average of ")
// 1157 Print(average number of words per sentence,0,2)
_imp_PRINT(AVERAGENUMBEROFWORDSPERSENTENCE, 0, 2);
// 1158 Print String(" words per sentence")
_imp_PRINTSTRING(_imp_str_literal(" words per sentence"));
// 1159 Newline
_imp_NEWLINE();
// 1160 %if average number of words per sentence > 35 %start
if (AVERAGENUMBEROFWORDSPERSENTENCE <= 35) goto L_00B3;
// 1161 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Your sentences are too long. Try to make some of them shorter."));
// 1162+ " Your sentences are too long. Try to make some of them shorter.")
// 1163 Newline
_imp_NEWLINE();
// 1164 %finish
L_00B3:;
// 1165 %if average word length > 6 %start
if (AVERAGEWORDLENGTH() <= 6) goto L_00B4;
// 1166 Print String("--- You use far too many long words.")
_imp_PRINTSTRING(_imp_str_literal("--- You use far too many long words."));
// 1167 Newline
_imp_NEWLINE();
// 1168 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Your average word length is "));
// 1169+ " Your average word length is ")
// 1170 Print(average word length,0,2)
_imp_PRINT(AVERAGEWORDLENGTH(), 0, 2);
// 1171 Print String(" - try to get it nearer 5")
_imp_PRINTSTRING(_imp_str_literal(" - try to get it nearer 5"));
// 1172 Newline
_imp_NEWLINE();
// 1173 %elseif average word length > 5.5
goto L_00B5;
L_00B4:;
if (AVERAGEWORDLENGTH() <= 5.5) goto L_00B6;
// 1174 Print String("--- You use quite a lot of long words.")
_imp_PRINTSTRING(_imp_str_literal("--- You use quite a lot of long words."));
// 1175 Newline
_imp_NEWLINE();
// 1176 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Your average word length is "));
// 1177+ " Your average word length is ")
// 1178 Print(average word length,0,2)
_imp_PRINT(AVERAGEWORDLENGTH(), 0, 2);
// 1179 Print String(" - try to get it nearer 4.9")
_imp_PRINTSTRING(_imp_str_literal(" - try to get it nearer 4.9"));
// 1180 Newline
_imp_NEWLINE();
// 1181 %else
goto L_00B5;
L_00B6:;
// 1182 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use a good mix of word length, with an average of "));
// 1183+ "--- You use a good mix of word length, with an average of ")
// 1184 Print(average word length,0,2)
_imp_PRINT(AVERAGEWORDLENGTH(), 0, 2);
// 1185 Print String(" letters per word.")
_imp_PRINTSTRING(_imp_str_literal(" letters per word."));
// 1186 Newline
_imp_NEWLINE();
// 1187 %finish
L_00B5:;
// 1188 %if number of ("such") > 1 %and %c
if (NUMBEROF(_imp_str_literal_size(31, "such")) <= 1) goto L_00B7;
if (NUMBEROF(_imp_str_literal_size(31, "such")) <= (double)((SENTENCECOUNT * 7) / 100)) goto L_00B7;
// 1189+ number of("such") > sentence count*7/100 %start
// 1190 Print String("--- ")
_imp_PRINTSTRING(_imp_str_literal("--- "));
// 1191 Print(number of("such")*100/sentence count,0,2)
_imp_PRINT((double)((NUMBEROF(_imp_str_literal_size(31, "such")) * 100) / SENTENCECOUNT), 0, 2);
// 1192 Print String("% of your sentences use SUCH.")
_imp_PRINTSTRING(_imp_str_literal("% of your sentences use SUCH."));
// 1193 Newline
_imp_NEWLINE();
// 1194 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Only legal documents should have this many SUCHs."));
// 1195+ " Only legal documents should have this many SUCHs.")
// 1196 Newline
_imp_NEWLINE();
// 1197 %finish
L_00B7:;
// 1198 %if (FLOAT(number of("that"))/FLOAT(sentence count)) > 0.40 %start
if ((double)(_imp_FLOAT(NUMBEROF(_imp_str_literal_size(31, "that"))) / _imp_FLOAT(SENTENCECOUNT)) <= 0.40)
goto L_00B8;
// 1199 Print String("--- ")
_imp_PRINTSTRING(_imp_str_literal("--- "));
// 1200 Print(number of("that")*100/sentence count,0,2)
_imp_PRINT((double)((NUMBEROF(_imp_str_literal_size(31, "that")) * 100) / SENTENCECOUNT), 0, 2);
// 1201 Print String("% of your sentences use THAT.")
_imp_PRINTSTRING(_imp_str_literal("% of your sentences use THAT."));
// 1202 Newline
_imp_NEWLINE();
// 1203 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" You railroad your readers. Try to reduce frequency of THATs to 25%"));
// 1204+ " You railroad your readers. Try to reduce frequency of THATs to 25%")
// 1205 Newline
_imp_NEWLINE();
// 1206 %finish
L_00B8:;
// 1207 %if number of("basically") > 1 %start
if (NUMBEROF(_imp_str_literal_size(31, "basically")) <= 1) goto L_00B9;
// 1208 Print String("--- You use BASICALLY too often.".%c
_imp_PRINTSTRING(_imp_str_literal("--- You use BASICALLY too often."));
// 1209+ " It is redundant each time.")
// 1210 Newline
_imp_NEWLINE();
// 1211 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" You should use this word only rarely."));
// 1212+ " You should use this word only rarely.")
// 1213 Newline
_imp_NEWLINE();
// 1214 %finish
L_00B9:;
// 1215 %if number of("we") = 0 %and number of("i") = 0 %and %c
if (NUMBEROF(_imp_str_literal_size(31, "we")) != 0) goto L_00BA;
if (NUMBEROF(_imp_str_literal_size(31, "i")) != 0) goto L_00BA;
if (NUMBEROF(_imp_str_literal_size(31, "you")) != 0) goto L_00BA;
// 1216+ number of("you") = 0 %start
// 1217 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- Your written work is dying from abstractitis"));
// 1218+ "--- Your written work is dying from abstractitis"); Newline
_imp_NEWLINE();
// 1219 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 5 of Fowler's \"Modern English Usage\" (1973 ed)"));
// 1220+ " See page 5 of Fowler's ""Modern English Usage"" (1973 ed)")
// 1221 Newline
_imp_NEWLINE();
// 1222 %finish
L_00BA:;
// 1223 %if number of("which") >= number of("that") %and %c
if (NUMBEROF(_imp_str_literal_size(31, "which")) < NUMBEROF(_imp_str_literal_size(31, "that"))) goto L_00BB;
if (NUMBEROF(_imp_str_literal_size(31, "which")) <= 1) goto L_00BB;
// 1224+ number of("which") > 1 %start
// 1225 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You sometimes use WHICH instead THAT - they are not interchangeable.25%"));
// 1226+ "--- You sometimes use WHICH instead THAT - ".%c
// 1227+ " they are not interchangeable."); Newline
_imp_NEWLINE();
// 1228 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 142-145 of Gower's \"The Complete Plain Words\" (1973 ed)"));
// 1229+ " See page 142-145 of Gower's ""The Complete Plain Words"" (1973 ed)")
// 1230 Newline
_imp_NEWLINE();
// 1231 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" Also page 696-706 of Fowler's \"Modern English Usage\" (1983 ed)"));
// 1232+ " Also page 696-706 of Fowler's ""Modern English Usage"" (1983 ed)")
// 1233 Newline
_imp_NEWLINE();
// 1234 %finish
L_00BB:;
// 1235 %if number of("ingeminate") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "ingeminate")) <= 0) goto L_00BC;
// 1236 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use the word INGEMINATE. I bet you don't know what it means."));
// 1237+ "--- You use the word INGEMINATE. I bet you don't know what it means.")
// 1238 Newline
_imp_NEWLINE();
// 1239 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 284 of Fowler's \"Modern English Usage\" (1973 ed)"));
// 1240+ " See page 284 of Fowler's ""Modern English Usage"" (1973 ed)")
// 1241 Newline
_imp_NEWLINE();
// 1242 %finish
L_00BC:;
// 1243 %if number of("gender") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "gender")) <= 0) goto L_00BD;
// 1244 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- Use of GENDER is probably a blunder."));
// 1245+ "--- Use of GENDER is probably a blunder.")
// 1246 Newline
_imp_NEWLINE();
// 1247 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 220 of Fowler's \"Modern English Usage\" (1973 ed)"));
// 1248+ " See page 220 of Fowler's ""Modern English Usage"" (1973 ed)")
// 1249 Newline
_imp_NEWLINE();
// 1250 %finish
L_00BD:;
// 1251 %if number of("feasible") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "feasible")) <= 0) goto L_00BE;
// 1252 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- Use POSSIBLE instead of FEASIBLE. FEASIBLE is pretentious."));
// 1253+ "--- Use POSSIBLE instead of FEASIBLE. FEASIBLE is pretentious.")
// 1254 Newline
_imp_NEWLINE();
// 1255 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" See page 191 of Fowler's \"Modern English Usage\" (1973 ed)"));
// 1256+ " See page 191 of Fowler's ""Modern English Usage"" (1973 ed)")
// 1257 Newline
_imp_NEWLINE();
// 1258 %finish
L_00BE:;
// 1259 %if number of("firstly") > 0 %and %c
if (NUMBEROF(_imp_str_literal_size(31, "firstly")) <= 0) goto L_00BF;
if (NUMBEROF(_imp_str_literal_size(31, "secondly")) != 0) goto L_00BF;
// 1260+ number of("secondly") = 0 %start
// 1261 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use FIRSTLY without using SECONDLY. Clumsy."));
// 1262+ "--- You use FIRSTLY without using SECONDLY. Clumsy.")
// 1263 Newline
_imp_NEWLINE();
// 1264 %finish
L_00BF:;
// 1265 %if recursive reference > sentence count/20 %and %c
if (RECURSIVEREFERENCE <= (double)(SENTENCECOUNT / 20)) goto L_00C0;
if (RECURSIVEREFERENCE <= 2) goto L_00C0;
// 1266+ recursive reference > 2 %start
// 1267 Print String("--- You use ".ITOS(recursive reference,0).%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("--- You use "), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(RECURSIVEREFERENCE, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(" recursive references (THIS, THAT, THESE etc).")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1268+ " recursive references (THIS, THAT, THESE etc).")
// 1269 Newline
_imp_NEWLINE();
// 1270 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" This means that "));
// 1271+ " This means that ")
// 1272 Print(recursive reference*100/sentence count,0,2)
_imp_PRINT((double)((RECURSIVEREFERENCE * 100) / SENTENCECOUNT), 0, 2);
// 1273 Print String("% of your sentences start with a ")
_imp_PRINTSTRING(_imp_str_literal("% of your sentences start with a "));
// 1274 Newline
_imp_NEWLINE();
// 1275 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" reference to a previous sentence, making your writing hard to"));
// 1276+ " reference to a previous sentence, making your writing hard to")
// 1277 Newline
_imp_NEWLINE();
// 1278 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" follow. Your readers must work too hard unravelling sentences."));
// 1279+ " follow. Your readers must work too hard unravelling sentences.")
// 1280 Newline
_imp_NEWLINE();
// 1281 %finish
L_00C0:;
// 1282 %if number of("utilize") > 0 %or %c
if (NUMBEROF(_imp_str_literal_size(31, "utilize")) > 0) goto L_00C1;
if (NUMBEROF(_imp_str_literal_size(31, "utilized")) > 0) goto L_00C1;
if (NUMBEROF(_imp_str_literal_size(31, "utilizes")) <= 0) goto L_00C2;
L_00C1:;
// 1283+ number of("utilized") > 0 %or %c
// 1284+ number of("utilizes") > 0 %start
// 1285 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use UTILIZE. It is a pretentious word. What's wrong with USE ?"));
// 1286+ "--- You use UTILIZE. It is a pretentious word. What's wrong with USE ?")
// 1287 Newline
_imp_NEWLINE();
// 1288 %finish
L_00C2:;
// 1289 %if number of("obligate") > 0 %or %c
if (NUMBEROF(_imp_str_literal_size(31, "obligate")) > 0) goto L_00C3;
if (NUMBEROF(_imp_str_literal_size(31, "obligated")) <= 0) goto L_00C4;
L_00C3:;
// 1290+ number of("obligated") > 0 %start
// 1291 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use OBLIGATE. It is a clumsy word. What's wrong with OBLIGE ?"));
// 1292+ "--- You use OBLIGATE. It is a clumsy word. What's wrong with OBLIGE ?")
// 1293 Newline
_imp_NEWLINE();
// 1294 %finish
L_00C4:;
// 1295 %if number of("averse") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "averse")) <= 0) goto L_00C5;
// 1296 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use AVERSE. Check that it is not a misprint of ADVERSE"));
// 1297+ "--- You use AVERSE. Check that it is not a misprint of ADVERSE")
// 1298 Newline
_imp_NEWLINE();
// 1299 %finish
L_00C5:;
// 1300 %if number of("casual") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "casual")) <= 0) goto L_00C6;
// 1301 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use CASUAL. Check that it is not a misprint of CAUSAL"));
// 1302+ "--- You use CASUAL. Check that it is not a misprint of CAUSAL")
// 1303 Newline
_imp_NEWLINE();
// 1304 %finish
L_00C6:;
// 1305 %if (number of("dependant") > 0 %or %c
if (NUMBEROF(_imp_str_literal_size(31, "dependant")) > 0) goto L_00C7;
if (NUMBEROF(_imp_str_literal_size(31, "dependants")) <= 0) goto L_00C8;
L_00C7:;
if (NUMBEROF(_imp_str_literal_size(31, "social")) != 0) goto L_00C8;
if (NUMBEROF(_imp_str_literal_size(31, "family")) != 0) goto L_00C8;
if (NUMBEROF(_imp_str_literal_size(31, "mother")) != 0) goto L_00C8;
if (NUMBEROF(_imp_str_literal_size(31, "father")) != 0) goto L_00C8;
if (NUMBEROF(_imp_str_literal_size(31, "parents")) != 0) goto L_00C8;
// 1306+ number of("dependants") > 0 ) %and %c
// 1307+ number of("social") = 0 %and %c
// 1308+ number of("family") = 0 %and %c
// 1309+ number of("mother") = 0 %and %c
// 1310+ number of("father") = 0 %and %c
// 1311+ number of("parents") = 0 %start
// 1312 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use DEPENDANT when you almost certainly mean DEPENDENT."));
// 1313+ "--- You use DEPENDANT when you almost certainly mean DEPENDENT.")
// 1314 Newline
_imp_NEWLINE();
// 1315 %finish
L_00C8:;
// 1316 %if number of("deprecate") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "deprecate")) <= 0) goto L_00C9;
// 1317 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use DEPRECATE. Check that it is not a misprint of DEPRECIATE"));
// 1318+ "--- You use DEPRECATE. Check that it is not a misprint of DEPRECIATE")
// 1319 Newline
_imp_NEWLINE();
// 1320 %finish
L_00C9:;
// 1321 %if number of("methodology") > 0 %or %c
if (NUMBEROF(_imp_str_literal_size(31, "methodology")) > 0) goto L_00CA;
if (NUMBEROF(_imp_str_literal_size(31, "methodologies")) <= 0) goto L_00CB;
L_00CA:;
// 1322+ number of ("methodologies") > 0 %start
// 1323 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use METHODOLOGY. What is wrong with METHOD, STYLE or TECHNIQUE ?"));
// 1324+ "--- You use METHODOLOGY. What is wrong with METHOD, STYLE or TECHNIQUE ?")
// 1325 Newline
_imp_NEWLINE();
// 1326 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" These plain alternatives have done well for hundreds of years"));
// 1327+ " These plain alternatives have done well for hundreds of years")
// 1328 Newline
_imp_NEWLINE();
// 1329 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" so why should you want to use this vulgar import? Are not plain"));
// 1330+ " so why should you want to use this vulgar import? Are not plain")
// 1331 Newline
_imp_NEWLINE();
// 1332 Print String(%c
_imp_PRINTSTRING(_imp_str_literal(" words good enough for you?"));
// 1333+ " words good enough for you?")
// 1334 Newline
_imp_NEWLINE();
// 1335 %finish
L_00CB:;
// 1336 %if number of("realty") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "realty")) <= 0) goto L_00CC;
// 1337 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use REALTY. Check that it is not a misprint of REALITY"));
// 1338+ "--- You use REALTY. Check that it is not a misprint of REALITY")
// 1339 Newline
_imp_NEWLINE();
// 1340 %finish
L_00CC:;
// 1341 %if number of("uniformed") > 0 %start
if (NUMBEROF(_imp_str_literal_size(31, "uniformed")) <= 0) goto L_00CD;
// 1342 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("--- You use UNIFORMED. Check that it is not a misprint of UN-INFORMED"));
// 1343+ "--- You use UNIFORMED. Check that it is not a misprint of UN-INFORMED")
// 1344 Newline
_imp_NEWLINE();
// 1345 %finish
L_00CD:;
// 1346 %finish
L_00B2:;
// 1347 %finish
L_00AF:;
// 1348 %if (options & L option)#0 %start
if (OPTIONS & 256 == 0) goto L_00CE;
// 1349 ! Mark
// 1350 Sort word table lexically
SORTWORDTABLELEXICALLY();
// 1351 %if (options & P option)=0 %start
if (OPTIONS & 32 != 0) goto L_00CF;
// 1352 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("LEXICALLY ORDERED VOCABULARY"));
// 1353+ "LEXICALLY ORDERED VOCABULARY")
// 1354 Newline
_imp_NEWLINE();
// 1355
// 1356 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("Word Occurances"));
// 1357+ "Word Occurances")
// 1358 Newline
_imp_NEWLINE();
// 1359 %finish
L_00CF:;
// 1360 %if (options & R option)#0 %start
if (OPTIONS & 16 == 0) goto L_00D0;
// 1361 Print node in reverse(sort tree)
PRINTNODEINREVERSE(SORTTREE);
// 1362 %else
goto L_00D1;
L_00D0:;
// 1363 Print node(sort tree)
PRINTNODE(SORTTREE);
// 1364 %finish
L_00D1:;
// 1365 ! Release
// 1366 sort tree == NIL
SORTTREE = (struct NODE *)NIL;
// 1367 %finish
L_00CE:;
// 1368 %if (options & F option)#0 %start
if (OPTIONS & 1024 == 0) goto L_00D2;
// 1369 ! Mark
// 1370 Sort word table by frequency
SORTWORDTABLEBYFREQUENCY();
// 1371 %if (options & P option)=0 %start
if (OPTIONS & 32 != 0) goto L_00D3;
// 1372 Print String("VOCABULARY ORDERED BY FREQUENCY")
_imp_PRINTSTRING(_imp_str_literal("VOCABULARY ORDERED BY FREQUENCY"));
// 1373 Newline
_imp_NEWLINE();
// 1374 Print String(%c
_imp_PRINTSTRING(_imp_str_literal("Word Occurances"));
// 1375+ "Word Occurances")
// 1376 Newline
_imp_NEWLINE();
// 1377 %finish
L_00D3:;
// 1378 %if (options & R option)#0 %start
if (OPTIONS & 16 == 0) goto L_00D4;
// 1379 Print node in reverse(sort tree)
PRINTNODEINREVERSE(SORTTREE);
// 1380 %else
goto L_00D5;
L_00D4:;
// 1381 Print node(sort tree)
PRINTNODE(SORTTREE);
// 1382 %finish
L_00D5:;
// 1383 ! Release
// 1384 sort tree == NIL
SORTTREE = (struct NODE *)NIL;
// 1385 %finish
L_00D2:;
// 1386 %if (options & B option)#0 %start
if (OPTIONS & 8192 == 0) goto L_00D6;
// 1387 longest word = ""
/* clang-format off */
_imp_strncpy(/*?*/&LONGESTWORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = _imp_str_literal(""); (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 1388 longest = 0
LONGEST = 0;
// 1389 %for i=0,1,hash table size %cycle
// %for I = 0, 1, 4095 %cycle
{
I = -1;
L_00D7:
if (I == 4095) goto L_00D8;
I += 1;
// 1390 %if word table(i) ## NIL %start
/* clang-format off */
if (_imp_ADDR((void *)(WORDTABLE[I])) == _imp_ADDR((void *)(NIL))) goto L_00D9;
/* clang-format on */
// 1391 mw == word table(i)
MW = (struct WORDREC *)WORDTABLE[I];
// 1392 %while mw ## NIL %cycle
L_00DA:;
/* clang-format off */
if (_imp_ADDR((void *)(MW)) == _imp_ADDR((void *)(NIL))) goto L_00DB;
/* clang-format on */
// 1393 %if longest < LENGTH(mw_word) %start
if (LONGEST >= *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &MW->WORD)) goto L_00DC;
// 1394 longest word = mw_word
/* clang-format off */
_imp_strncpy(/*?*/&LONGESTWORD, ({__typeof__(_imp_string255) tmp;/*B*/ tmp = MW->WORD; (void *)&tmp;}), /*max:*/31);
/* clang-format on */
// 1395 longest = LENGTH(longest word)
LONGEST = *_imp_LENGTH((_imp_string255 *)/*p*/ /*?*/ &LONGESTWORD);
// 1396 %finish
L_00DC:;
// 1397 mw == mw_next
MW = (struct WORDREC *)MW->NEXT;
// 1398 %repeat
goto L_00DA;
L_00DB:;
// 1399 %finish
L_00D9:;
// 1400 %repeat
goto L_00D7;
}
L_00D8:;
// 1401 Print String("Longest word = ".longest word.%c
_imp_PRINTSTRING(
/* clang-format off */
*({ __typeof__(_imp_string255) tmp = *({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/&*({_imp_string255 tmp = _imp_join((_imp_string *)/*?*/_imp_str_literal_ptr("Longest word = "), (_imp_string *)/*?*/&LONGESTWORD); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(" (")); (_imp_string255 *)&tmp;}), ({__typeof__(_imp_string255) tmp; /*E*/ tmp = _imp_ITOS(LONGEST, 0); (void *)&tmp;})); (_imp_string255 *)&tmp;}), (_imp_string *)/*?*/_imp_str_literal_ptr(")")); (_imp_string255 *)&tmp;})/*q*/; (_imp_string255 *)&tmp; })
/* clang-format on */
);
// 1402+ " (".ITOS(longest,0).")")
// 1403 Newline
_imp_NEWLINE();
// 1404 %finish
L_00D6:;
// 1405 %if (options & W option)#0 %start
if (OPTIONS & 1 == 0) goto L_00DD;
// 1406 word count
WORDCOUNT();
// 1407 %finish
L_00DD:;
// 1408 %if (options & C option)#0 %start
if (OPTIONS & 4096 == 0) goto L_00DE;
// 1409 Sort word table lexically
SORTWORDTABLELEXICALLY();
// 1410 Close Input
_imp_CLOSEINPUT();
// 1411 %if Open Dictfile %then Select Input(1) %and Do spelling check
if (!(OPENDICTFILE())) goto L_00DF;
_imp_SELECTINPUT(1);
DOSPELLINGCHECK();
L_00DF:;
// 1412 %finish
L_00DE:;
// 1413 Close Output
_imp_CLOSEOUTPUT();
// 1414 %stop
_imp_stop(0);
// 1415 %finish
// 1416 %finish
L_00AD:;
// 1417
// 1418 interpret command line
INTERPRETCOMMANDLINE();
// 1419 %stop %if options = 0
if (OPTIONS != 0) goto L_00E0;
_imp_stop(0);
L_00E0:;
// 1420 help %if (options & H option) # 0
if (OPTIONS & 512 == 0) goto L_00E1;
HELP();
L_00E1:;
// 1421 init
INIT();
// 1422 create vocabulary
CREATEVOCABULARY();
// 1423
// 1424 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}