-- TexHyphInit.mesa

-- last written by Doug Wyatt, November 10, 1979 2:31 AM

DIRECTORY
TexHyphDefs: FROM "TexHyphDefs",
FrameDefs: FROM "FrameDefs" USING[SelfDestruct];

TexHyphInit: PROGRAM
IMPORTS TexHyphDefs,FrameDefs
EXPORTS TexHyphDefs =
BEGIN OPEN TexHyphDefs;

InitExceptions: PROCEDURE =
BEGIN
XWords: CARDINAL = 349;
Exceptions: ARRAY [0..XWords] OF STRING ← -- the words the algorithms miss
-- taken from the 6-29-79 version of [Maxc]<Tex>TexPre.Sai
["con-trol-lable"L,"un-con-trollable"L,
"eq-uable"L,"in-sa-tiable"L,"ne-go-tiable"L,"so-ciable"L,"turn-table"L,"un-so-ciable"L,
"sub-sequence"L,
"de-pend-ent"L,"in-de-pend-ent"L,
"any-thing"L,"bal-ding"L,"dar-ling"L,"dump-ling"L,"err-ing"L,"eve-ning"L,"every-thing"L,
"far-thing"L,"found-ling"L,"ink-ling"L,"main-spring"L,"nest-ling"L,"off-spring"L,
"play-thing"L,"sap-ling"L,"shoe-string"L,"sib-ling"L,"some-thing"L,"star-ling"L,
"ster-ling"L,"un-err-ing"L,"up-swing"L,"weak-ling"L,"year-ling"L,
"civ-i-lize"L,"crys-tal-lize"L,"im-mo-bi-lize"L,"me-ta-bo-lize"L,"mo-bi-lize"L,
"mo-nop-o-lize"L,"sta-bi-li*ze"L,"tan-ta-lize"L,"un-civ-i-lized"L,
"pal-ate"L,
"in-clem-ent"L,
"bar-on-ess"L,"li-on-ess"L,
"eu-logy"L,"ped-a-gogy"L,
"lus-cious"L,
"at-mos-phere"L,
"met-al"L,"non-metal"L,"pet-al"L,"postal"L,"rent-al"L,
"cat-ion"L,
"com-bat-ive"L,
"stat-ure"L,
"beck-on"L,"bes-tial"L,
"com-a-tose"L,"come-back"L,"co-me-dian"L,"comp-troller"L,
"cone-flower"L,"co-nun-drum"L,
"equipped"L,
"handle-bar"L,
"inch-worm"L,"ink-blot"L,"inn-keeper"L,
"in-te-rior"L,
"min-is-ter"L,"min-is-try"L,
"none-the-less"L,
"qua-drille"L,
"som-er-sault"L,
"su-pe-rior"L,
"una-nim-ity"L,"unan-i-mous"L,"unc-tuous"L,
"debt-or"L,
"ac-knowl-edge"L,
"de-duct-i*ble"L,"ex-act-i-tude"L,"in-ex-act-i-tude"L,
"pre-dict-*able"L,"re-spect-*able"L,"un-pre-dict-able"L,"vict-ual"L,
"nee-dle-work"L,"idler"L,
"buff-er"L,"off-beat"L,"off-hand"L,"off-print"L,"off-shoot"L,"off-shore"L,
"stiff-en"L,
"left-ist"L,"left-over"L,"lift-off"L,
"soft-hearted"L,
"egg-nog"L,"egg-head"L,
"cognac"L,"for-eign-er"L,"vignette"L,
"hogs-head"L,
"child-ish"L,"eld-est"L,"gold-en"L,"hold-out"L,"hold-over"L,"hold-up"L,
"self-ish"L,
"bull-ish"L,"crest-fallen"L,"dis-till-*ery"L,"fall-out"L,"lull-aby"L,"roll-away"L,
"sell-out"L,"wall-eye"L,
"psalm-ist"L,
"else-where"L,"false-hood"L,
"con-sult-ant"L,"volt-age"L,
"re-solv-able"L,"re-volv-er"L,"solv-able"L,"un-solv-able"L,
"beach-comb-er"L,"bomb-er"L,"climb-er"L,"plumb-er"L,
"damp-en"L,"damp-est"L,
"clinch-er"L,"launch-er"L,"lunch-eon"L,"ranch-er"L,"trench-ant"L,
"an-nouncer"L,"bouncer"L,"fencer"L,"hence-forth"L,"mince-meat"L,"si-lencer"L,
"bind-ery"L,"bound-ary"L,"com-mend-*a-*t*ory"L,"de-pend-able"L,"ex-pend-able"L,
"fiend-ish"L,"land-owner"L,"out-land-ish"L,"round-about"L,"send-off"L,"stand-out"L,
"un-der-stand-able"L,
"change-over"L,"hang-out"L,"hang-over"L,"ha-rangue"L,"me-ringue"L,"orange-ade"L,
"tongue"L,"venge-ance"L,
"sense-less"L,
"ac-count-ant"L,"ant-acid"L,"ant-eater"L,"count-ess"L,"rep-re-sentative"L,
"ant-hill"L,"pent-house"L,"per-cent-*age"L,
"ac-cept-able"L,"ac-cept-or"L,"adapt-able"L,"adapt-er"L,"crypt-analysis"L,
"in-ter-ru*p*t-*i*ble"L,
"an-tiq-uity"L,"in-eq-uity"L,"in-iq-uity"L,"liq-uefy"L,"liq-uid"L,
"liq-ui-date"L,"liq-uor"L,"pre-req-ui-site"L,"req-ui-sition"L,
"ubiq-ui-tous"L,
"ab-sorb-ent"L,"carb-on"L,"herbal"L,"im-per-turb-able"L,
"arch-ery"L,"arch-angel"L,"re-search-ers"L,"un-search-able"L,
"ac-cord-ance"L,"board-er"L,"chordal"L,"hard-en"L,"hard-est"L,"haz-ard-ous"L,
"jeop-ard-ize"L,"re-cord-er"L,"stand-ard-ize"L,"stew-ard-ess"L,"yard-age"L,
"surf-er"L,
"morgue"L,
"curl-i-cue"L,
"af-firm-a*t*i*ve"L,"con-form-*ity"L,"de-form-ity"L,"in-form-a*nt"L,"non-con-form-ist"L,
"cav-ern-ous"L,"dis-cern-ible"L,"mod-ern-ize"L,"turn-about"L,"turn-over"L,
"un-gov-ern-able"L,"west-ern-ize"L,
"harp-ist"L,"sharp-en"L,
"torque"L,
"coars-en"L,"ir-re-vers-ible"L,"nurse-maid"L,"nurs-ery"L,"re-hears-al"L,
"re-vers-ible"L,"wors-en"L,
"art-ist"L,"con-vert-ible"L,"court-yard"L,"fore-short-en"L,"heart-ache"L,"heart-ily"L,
"short-en"L,
"apart-heid"L,"court-house"L,"earth-en-ware"L,"north-east"L,"north-ern"L,"port-hole"L,
"nerv-ous"L,"ob-serv-a*ble"L,"ob-serv-er"L,"pre-serv-*a*t*i*ve"L,"serv-er"L,
"serv-ice-able"L,
"pre-school"L,
"con-de-scend"L,"cre-scendo"L,"de-cre-scendo"L,"de-scend-ent"L,"de-scent"L,
"pleb-i-scite"L,"re-scind"L,"sea-scape"L,
"askance"L,"snake-skin"L,"whisk-er"L,
"cole-slaw"L,
"rattle-snake"L,
"class-room"L,"class-ify"L,"cross-over"L,"dis-miss-al"L,"ex-press-*i*ble"L,
"im-pass-able"L,"less-en"L,"pass-able"L,"toss-up"L,"un-class-i-fied"L,
"ar-mi-stice"L,"astig-ma-tism"L,"astir"L,"aston-ish-ment"L,"blast-off"L,"by-stand-er"L,
"candle-stick"L,"cast-away"L,"cast-off"L,"con-test-ant"L,"co-star"L,
"de-test-able"L,"di-gest-ible"L,"east-ern"L,"ex-ist-ence"L,"fore-stall"L,
"in-con-test-able"L,"in-di-ges*t-*i*ble"L,"in-ex-haust-ible"L,"life-style"L,
"lime-stone"L,"live-stock"L,"mile-stone"L,"non-ex-ist-ent"L,"per-sist-ent"L,
"pho-to-stat"L,"re-start-ed"L,"re-state-ment"L,"re-store"L,"shy-ster"L,
"side-step"L,"smoke-stack"L,"sug-gest-*i*ble"L,"thermo-stat"L,"waste-bas-ket"L,
"waste-land"L,
"mast-head"L,"post-hu-mous"L,"priest-hood"L,
"side-swipe"L,
"watt-meter"L,
"be-tween"L,
"kib-itzer"L,
"buzz-er"L,
"al-go-rithm"L,"bib-li-og-raphy"L,"bi-no-mial"L,"cen-ter"L,"com-put-a*bil-ity"L,
"dec-la-ra-tion"L,"de-gree"L,"es-tab-lish"L,"hap-hazard"L,"neg-li-gible"L,"pe-ri-odic"L,
"poly-no-mial"L,"pre-vious"L,"pro-ce-dure"L,"prob-able"L,"prob-abil-ity"L,
"pub-li-ca-tion"L,"pub-lish"L,"re-place-ment"L,"when-ever"L,
"gen-er-ator"L,
""L];
i: CARDINAL;
FOR i IN[0..XWords) DO XEnt[Exceptions[i]] ENDLOOP;
END;

InitCharSetTable: PROCEDURE =
BEGIN
Z: ARRAY CHARACTER[’a..’z] OF CARDINAL =
[40000B,20000B,10000B,4000B,2000B,1000B,400B,200B,100B,40B,20B,10B,4B,2B,1B,
--p--100000B,40000B,20000B,10000B,4000B,2000B,1000B,400B,200B,100B,40B];

charSetTable↑ ←
[
[0,0],
[100000B+Z[’a]+Z[’e]+Z[’i]+Z[’o], Z[’u]+Z[’y]],
[Z[’a]+Z[’e]+Z[’i]+Z[’o], Z[’u]+Z[’y]],
[Z[’c]+Z[’l], 0],
[Z[’n], Z[’r]],
[Z[’b]+Z[’c]+Z[’d]+Z[’f]+Z[’g], Z[’p]+Z[’t]+Z[’z]],
[Z[’f], Z[’s]+Z[’z]],
[0, Z[’s]+Z[’t]],
[Z[’l]+Z[’n], 0],
[Z[’e]+Z[’h]+Z[’i]+Z[’k]+Z[’l]+Z[’o], Z[’u]+Z[’v]+Z[’w]+Z[’x]+Z[’y]],
[Z[’c]+Z[’h], Z[’s]+Z[’w]],
[Z[’a]+Z[’f]+Z[’g]+Z[’l]+Z[’m], 0],
[Z[’a]+Z[’f], Z[’u]],
[Z[’l], Z[’r]],
[Z[’g], Z[’r]],
[0, Z[’t]],
[Z[’n], 0],
[0, Z[’r]],
[Z[’e], Z[’r]],
[Z[’h]+Z[’l]+Z[’n], Z[’r]],
[Z[’d], 0],
[0, Z[’p]],
[Z[’d]+Z[’g], Z[’s]+Z[’t]],
[Z[’g]+Z[’m]+Z[’n], Z[’t]],
[Z[’l], Z[’r]+Z[’t]],
[Z[’d]+Z[’k], Z[’q]],
[Z[’d]+Z[’e]+Z[’g]+Z[’k], Z[’s]+Z[’t]+Z[’x]],
[Z[’g]+Z[’k]+Z[’m]+Z[’n], Z[’t]],
[0, Z[’p]+Z[’q]+Z[’t]]
];
END;

InitSuffixTable: PROCEDURE =
BEGIN
suffixTable↑ ←
[
--0 DUMMY--[fail,[char[’ ]],0,0], -- <null>aeiouy
--1--[fail,[char[’ ]],0,0], -- a
--2--[fail,[char[’ ]],0,0], -- b
--3--[scan,[char[’i]],34,1], -- c
--4--[again,[char[’ ]],1,0], -- d
--5--[mark,[index[0]],38,0], -- e
--6--[fail,[char[’ ]],0,0], -- f
--7--[scan,[char[’n]],60,1], -- g
--8--[fail,[char[’ ]],0,0], -- h
--9--[fail,[char[’ ]],0,0], -- i
--10--[fail,[char[’ ]],0,0], -- j
--11--[fail,[char[’ ]],0,0], -- k
--12--[scan,[char[’a]],71,72], -- l
--13--[fail,[char[’ ]],0,0], -- m
--14--[scan,[char[’o]],77,1], -- n
--15--[fail,[char[’ ]],0,0], -- o
--16--[fail,[char[’ ]],0,0], -- p
--17--[fail,[char[’ ]],0,0], -- q
--18--[scan,[char[’e]],81,1], -- r
--19--[mark,[index[0]],85,0], -- s
--20--[scan,[char[’n]],94,1], -- t
--21--[fail,[char[’ ]],0,0], -- u
--22--[fail,[char[’ ]],0,0], -- v
--23--[fail,[char[’ ]],0,0], -- w
--24--[fail,[char[’ ]],0,0], -- x
--25--[scan,[char[’l]],31,98], -- y
--26--[efail,[char[’ ]],0,0], -- z
--27--[success,[index[0]],0,0],
--28--[success,[index[1]],0,0],
--29--[success,[index[2]],0,0],
--30--[success,[index[3]],0,0],
--31--[repeat,[index[0]],0,0],
--32--[repeat,[index[1]],0,0],
--33--[repeat,[index[2]],0,0],
--34--[scan,[char[’p]],35,26], -- e/ic
--35--[scan,[char[’o]],36,26], -- pe/pic
--36--[scan,[char[’c]],37,26], -- ope/opic
--37--[scan,[char[’s]],27,26], -- cope/copic
--38--[scan,[char[’l]],39,40], -- e
--39--[scan,[char[’b]],41,26], -- le
--40--[scan,[char[’t]],42,43], -- e
--41--[scan,[char[’a]],44,26], -- ble
--42--[scan,[char[’a]],45,26], -- te
--43--[scan,[char[’z]],46,47], -- e
--44--[scan,[char[’t]],48,49], -- able
--45--[table,[set[cl]],108,26], -- ate
--46--[scan,[char[’i]],51,26], -- ze
--47--[scan,[char[’v]],52,53], -- e
--48--[table,[set[nr]],33,26], -- table
--49--[table,[set[ehiklouvwxy]],32,26], -- able
--50 DUMMY--[fail,[char[’ ]],0,0], -- cl
--51--[scan,[char[’l]],32,26], -- ize
--52--[scan,[char[’i]],55,26], -- ve
--53--[scan,[char[’r]],56,34], -- e
--54 DUMMY--[fail,[char[’ ]],0,0], -- nr
--55--[scan,[char[’t]],27,26], -- ive/ure
--56--[scan,[char[’u]],55,57], -- re
--57--[scan,[char[’e]],58,26], -- re
--58--[scan,[char[’h]],59,26], -- ere
--59--[scan,[char[’p]],37,26], -- here
--60--[scan,[char[’i]],61,1], -- ng
--61--[check,[char[’ ]],62,1], -- ing
--62--[scan,[char[’l]],63,64], -- ing
--63--[table,[set[bcdfgptz]],27,66], -- ling
--64--[table,[set[fsz]],28,68], -- ing
--65 DUMMY--[fail,[char[’ ]],0,0], -- bcdfgptz
--66--[scan,[char[’k]],69,28], -- ling
--67 DUMMY--[fail,[char[’ ]],0,0], -- fsz
--68--[table,[set[aeiouy]],28,70], -- ing
--69--[scan,[char[’c]],29,27], -- kling
--70--[double,[char[’ ]],27,27], -- ing
--71--[scan,[char[’i]],73,74], -- al
--72--[scan,[char[’u]],75,1], -- l
--73--[scan,[char[’t]],27,76], -- al/ial
--74--[scan,[char[’n]],14,73], -- al
--75--[scan,[char[’f]],31,1], -- ul
--76--[scan,[char[’c]],27,1], -- al/ial/ient
--77--[scan,[char[’i]],78,1], -- on/onal
--78--[table,[set[st]],80,1], -- ion/ional
--79 DUMMY--[fail,[char[’ ]],0,0], -- st
--80--[mark,[index[4]],27,0], -- sion/sional/tion/tional
--81--[scan,[char[’h]],82,1], -- er/y
--82--[scan,[char[’p]],83,1], -- her/hy
--83--[scan,[char[’a]],84,1], -- pher/phy
--84--[scan,[char[’r]],27,1], -- apher/aphy
--85--[scan,[char[’u]],86,87], -- s
--86--[scan,[char[’o]],88,4], -- us
--87--[scan,[char[’s]],89,4], -- s
--88--[scan,[char[’i]],90,4], -- ous
--89--[scan,[char[’e]],91,4], -- ss
--90--[scan,[char[’c]],92,4], -- ious
--91--[table,[set[ln]],31,4], -- ess
--92--[scan,[char[’s]],27,27], -- cious
--93 DUMMY--[fail,[char[’ ]],0,0], -- ln
--94--[scan,[char[’e]],95,1], -- nt
--95--[scan,[char[’m]],31,96], -- ent
--96--[scan,[char[’d]],27,97], -- ent
--97--[scan,[char[’i]],76,1], -- ent
--98--[scan,[char[’g]],99,100], -- y
--99--[scan,[char[’o]],27,1], -- gy
--100--[scan,[char[’r]],101,81], -- y
--101--[scan,[char[’a]],102,1], -- ry
--102--[scan,[char[’n]],103,1], -- ary
--103--[scan,[char[’o]],104,105], -- nary
--104--[scan,[char[’i]],106,28], -- onary
--105--[scan,[char[’e]],29,27], -- nary
--106--[repeat,[index[3]],0,0], -- ionary
--107 DUMMY--[fail,[char[’ ]],0,0], -- ehiklouvwxy
--108--[table,[set[aeiouy]],28,26] -- cate/late
];
END;

InitPrefixTable: PROCEDURE =
BEGIN
vs: CARDINAL=1; cs: CARDINAL=6; ts: CARDINAL=7;
prefixTable↑ ←
[
--0--[fail,[char[’ ]],0,0], -- in case mem[u+1] gets set to zero by the suffix routine
--1--[vow,[char[’ ]],0,0], -- a
--2--[scan,[char[’e]],34,cs], -- b
--3--[scan,[char[’o]],36,cs], -- c
--4--[scan,[char[’i]],38,cs], -- d
--5--[scan,[char[’q]],41,44], -- e
--6--[cons,[char[’ ]],0,0], -- f
--7--[table,[set[null]],0,0], -- g
--8--[scan,[char[’a]],45,47], -- h
--9--[scan,[char[’m]],27,55], -- i
--10--[cons,[char[’ ]],0,0], -- j
--11--[cons,[char[’ ]],0,0], -- k
--12--[scan,[char[’e]],61,cs], -- l
--13--[scan,[char[’a]],63,70], -- m
--14--[scan,[char[’o]],76,cs], -- n
--15--[scan,[char[’u]],77,78], -- o
--16--[scan,[char[’s]],81,cs], -- p
--17--[scan,[char[’u]],85,cs], -- q
--18--[cons,[char[’ ]],0,0], -- r
--19--[scan,[char[’e]],87,89], -- s
--20--[scan,[char[’h]],97,99], -- t
--21--[scan,[char[’n]],106,vs], -- u
--22--[cons,[char[’ ]],0,0], -- v
--23--[cons,[char[’ ]],0,0], -- w
--24--[cons,[char[’ ]],0,0], -- x
--25--[vow,[char[’ ]],0,0], -- y
--26--[cons,[char[’ ]],0,0], -- z
--27--[repeat,[index[0]],0,0],
--28--[repeat,[index[1]],0,0],
--29--[repeat,[index[2]],0,0],
--30--[mark,[index[0]],0,0],
--31--[mark,[index[1]],0,0],
--32--[mark,[index[2]],0,0],
--33--[mark,[index[3]],0,0],
--34--[table,[set[chsw]],0,0], -- be
--35--[scan,[char[’i]],vs,27], -- un
--36--[scan,[char[’m]],30,37], -- co
--37--[scan,[char[’n]],30,vs], -- co
--38--[scan,[char[’s]],39,vs], -- di
--39--[scan,[char[’h]],ts,40], -- dis
--40--[scan,[char[’y]],vs,27], -- dis
--41--[scan,[char[’u]],42,cs], -- eq
--42--[scan,[char[’i]],43,cs], -- equ
--43--[scan,[char[’v]],30,30], -- equi
--44--[scan,[char[’x]],30,vs], -- e
--45--[scan,[char[’n]],46,vs], -- ha
--46--[scan,[char[’d]],30,ts], -- han
--47--[scan,[char[’o]],48,51], -- h
--48--[scan,[char[’r]],49,vs], -- ho
--49--[scan,[char[’s]],50,ts], -- hor
--50--[scan,[char[’e]],30,ts], -- hors
--51--[scan,[char[’y]],52,cs], -- h
--52--[scan,[char[’p]],53,vs], -- hy
--53--[scan,[char[’e]],54,ts], -- hyp
--54--[scan,[char[’r]],33,vs], -- hype
--55--[scan,[char[’n]],56,vs], -- i
--56--[scan,[char[’t]],57,27], -- in
--57--[scan,[char[’e]],58,59], -- int
--58--[scan,[char[’r]],33,29], -- inte
--59--[scan,[char[’r]],60,28], -- int
--60--[scan,[char[’o]],33,29], -- intr
--61--[scan,[char[’x]],62,vs], -- le
--62--[scan,[char[’i]],31,ts], -- lex/max/min
--63--[scan,[char[’c]],64,66], -- ma
--64--[scan,[char[’r]],65,ts], -- mac
--65--[scan,[char[’o]],32,ts], -- macr
--66--[scan,[char[’t]],67,69], -- ma
--67--[scan,[char[’h]],68,ts], -- mat
--68--[scan,[char[’e]],31,ts], -- math
--69--[scan,[char[’x]],62,vs], -- ma
--70--[scan,[char[’i]],71,72], -- m
--71--[scan,[char[’n]],62,vs], -- mi
--72--[scan,[char[’u]],73,cs], -- m
--73--[scan,[char[’l]],74,vs], -- mu
--74--[scan,[char[’t]],75,ts], -- mul
--75--[scan,[char[’i]],32,ts], -- mult
--76--[scan,[char[’n]],27,vs], -- no
--77--[scan,[char[’t]],30,vs], -- ou
--78--[scan,[char[’v]],79,vs], -- o
--79--[scan,[char[’e]],80,ts], -- ov
--80--[scan,[char[’r]],27,vs], -- ove
--81--[scan,[char[’e]],82,cs], -- ps
--82--[scan,[char[’u]],83,vs], -- pse
--83--[scan,[char[’d]],84,vs], -- pseu
--84--[scan,[char[’o]],32,ts], -- pseud
--85--[scan,[char[’a]],86,cs], -- qu
--86--[scan,[char[’d]],30,vs], -- qua
--87--[scan,[char[’m]],88,vs], -- se
--88--[scan,[char[’i]],30,ts], -- sem
--89--[scan,[char[’o]],90,92], -- s
--90--[scan,[char[’m]],91,vs], -- so
--91--[scan,[char[’e]],30,ts], -- som/ther
--92--[scan,[char[’u]],93,cs], -- s
--93--[scan,[char[’b]],30,94], -- su
--94--[scan,[char[’p]],95,vs], -- su
--95--[scan,[char[’e]],96,ts], -- sup
--96--[scan,[char[’r]],33,vs], -- supe
--97--[scan,[char[’e]],98,cs], -- th
--98--[scan,[char[’r]],91,vs], -- the
--99--[scan,[char[’r]],100,cs], -- t
--100--[scan,[char[’a]],101,104], -- tr
--101--[scan,[char[’n]],102,vs], -- tra
--102--[scan,[char[’s]],103,ts], -- tran
--103--[table,[set[afglm]],0,0], -- trans
--104--[scan,[char[’i]],105,cs], -- tr
--105--[table,[set[afu]],0,0], -- tri
--106--[scan,[char[’d]],107,35], -- un
--107--[scan,[char[’e]],108,28], -- und
--108--[scan,[char[’r]],33,29] -- unde
];
END;

InitCPTable: PROCEDURE =
BEGIN
cpTable↑ ←
[
--2--[lr,0,0], -- b
--3--[lr,4,0], -- c
--4--[gr,0,0], -- d
--5--[lr,0,0], -- ch
--6--[lrt,0,1], -- f
--7--[lr,4,0], -- g
--8--[null,0,0], -- h
--9--[t,0,0], -- gh
--10--[null,0,0], -- j
--11--[n,0,0], -- k
--12--[kqd,0,2], -- l
--13--[p,0,3], -- m
--14--[ekxdgst,0,4], -- n
--15--[r,0,0], -- ph
--16--[lr,1,0], -- p
--17--[null,0,0], -- q
--18--[kgmnt,0,5], -- r
--19--[pqt,4,1], -- s
--20--[er,7,0], -- t
--21--[null,0,0], -- sh
--22--[null,0,0], -- v
--23--[hlnr,0,0], -- w
--24--[null,0,0], -- x
--25--[r,0,0], -- th
--26--[null,0,0], -- z (and weak[0])
--27--[t,0,0], -- weak[1], for f and s
--28--[d,0,0], -- weak[2], for l
--29--[p,0,0], -- weak[3], for m
--30--[dgst,0,0], -- weak[4], for n
--31--[gmnt,0,0] -- weak[5], for r
];
END;

InitExceptions;
InitCharSetTable;
InitSuffixTable;
InitPrefixTable;
InitCPTable;

FrameDefs.SelfDestruct;

END.