text:
Module:User:Benwing2/ang-verb

local m_links = require("Module:links") local m_utilities = require("Module:utilities") local strutils = require("Module:string utilities") local ut = require("Module:utils")

local com = require("Module:ang-common") local lang = require("Module:languages").getByCode("ang")

local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub

-- version of rsubn that discards all but the first return value local function rsub(term, foo, bar, n)	local retval = rsubn(term, foo, bar, n)	return retval end

-- like str:gsub but discards all but the first return value local function gsub(term, foo, bar, n)	local retval = term:gsub(foo, bar, n)	return retval end

local function track(page) require("Module:debug").track("ang-verb/" .. page) return true end

local export = {}

local long_vowel = "āēīōūȳǣ" .. com.MACRON -- No precomposed œ + macron local short_vowel = "aeiouyæœ" local short_vowel_c = "[" .. short_vowel .. "]" local vowel = long_vowel .. short_vowel local vowel_c = "[" .. vowel .. "]" local long_vowel_c = "[" .. long_vowel .. "]" local non_vowel_c = "[^" .. vowel .. "]" local always_unvoiced_cons = "cċkptxz" local always_unvoiced_cons_c = "[" .. always_unvoiced_cons .. "]" local unvoiced_cons = always_unvoiced_cons .. "fsþð" local unvoiced_cons_c = "[" .. unvoiced_cons .. "]" local single_cons = "bcċdfgġhklmnprstwþðƿ" local single_cons_c = "[" .. single_cons .. "]" local cons = single_cons .. "xz" local cons_c = "[" .. cons .. "]"

local slots_and_accel = { ["infinitive"] = "", ["infinitive2"] = "", ["1sg_pres_indc"] = "1|s|pres|indc", ["2sg_pres_indc"] = "2|s|pres|indc", ["3sg_pres_indc"] = "3|s|pres|indc", ["pl_pres_indc"] = "123|p|pres|indc", ["sg_pres_subj"] = "123|s|pres|subj", ["pl_pres_subj"] = "123|p|pres|subj", ["1sg_past_indc"] = "1|s|past|indc", ["2sg_past_indc"] = "2|s|past|indc", ["3sg_past_indc"] = "3|s|past|indc", ["pl_past_indc"] = "123|p|past|indc", ["sg_past_subj"] = "123|s|past|subj", ["pl_past_subj"] = "123|p|past|subj", ["sg_impr"] = "2|s|impr", ["pl_impr"] = "2|p|impr", ["pres_ptc"] = "pres|part", ["past_ptc"] = "past|part", }

local function ends_in_long_vowel(word) if rfind(word, long_vowel_c .. "$") then return true elseif rfind(word, "ē[ao]$") then return true elseif rfind(word, "ī[eo]$") then return true else return false end end

local function begins_with_verbal_prefix(word) word = com.decompose(word) for _, prefixspec in ipairs(com.prefixes) do		local prefix = prefixspec[1] local specs = prefixspec[2] if specs.verb then local main = rmatch(word, "^" .. prefix .. "(.-)$") if main and (not specs.restriction or rfind(main, specs.restriction)) then return true end end end

return false end

local function make_table(forms) local title = forms.title local accel_lemma = m_links.remove_links(forms.infinitive[1] or mw.title.getCurrentTitle.text) local function typetext local typ = forms["type"] local class = forms["class"] if typ == "strong" then return "strong" .. (class and " class " .. class or "") .. "" elseif typ == "weak" then return "weak" .. (class and " class " .. class or "") .. "" elseif typ == "pretpres" then return "preterite-present" elseif typ == "irreg" or typ == "anomalous" then return "irregular" else error("Unrecognized verb type: " .. typ) end end if not title then title = "Conjugation of " .. m_links.full_link({lang = lang, alt = accel_lemma}, "term") if forms["type"] then title = title .. " (" .. typetext .. ")" end end local table_args = { title = title, style = forms.style == "right" and "float:right; clear:right;" or "", width = forms.width or "30", }	for slot, accel_form in pairs(slots_and_accel) do		local table_arg = {} local slotforms = forms[slot] and #forms[slot] > 0 and forms[slot] or {"—"} for _, form in ipairs(slotforms) do			table.insert(table_arg, form == "—" and form or m_links.full_link{				lang = lang, term = form, accel = {					form = accel_form ~= "" and accel_form or nil,					lemma = accel_lemma,				}			}) table_args[slot] = table.concat(table_arg, ", ") end end local table = [=[  {title} {\op}| style="background:#F9F9F9;text-align:center;width:{width}em" class="inflection-table" ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | infinitive ! style="font-size:80%;" | indicative ! style="font-size:80%; background-color:#EFEFFF" | present ! style="font-size:80%; background-color:#EFEFFF" | past ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | 1st-person singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | 2nd-person singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | 3rd-person singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | plural ! style="font-size:80%;" | subjunctive ! style="font-size:80%; background-color:#EFEFFF" | present ! style="font-size:80%; background-color:#EFEFFF" | past ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | plural ! style="font-size:80%;" | imperative ! style="font-size:80%; background-color:#EFEFFF" colspan="2" | ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | singular ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | plural ! style="font-size:80%;" |participle ! style="font-size:80%; background-color:#EFEFFF" | present ! style="font-size:80%; background-color:#EFEFFF" | past ! style="font-size:90%; background-color:#FFFFE0; text-align: left" | return strutils.format(table, table_args) end
 * {infinitive}
 * {infinitive2}
 * {1sg_pres_indc}
 * {1sg_past_indc}
 * {2sg_pres_indc}
 * {2sg_past_indc}
 * {3sg_pres_indc}
 * {3sg_past_indc}
 * {pl_pres_indc}
 * {pl_past_indc}
 * {sg_pres_subj}
 * {sg_past_subj}
 * {pl_pres_subj}
 * {pl_past_subj}
 * colspan="2" | {sg_impr}
 * colspan="2" | {pl_impr}
 * {pres_ptc}
 * {past_ptc}
 * {\cl} ]=]

function export.make_table(frame) local parent_args = frame:getParent.args local params = { ["title"] = {default = "—"}, ["type"] = {}, ["width"] = {}, ["style"] = {}, }	for slot, _ in pairs(slots_and_accel) do		params[slot] = {} end local args = require("Module:parameters").process(parent_args, params) return make_table(args) end

local function vernerize_cons(cons, verner) if not verner then return cons end if cons == "s" then return "r" elseif cons == "þ" or cons == "ð" then return "d" elseif cons == "h" then return "g" else return cons end end

local function depalatalize_final_cons_before_cons(word) if word:find("sċ$") then return word elseif word:find("nċġ$") then -- crinċġan etc.		return gsub(word, "nċġ$", "ng") else return rsub(word, "([nċġ]?[ċġ])$", {			["ċ"] = "c",			["nċ"] = "nc",			["ċċ"] = "cc",			["ġċ"] = "ġc",			["nġ"] = "ng",			["ċġ"] = "cg",			-- ġ and ġġ stay as-is		}) end end

local function depalatalize_final_cons_before_back_vowel(word) local word = depalatalize_final_cons_before_cons(word) return gsub(word, "ġ$", "g") end

local function palatalize_final_cons(word) return rsub(word, "([cg]?[cg])$", {		["c"] = "ċ",		["cc"] = "ċċ",		["cg"] = "ċġ",		["g"] = "ġ",		["gc"] = "gċ", -- ??		["gg"] = "ċġ",	}) end

-- Add an ending that begins with a consonant onto a stem, making adjustments -- as necessary when two consonants come together. Currently recognizes only -- the three endings "st", "þ" and "d". local function construct_cons_stem_ending(stem, ending) -- If the stem ends in a geminate, reduce to single consonant -- (e.g. fyll-, sett-). local origstem = stem local base, final_geminated = rmatch(stem, "^(.-)(" .. non_vowel_c .. ")%2$")	if base then stem = base .. final_geminated end stem = depalatalize_final_cons_before_cons(stem) if ending == "st" then -- For 2sg: -- cyssan + -st -> cyst, tǣsan + -st -> tǣst -- settan + -st -> setst, myntan + -st -> myn(t)st (?), restan + -st -> restst/rest (?) -- bǣdan + -st -> bǣtst, sendan + -st -> sen(t)st -- cȳþan + -st -> cȳst, cwiþ- + -st -> cwist -- wiex- + -st -> wiext -- drenċan + -st -> drencst -- senġan + -st -> sengst if stem:find("s$") then return stem .. "t" elseif stem:find("[dt]$") then if rfind(stem, vowel_c .. "[dt]$") then return gsub(stem, "[dt]$", "tst") elseif rfind(stem, "s[dt]$") then return gsub(stem, "s[dt]$", "st") else return {gsub(stem, "[dt]$", "st"), gsub(stem, "[dt]$", "tst")} end elseif rfind(stem, "[þð]$") then return rsub(stem, "[þð]$", "st") elseif stem:find("x$") then return stem .. "t" else return stem .. "st" end elseif ending == "þ" then -- For 3sg: -- cyssan + -þ -> cyst, tǣsan + -þ -> tǣst -- settan + -þ -> set(t), myntan + -þ -> mynt, restan + -þ -> rest -- bǣdan + -þ -> bǣt(t), sendan + -þ -> sent -- cȳþan + -þ -> cȳþ(þ), cwiþ- + -þ -> cwiþ(þ) -- wiex- + -þ -> wiext -- drenċan + -þ -> drencþ -- senġan + -þ -> sengþ if rfind(stem, vowel_c .. "[dt]$") then return {gsub(stem, "[dt]$", "tt"), gsub(stem, "[dt]$", "t")} elseif stem:find("[dt]$") then return gsub(stem, "[dt]$", "t") elseif stem:find("[sx]$") then return stem .. "t" elseif rfind(stem, "[þð]$") then return {rsub(stem, "[þð]$", "þþ"), stem} else return stem .. "þ" end elseif ending == "d" then -- For past: -- cyssan + -de -> cyste, tǣsan + -de -> tǣsde -- settan + -de -> sette, myntan + -de -> mynte, restan + -de -> reste, mētan + -de -> mētte -- bǣdan + -de -> bǣdde, sendan + -de -> sende, hreddan + -de -> hredde -- cȳþan + -de -> cȳþde (later cȳdde), ġeorwirþan + -de -> ġeorwirþde, sċeþþan + -de -> sċeþte --  (? Bosworth-Toller has only sċeþede, and has pæþde for *pæþte from pæþþan) -- līexan + -de -> līexte -- pyffan + -de -> pyfte, ġelīefan + -de -> ġelīefde -- drenċan + -de -> drencte -- senġan + -de -> sengde -- cīepan + -de -> cīepte, clyppan + -de -> clypte -- spillan + -de -> spilde, cierran + -de -> cierde, wemman + -de -> wemde, etc. if rfind(stem, vowel_c .. "t$") then return stem .. "t" elseif rfind(stem, vowel_c .. "d$") then return stem .. "d" elseif stem:find("[dt]$") then return stem elseif rfind(stem, always_unvoiced_cons_c .. "$") or rfind(origstem, unvoiced_cons_c .. "[sfþð]$") then return stem .. "t" else return stem .. "d" end else error("Unrecognized ending: '" .. ending .. "'") end end

-- Default function for combining a stem and an ending. This makes no adjustments -- to the result other than returning an optional variant ending in -h if the result -- ends in -g. Example: stīgan preterite stāg or stāh. (Does not apply to a form -- ending in -ġ.) If adjustments are necessary at the stem/ending boundary, use e.g. -- construct_cons_stem_ending. local function default_construct_stem_ending(stem, ending) local form = stem .. ending if form:find("g$") and not form:find("[ncg]g$") then return {form, gsub(form, "g$", "h")} else return form end end

local function add_form_to_slot(args, slot, form) if not args[slot] then args[slot] = {} end if type(form) == "string" then ut.insert_if_not(args[slot], form) else for _, f in ipairs(form) do			ut.insert_if_not(args[slot], f)		end end end

local function add_ending_with_prefix(args, slot, pref, stems, ending, construct_stem_ending) construct_stem_ending = construct_stem_ending or default_construct_stem_ending if type(stems) ~= "table" then stems = {stems} end for _, stem in ipairs(stems) do local form = construct_stem_ending(pref and pref .. stem or stem, ending) add_form_to_slot(args, slot, form) end end

local function add_ending(args, slot, stems, ending, construct_stem_ending) add_ending_with_prefix(args, slot, nil, stems, ending, construct_stem_ending) end

local function construct_optional_ge_stem_ending(stem, ending) return "(ġe)" .. stem .. ending .. "" end

local function make_non_past(args, presa, prese, pres23, impsg, pp, with_ge) add_ending(args, "infinitive", presa, "n") add_ending(args, "infinitive2", prese, "nne") add_ending(args, "1sg_pres_indc", prese, "") add_ending(args, "2sg_pres_indc", pres23, "st", construct_cons_stem_ending) add_ending(args, "3sg_pres_indc", pres23, "þ", construct_cons_stem_ending) add_ending(args, "pl_pres_indc", presa, "þ") add_ending(args, "sg_pres_subj", prese, "") add_ending(args, "pl_pres_subj", prese, "n") add_ending(args, "sg_impr", impsg, "") add_ending(args, "pl_impr", presa, "þ") add_ending(args, "pres_ptc", prese, "nde") if with_ge then add_ending(args, "past_ptc", pp, "", construct_optional_ge_stem_ending) else add_ending(args, "past_ptc", pp, "") end end

local function make_strong_past(args, pref, pastsg, pastpl) add_ending_with_prefix(args, "1sg_past_indc", pref, pastsg, "") add_ending_with_prefix(args, "2sg_past_indc", pref, pastpl, "e") add_ending_with_prefix(args, "3sg_past_indc", pref, pastsg, "") add_ending_with_prefix(args, "pl_past_indc", pref, pastpl, "on") add_ending_with_prefix(args, "sg_past_subj", pref, pastpl, "e") add_ending_with_prefix(args, "pl_past_subj", pref, pastpl, "en") end

local function make_strong(presa, prese, pres23, impsg, pastsg, pastpl, pp, with_ge) local args = {} make_non_past(args, presa, prese, pres23, impsg, pp, with_ge) make_strong_past(args, nil, pastsg, pastpl) return args end

local function make_weak_past(args, pref, past) add_ending_with_prefix(args, "1sg_past_indc", pref, past, "e") add_ending_with_prefix(args, "2sg_past_indc", pref, past, "est") add_ending_with_prefix(args, "3sg_past_indc", pref, past, "e") add_ending_with_prefix(args, "pl_past_indc", pref, past, "on") add_ending_with_prefix(args, "sg_past_subj", pref, past, "e") add_ending_with_prefix(args, "pl_past_subj", pref, past, "en") end

local function make_weak(presa, prese, pres23, impsg, past, pp, with_ge) local args = {} make_non_past(args, presa, prese, pres23, impsg, pp, with_ge) make_weak_past(args, nil, past) return args end

local strong_verbs = {}

strong_verbs["1"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ī(" .. cons_c .. "+)an$") if pref then -- bīdan "await", ācwīnan "dwindle away", sċīnan "shine", spīwan "spew, spit", etc.; -- stīgan "ascend" (þū stīġst, stāg/stāh [handled by default_construct_stem_ending],		-- stigon, stiġen); blīcan "shine" (þū blīcst/blīċest) data.pres23 = pref .. "ī" .. palatalize_final_cons(suf) if suf == "g" then data.impsg = pref .. "īġ" else data.impsg = pref .. "ī" .. suf end -- ġīnan "yawn" (gān, ġinon, ġinen) data.pastsg = depalatalize_final_cons_before_back_vowel(pref) .. "ā" .. suf -- snīþan "cut" -> snidon; sċrīþan "go, proceed" -> sċridon -- (but not mīþan "avoid", wrīþan "twist") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "i" .. pastsuf if pastsuf == "g" then data.pp = pref .. "iġen" else data.pp = data.pastpl .. "en" end return end pref = rmatch(data.inf, "^(.-)[ēī]on$") if pref then -- tēon/tīon "accuse" < *tīhanan, similarly lēon "lend" < *līhwanan, -- sēon "strain" < *sīhwanan, þēon "thrive" < *þinhanan (originally strong 3), -- wrēon < *wrīhanan. Beware of homonyms e.g. tēon "pull, draw" (strong 2) < *teuhanan, -- tēon "make, create" (weak) ?< *tīhanan (strong); -- þēon/þēowan/þȳ(g)(a)n "press" (weak) < *þunhijanan; -- sēon "see" (strong 5) < *sehwanan data.pres23 = pref .. "īeh" data.impsg = gsub(data.inf, "n$", "h") data.pastsg = pref .. "āh" if rfind(pref, "[þð]$") then -- þēon "thrive", has remnant strong 3 parts data.pastpl = {pref .. "ig", pref .. "ung"} data.pp = {pref .. "iġen", pref .. "ungen"} else data.pastpl = pref .. "ig" if pref:find("s$") then -- sēon "strain" alt past part siwen data.pp = {pref .. "iġen", pref .. "iwen"} else data.pp = pref .. "iġen" end end return end end

strong_verbs["2"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ēo(" .. cons_c .. "+)an$") if pref then -- bēodan "command", crēopan "creep"; rēocan "smoke, reek" (þū rīecst/rīeċest); -- drēogan "endure" (þū drīeġst, drēag/drēah [handled by default_construct_stem_ending],		-- drugon, drogen) data.pres23 = pref .. "īe" .. palatalize_final_cons(suf) data.impsg = pref .. "ēo" .. suf data.pastsg = pref .. "ēa" .. suf -- ġēotan "pour" (ġēat, guton, goten); ċēosan "choose" (ċēas, curon, coren) local pastpref = depalatalize_final_cons_before_back_vowel(pref) -- ċēosan "choose" -> curon; forlēosan "lose" -> forluron; sēoþan "boil" -> sudon -- (but not ābrēoþan "perish, ruin") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pastpref .. "u" .. pastsuf data.pp = pastpref .. "o" .. pastsuf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ū(" .. cons_c .. "+)an$") if pref then -- sċūfan "shove"; brūcan "use" (þū brīecst/brīeċest); -- būgan "bend" (þū bīeġst, bēag/bēah [handled by default_construct_stem_ending],		-- bugon, bogen) data.pres23 = pref .. "ȳ" .. palatalize_final_cons(suf) data.impsg = pref .. "ū" .. suf -- could have palatalization here, but no known examples data.pastsg = pref .. "ēa" .. suf -- no known examples of Vernerization, but just in case local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "u" .. pastsuf data.pp = pref .. "o" .. pastsuf .. "en" return end local pref = rmatch(data.inf, "^(.-)ēon$") if pref then -- tēon "pull, draw" < *teuhanan, flēon "flee" -- Beware of homonyms, e.g. tēon/tīon "accuse" (strong 1) < *tīhanan, -- tēon "make, create" (weak) ?< *tīhan (strong) data.pres23 = pref .. "īeh" data.impsg = gsub(data.inf, "n$", "h") data.pastsg = pref .. "ēah" -- no examples where depalatalization is needed data.pastpl = pref .. "ug" data.pp = pref .. "ogen" return end end

strong_verbs["3"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)i([mn]" .. cons_c .. "+)an$") if pref then -- bindan "bind", climban "climb", ġelimpan "happen", winnan "win", -- swimman "swim", etc.; ācwincan "vanish" (þū ācwincst/ācwinċest); -- cringan (þū cringst/crinġest), variant crinċġan (þū cringst/crinċġest) data.pres23 = pref .. "i" .. palatalize_final_cons(suf) data.impsg = pref .. "i" .. suf -- onġinnan "begin" (ongann, ongunnon, ongunnen), ċimban "join" local pastpref = depalatalize_final_cons_before_back_vowel(pref) -- no Verner alternation here; expected #fīþan, #fōþ, #fundon < -- *finþanan, *fanþ, *fundund regularized into findan, fand, fundon; -- but depalatalize to handle crin(ċ)ġan past crang/crungon/crungen -- and (maybe?) variant crinċan past cranc/cruncon/cruncen local pastsuf = depalatalize_final_cons_before_cons(suf) data.pastsg = pastpref .. "a" .. pastsuf data.pastpl = pastpref .. "u" .. pastsuf data.pp = pastpref .. "u" .. pastsuf .. "en" return end local pref, vowel, suf = rmatch(data.inf, "^(.-)(ie)(l" .. cons_c .. "+)an$") if not pref then -- ġeldan/ġildan/ġyldan variants of ġieldan; helpan/bellan/delfan etc. pref, vowel, suf = rmatch(data.inf, "^(.-)([eiy])(l" .. cons_c .. "+)an$") end if not pref then pref, vowel, suf = rmatch(data.inf, "^(.-)(eo)(" .. cons_c .. "+)an$") end if pref then -- helpan "help" (þū hilpst), bellan "bellow", beteldan "cover", delfan "dig", -- sweltan "die", etc.; belgan "swell with anger" (þū bielġst, bealg/bealh		-- [handled by default_construct_stem_ending]) --		-- ġieldan "yield, pay" (þū ġiel(t)st, hē ġieldeþ/ġielt, ġeald, guldon, golden), -- ġiellan "yell", ġielpan "boast" --		-- weorpan "throw" (þū wierpst), feohtan "fight", sċeorfan "gnaw"; -- āseolcan "languish" (þū āsielcst/āsielċest), beorgan "protect" -- (þū bierġst, bearg/bearh [handled by default_construct_stem_ending]) data.pres23 = pref .. (vowel == "e" and "i" or vowel == "eo" and "ie" or vowel) .. palatalize_final_cons(suf) data.impsg = pref .. vowel .. suf data.pastsg = pref .. "ea" .. suf -- ġieldan etc. (see above) local pastpref = depalatalize_final_cons_before_back_vowel(pref) -- weorþan -> wurdon local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pastpref .. "u" .. pastsuf data.pp = pastpref .. "o" .. pastsuf .. "en" return end local pref = rmatch(data.inf, "^(.-)eġdan$") if pref then -- breġdan "brandish" (þū breġdest, hē breġdeþ, bræġd/brǣd, brugdon, brogden) -- streġdan "strew" (like breġdan) data.pres23 = pref .. "eġde" data.impsg = pref .. "eġd" data.pastsg = {pref .. "æġd", pref .. "ǣd"} data.pastpl = pref .. "ugd" data.pp = pref .. "ogden" return end local pref, suf = rmatch(data.inf, "^(.-)(ie?rn)an$") if not pref then pref, suf = rmatch(data.inf, "^(.-)(yrn)an$") end if pref then -- biernan/birnan/byrnan "burn" < *brinnanan (þū biernst, barn/born/bearn, burnon, burnen) -- iernan/irnan/yrnan "run" < *rinnan (like biernan) data.pres23 = pref .. suf data.impsg = data.pres23 data.pastsg = {pref .. "arn", pref .. "orn", pref .. "earn"} data.pastpl = pref .. "urn" data.pp = pref .. "urnen" return end local pref, vowel = rmatch(data.inf, "^(.-)([ou])rnan$") if pref then -- murnan "mourn" (þū myrnst, mearn, murnon, — but BT documents mornen) -- spurnan/spornan "spurn" (þū spyrnst, spearn, spurnon, spornen) data.pres23 = pref .. "yrn" data.impsg = pref .. vowel .. "rn" data.pastsg = pref .. "earn" data.pastpl = pref .. "urn" data.pp = pref .. "ornen" return end local pref, suf = rmatch(data.inf, "^(.-)e(r" .. cons_c .. "+)an$") if pref then -- berstan "burst" < *brestanan (þū birst, hē birsteþ/birst, bærst, burston, borsten) -- þersċan "thrash, thresh" < *þreskanan (þū þirsċst, hē þirsċeþ, þærsċ, þursċon, þorsċen) data.pres23 = pref .. "i" .. suf data.impsg = pref .. "e" .. suf data.pastsg = pref .. "æ" .. suf data.pastpl = pref .. "u" .. suf data.pp = pref .. "o" .. suf .. "en" return end local pref, vowel = rmatch(data.inf, "^(.-)fr([ei])ġnan$") if pref then -- friġnan "ask", variant freġnan data.pres23 = {pref .. "friġne", pref .. "friġn"} data.impsg = pref .. "fr" .. vowel .. "ġn" data.pastsg = pref .. "fræġn" data.pastpl = pref .. "frugn" data.pp = pref .. "frugnen" return end local pref = rmatch(data.inf, "^(.-)frīnan$") if pref then -- frīnan "ask" variant of friġnan data.pres23 = {pref .. "frīne", pref .. "frīn"} data.impsg = pref .. "frīn" data.pastsg = pref .. "frān" data.pastpl = pref .. "frūn" data.pp = pref .. "frūnen" return end local pref = rmatch(data.inf, "^(.-)fēolan$") if pref then -- fēolan "enter, penetrate" data.pres23 = {pref .. "fielh", pref .. "filh"} data.impsg = pref .. "feolh" data.pastsg = pref .. "fealh" data.pastpl = {pref .. "fǣl", pref .. "fulg", pref .. "fūl"} data.pp = {pref .. "folgen", pref .. "fōlen"} return end end

strong_verbs["4"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ie(" .. cons_c .. ")an$") if pref then -- sċieran "shear" data.pres23 = {pref .. "ie" .. suf .. "e", pref .. "ie" .. suf} data.impsg = pref .. "ie" .. suf -- no Verner alternation or depalatalization here data.pastsg = pref .. "ea" .. suf data.pastpl = pref .. "ēa" .. suf data.pp = pref .. "o" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)e(" .. cons_c .. ")an$") if pref then -- beran "bear, carry", cwelan "die", brecan "break" (þū bricst/briċest), etc.		if suf == "r" or suf == "l" then data.pres23 = {pref .. "i" .. suf .. "e", pref .. "i" .. suf} else data.pres23 = pref .. "i" .. palatalize_final_cons(suf) end data.impsg = pref .. "e" .. suf -- no Verner alternation or depalatalization here data.pastsg = pref .. "æ" .. suf data.pastpl = pref .. "ǣ" .. suf data.pp = pref .. "o" .. suf .. "en" return end -- Next two are irregular but occur with so many prefixes that we special-case them here. local pref = rmatch(data.inf, "^(.-)cuman$") if pref then -- cuman "come" data.pres23 = {pref .. "cyme", pref .. "cym"} data.impsg = pref .. "cum" data.pastsg = {pref .. "cōm", pref .. "cwōm"} data.pastpl = data.pastsg data.pp = {pref .. "cumen", pref .. "cymen"} return end local pref = rmatch(data.inf, "^(.-)niman$") if pref then -- niman "take" data.pres23 = {pref .. "nime", pref .. "nim"} data.impsg = pref .. "nim" data.pastsg = pref .. "nōm" data.pastpl = data.pastsg data.pp = pref .. "numen" return end end

strong_verbs["5"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ie(" .. cons_c .. ")an$") if not pref then pref, suf = rmatch(data.inf, "^(.-ġ)[eiy](" .. cons_c .. ")an$") end if pref then -- ġiefan "give", forġietan "forget" data.pres23 = pref .. "ie" .. suf data.impsg = data.pres23 data.pastsg = pref .. "ea" .. suf data.pastpl = pref .. "ēa" .. suf data.pp = pref .. "e" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)e(" .. cons_c .. ")an$") if suf == "g" then -- wegan "carry"; special-case data.pres23 = pref .. "iġ" data.impsg = pref .. "eġ" data.pastsg = pref .. "æġ" data.pastpl = {pref .. "ǣg", pref .. "āg"} data.pp = pref .. "eġen" return elseif pref then -- metan "measure", sprecan "speak", cnedan "knead", wefan "weave", etc. data.pres23 = pref .. "i" .. palatalize_final_cons(suf) data.impsg = pref .. "e" .. suf if suf == "t" and not pref:find("m$") and not pref:find("ġ$") then -- etan "eat", fretan "devour", compounds; exclude metan "measure", -- ġetan (potential variant of ġietan) data.pastsg = pref .. "ǣ" .. suf else data.pastsg = pref .. "æ" .. suf end -- cweþan "say" -> cwǣdon, wesan "be" -> wǣron -- (but not ġenesan "be saved", lesan "collect, gather") local pastsuf = vernerize_cons(suf, data.verner) data.pastpl = pref .. "ǣ" .. pastsuf if data.inf:find("drepan$") then -- Special-case drepan "strike, slay"; Wright lists brecan here with -- pp only brocen, but that just makes it a strong-4 verb and that's			-- where it's normally listed in dictionaries data.pp = {pref .. "epen", pref .. "open"} else data.pp = pref .. "e" .. pastsuf .. "en" end return end local pref, last_cons = rmatch(data.inf, "^(.-)i([dt])%2an$") if pref then -- biddan "pray", sittan "sit" data.pres23 = pref .. "i" .. last_cons data.impsg = data.pres23 .. "e" data.pastsg = pref .. "æ" .. last_cons data.pastpl = pref .. "ǣ" .. last_cons data.pp = pref .. "e" .. last_cons .. "en" return end local pref = rmatch(data.inf, "^(.-)iċġe?an$") if pref then -- liċġan "lie down", þiċġan "receive", friċġan "ask, inquire" data.pres23 = pref .. "iġ" data.impsg = data.pres23 .. "e" if rfind(data.inf, "[þð]iċġe?an$") then data.pastsg = {pref .. "eah", pref .. "ah"} else data.pastsg = pref .. "æġ" end data.pastpl = {pref .. "ǣg", pref .. "āg"} if data.inf:find("friċġe?an$") then data.pp = {pref .. "iġen", pref .. "ugen"} else data.pp = pref .. "eġen" end return end local pref = rmatch(data.inf, "^(.-)ēon$") if pref then -- sēon "see" < *sehwanan, ġefēon "rejoice" < *gafehanan, plēon "risk" < *plehanan data.pres23 = pref .. "ieh" data.impsg = pref .. "eoh" data.pastsg = pref .. "eah" if pref:find("s$") then -- sēon "see" data.pastpl = pref .. "āw" data.pp = pref .. "ewen" else data.pastpl = pref .. "ǣg" data.pp = pref .. "eġen" end return end end

strong_verbs["6"] = function(data) local pref, suf = rmatch(data.inf, "^(.-)ea(" .. cons_c .. "+)an$") if pref then -- sċ(e)acan "shake", sċ(e)afan "shave, scrape" data.pres23 = pref .. "ea" .. suf data.impsg = {pref .. "a" .. suf, data.pres23} data.pastsg = {pref .. "ō" .. suf, pref .. "eō" .. suf} data.pastpl = data.pastsg data.pp = {pref .. "a" .. suf .. "en", pref .. "ea" .. suf .. "en"} return end local pref, vowel, suf = rmatch(data.inf, "^(.-)(a)(" .. cons_c .. "+)an$") if not pref then -- stondan variant of standan, sponan variant of spanan pref, vowel, suf = rmatch(data.inf, "^(.-)(o)(n" .. cons_c .. "*)an$") end if not pref then -- wæsċan/wasċean/wæsċean variant of wasċan pref, vowel, suf = rmatch(data.inf, "^(.-)([aæ])(sċ" .. cons_c .. "*)e?an$") end if suf == "g" then -- gnagan "gnaw", dragan "draw" data.pres23 = pref .. "æġ" data.impsg = pref .. "ag" data.pastsg = pref .. "ōg" data.pastpl = data.pastsg data.pp = {pref .. "æġen", pref .. "agen"} return elseif suf == "nd" and pref:find("st$") then -- standan/stondan "stand" data.pres23 = pref .. "end" data.impsg = pref .. vowel .. "nd" data.pastsg = pref .. "ōd" data.pastpl = data.pastsg data.pp = pref .. vowel .. "nden" return elseif suf == "n" and pref:find("sp$") then -- spanon/sponan "allure" data.pres23 = {pref .. "ene", pref .. "en"} data.impsg = pref .. vowel .. "n" data.pastsg = {pref .. "ōn", pref .. "ēon"} -- has alt class VII past data.pastpl = data.pastsg data.pp = pref .. vowel .. "nen" return elseif pref then -- faran "go", alan "grow", bacan "bake", hladan "lade", wasċan "wash", etc.		if suf == "r" or suf == "l" or suf == "sċ" then data.pres23 = {pref .. "æ" .. suf .. "e", pref .. "æ" .. suf} else data.pres23 = pref .. "æ" .. palatalize_final_cons(suf) end data.impsg = pref .. "a" .. suf data.pastsg = pref .. "ō" .. suf -- Apparently no Verner variation here data.pastpl = data.pastsg data.pp = {pref .. "æ" .. suf .. "en", pref .. "a" .. suf .. "en"} return end local pref = rmatch(data.inf, "^(.-)ēan$") if pref then -- slēan "strike", flēan "flay", lēan "blame", þwēan "wash" data.pres23 = pref .. "ieh" data.impsg = pref .. "eah" data.pastsg = pref .. "ōg" -- also slōh etc., which will get automatically added data.pastpl = data.pastsg data.pp = {pref .. "æġen", pref .. "agen", pref .. "eġen"} return end local pref, last_cons = rmatch(data.inf, "^(.-)i([dt])%2an$") -- All the j-present verbs have to be handled individually as each has -- idiosyncrasies. local pref, last_cons = rmatch(data.inf, "^(.-)hebban$") if pref then -- hebban "raise" data.pres23 = pref .. "hefe" data.impsg = data.pres23 data.pastsg = pref .. "hōf" data.pastpl = data.pastsg data.pp = {pref .. "hæfen", pref .. "hafen", pref .. "hefen"} return end local pref, vowel = rmatch(data.inf, "^(.-)hl([iy]?e?)hhan$") if pref then -- hliehhan "laugh" data.pres23 = pref .. "hl" .. vowel .. "h" data.impsg = data.pres23 data.pastsg = pref .. "hlōg" data.pastpl = data.pastsg data.pp = pref .. "hlæġen" return end local pref, cons = rmatch(data.inf, "^(.-)sċe([þð])%2an$") if pref then -- sċeþþan "injure" (for some reason, expected #sċieþþan doesn't occur) data.pres23 = pref .. "sċe" .. cons .. "e" data.impsg = data.pres23 data.pastsg = "sċōd" data.pastpl = data.pastsg data.pp = "sċeaþen" return end local pref, vowel = rmatch(data.inf, "^(.-)sċ([iy]?e?)ppan$") if pref then -- sċieppan "create" data.pres23 = pref .. "sċ" .. vowel .. "pe" data.impsg = data.pres23 data.pastsg = {pref .. "sċōp", pref .. "sċeōp"} data.pastpl = data.pastsg data.pp = {pref .. "sċeapen", pref .. "sċapen"} return end local pref, vowel = rmatch(data.inf, "^(.-)st([æe])ppan$") if pref then -- stæppan "step, go" data.pres23 = pref .. "st" .. vowel .. "pe" data.impsg = data.pres23 data.pastsg = pref .. "stōp" data.pastpl = data.pastsg data.pp = {pref .. "stæpen", pref .. "stapen"} return end local pref = rmatch(data.inf, "^(.-s[wƿ])erian$") if pref then -- swerian "swear" data.pres23 = pref .. "ere" data.impsg = data.pres23 data.pastsg = pref .. "ōr" data.pastpl = data.pastsg data.pp = pref .. "oren" -- on the analogy of class IV verbs like beran return end end

strong_verbs["7"] = function(data) -- Type (7a) verbs local pref = rmatch(data.inf, "^(.-)hātan$") if pref then -- hātan "call" data.pres23 = pref .. "hǣt" data.impsg = pref .. "hāt" data.pastsg = {pref .. "hēt", pref .. "hēht"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg data.pp = pref .. "hāten" return end local pref = rmatch(data.inf, "^(.-)lācan$") if pref then -- lācan "play" data.pres23 = pref .. "lǣċ" data.impsg = pref .. "lāc" data.pastsg = {pref .. "lēc", pref .. "leolc"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg data.pp = pref .. "lācen" return end local pref, vowel = rmatch(data.inf, "^(.-)sċ(e?ā)dan$") if not pref then pref, vowel = rmatch(data.inf, "^(.-)sċ(ēa)dan$") end if pref then -- sċ(e)ādan or sċēadan "separate" data.pres23 = pref .. "sċēad" data.impsg = pref .. "sċ" .. vowel .. "d" data.pastsg = {pref .. "sċēd", pref .. "sċēad"} data.pastpl = data.pastsg data.pp = pref .. "sċ" .. vowel .. "den" return end local pref, vowel = rmatch(data.inf, "^(.-)lǣtan$") if pref then -- lǣtan "let, allow" data.pres23 = pref .. "lǣt" data.impsg = pref .. "lǣt" data.pastsg = {pref .. "lēt", pref .. "leort"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg data.pp = pref .. "lǣten" return end local pref, vowel = rmatch(data.inf, "^(.-)ondrǣdan$") if pref then -- ondrǣdan "dread, fear" data.pres23 = pref .. "ondrǣd" data.impsg = pref .. "ondrǣd" data.pastsg = {pref .. "ondrēd", pref .. "ondreord"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg make_weak_past(data.extraforms, pref, "ondrǣdd") data.pp = pref .. "ondrǣden" return end local pref, vowel = rmatch(data.inf, "^(.-)rǣdan$") if pref then -- rǣdan "advise" data.pres23 = pref .. "rǣd" data.impsg = pref .. "rǣd" -- NOTE: Also (mostly) has weak past rǣdde and pp (ġe)rǣdd; can be handled -- by declaring the verb as both weak 1b and strong 7. data.pastsg = {pref .. "rēd", pref .. "reord"} -- FIXME, indicate latter as poetic data.pastpl = data.pastsg data.pp = pref .. "rǣden" return end local pref, vowel = rmatch(data.inf, "^(.-)slǣpan$") if pref then -- slǣpan "sleep" data.pres23 = pref .. "slǣp" data.impsg = pref .. "slǣp" data.pastsg = pref .. "slēp" data.pastpl = data.pastsg make_weak_past(data.extraforms, pref, "slǣpt") data.pp = pref .. "slǣpen" return end local pref, main = rmatch(data.inf, "^(.-)(gr[ǣē]t)an$") if pref then -- grǣtan "wail" data.pres23 = pref .. main data.impsg = pref .. main data.pastsg = pref .. "grēt" data.pastpl = data.pastsg data.pp = pref .. main .. "en" return end local pref = rmatch(data.inf, "^(.-)blandan$") if pref then -- blandan "mix" data.pres23 = pref .. "blend" data.impsg = pref .. "bland" data.pastsg = pref .. "blēnd" data.pastpl = data.pastsg data.pp = pref .. "blanden" return end local pref = rmatch(data.inf, "^(.-)ōn$") if pref then -- fōn "seize", hōn "hang" data.pres23 = pref .. "ēh" data.impsg = pref .. "ōh" data.pastsg = pref .. "ēng" data.pastpl = data.pastsg data.pp = {pref .. "angen"} return end -- Type (7b) verbs local pref = rmatch(data.inf, "^(.-)annan$") if pref then -- bannan "summon", spannan "join, clasp" data.pres23 = pref .. "enn" data.impsg = pref .. "ann" data.pastsg = {pref .. "ēonn", pref .. "ēon"} data.pastpl = data.pastsg data.pp = pref .. "annen" return end local pref = rmatch(data.inf, "^(.-)gangan$") if pref then -- gangan "go" data.pres23 = pref .. "geng" data.impsg = pref .. "gang" data.pastsg = {pref .. "ġēng", pref .. "ġīeng"} data.pastpl = data.pastsg data.pp = pref .. "gangen" return end local pref, suf = rmatch(data.inf, "^(.-)ea(" .. cons_c .. "+)an$") if pref then -- fealdan "fold", feallan "fall", healdan "hold", stealdan "possess", -- wealcan "roll", wealdan "rule", weallan "boil", weaxan "grow" data.pres23 = pref .. "ie" .. palatalize_final_cons(suf) data.impsg = pref .. "ea" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ea" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ā(" .. cons_c .. "+)an$") if pref then -- blāwan "blow", cnāwan "know", crāwan "crow", māwan "mow", sāwan "sow", -- swāpan "sweep", þrāwan "turn, twist", wāwan "blow" data.pres23 = pref .. "ǣ" .. palatalize_final_cons(suf) data.impsg = pref .. "ā" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ā" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ēa(" .. cons_c .. "+)an$") if pref then -- bēatan "beat", āhnēapan "pluck off", hēawan "hew", hlēapan "leap" data.pres23 = pref .. "īe" .. palatalize_final_cons(suf) data.impsg = pref .. "ēa" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ēa" .. suf .. "en" return end local pref, suf = rmatch(data.inf, "^(.-)ō(" .. cons_c .. "+)an$") if pref then if suf == "g" and pref:find("sw$") then -- swōgan "sound" data.pres23 = pref .. "ēġ" data.impsg = pref .. "ōg" data.pastsg = {} -- no preterite data.pastpl = {} data.pp = pref .. "ōgen" return end if suf == "c" and pref:find("fl$") or suf == "t" and rfind(pref, "[wƿ]r$") then -- flōcan "clap, strike", wrōtan "root up" data.pres23 = pref .. "ē" .. palatalize_final_cons(suf) data.impsg = pref .. "ō" .. suf data.pastsg = {} -- no preterite data.pastpl = {} data.pp = pref .. "ō" .. suf .. "en" return end -- blōtan "sacrifice", blōwan "bloom, blossom", hrōpan "shout", -- hwōpan "threaten", flōwan "flow", grōwan "grow", hlōwan "low, bellow", -- spōwan "succeed"; also rōwan "row", which has alt pret pl rēon data.pres23 = pref .. "ē" .. palatalize_final_cons(suf) data.impsg = pref .. "ō" .. suf data.pastsg = pref .. "ēo" .. suf data.pastpl = data.pastsg data.pp = pref .. "ō" .. suf .. "en" if (suf == "w" or suf == "ƿ") and pref:find("r$") and not pref:find("gr$") then -- rōwan "row" data.extraforms["pl_past_indc"] = {pref .. "ēon"} end return end local pref = rmatch(data.inf, "^(.-[wƿ])ēpan$") if pref then -- wēpan "weep"; j-present data.pres23 = pref .. "ēp" data.impsg = pref .. "ēp" data.pastsg = pref .. "ēop" data.pastpl = data.pastsg data.pp = pref .. "ōpen" return end end

local weak_verbs = {}

weak_verbs["1a"] = function(data) local pref = rmatch(data.inf, "^(.-)ian$") if pref then data.pres23 = pref .. "e" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end local pref, last_cons = rmatch(data.inf, "^(.-)([dt])%2an$") if pref then data.pres23 = pref .. last_cons data.impsg = data.pres23 .. "e" data.past = data.pres23 .. last_cons data.pp = {data.pres23 .. "ed", data.past, data.pres23} return end local pref = rmatch(data.inf, "^(.-)ċġe?an$") if pref then data.pres23 = pref .. "ġ" data.impsg = data.pres23 .. "e" data.past = data.pres23 .. "d" data.pp = {data.pres23 .. "ed", data.past} return end local pref = rmatch(data.inf, "^(.-)bban$") if pref then -- swebban etc. data.pres23 = pref .. "fe" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end local pref, last_cons = rmatch(data.inf, "^(.-)(.)%2an$") if not pref then pref, last_cons = rmatch(data.inf, "^(.-)(ċ)ċean$") end if pref then data.pres23 = pref .. last_cons .. "e" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end end

weak_verbs["1b"] = function(data) local pref, cons = rmatch(data.inf, "^(.-[rl])([wƿ])an$") if pref then -- ġierwan, hierwan, nierwan, sierwan, smierwan, wielwan (?) data.pres23 = pref .. "e" data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = {pref .. cons .. "ed", pref .. "ed"} return end local pref = rmatch(data.inf, "^(.-" .. cons_c .. "[rlmnwƿ])an$") if pref and not pref:find("[rl][mn]$") and not pref:find("rl$") and not rfind(pref, "(" .. cons_c .. ")%1$") then -- hyngran, dīeglan, bīecnan, þrysman, etc. data.pres23 = pref .. "e" data.impsg = data.pres23 local vowel = rmatch(pref, "^.-(" .. vowel_c .. "+)" .. single_cons_c .. "[rlmnwƿ]$") if vowel and not ends_in_long_vowel(vowel) then -- efnan, bytlan, eġlan, ræfnan, seġlan, þrysman; form without -ed is older data.past = {pref .. "d", pref .. "ed"} else -- dīeglan, forglendran, wrixlan, frēfran, timbran, symblan, etc. data.past = pref .. "ed" end data.pp = pref .. "ed" return end if data.inf:find("ēan$") or rfind(data.inf, vowel_c .. "n$") and not data.inf:find("an$") then -- contracted verb, e.g. hēan, þēon, tȳn, rȳn, þȳn -- FIXME, verify in Campbell that all of the following are correct data.pres23 = data.presa data.impsg = data.presa data.past = data.presa .. "d" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)an$") if pref then data.pres23 = {pref .. "e", pref} data.impsg = pref data.past = construct_cons_stem_ending(pref, "d") data.pp = pref .. "ed" return end end

weak_verbs["1"] = function(data) local weaktype if data.inf:find("ian$") then weaktype = "1a" elseif rfind(data.inf, "(" .. cons_c .. ")%1an$") or data.inf:find("ċċean$") or data.inf:find("cgan$") or data.inf:find("ċġan$") then local prev = rmatch(data.inf, "^(.-)....$") if rfind(prev, vowel_c .. "$") and not ends_in_long_vowel(prev) then weaktype = "1a" else weaktype = "1b" end else weaktype = "1b" end weak_verbs[weaktype](data) end

weak_verbs["2"] = function(data) -- lufian local pref = rmatch(data.inf, "^(.-)ian$") if not pref then -- lufiġan, lufeġan, lufiġean, lufeġean (alternative spellings) pref = rmatch(data.inf, "^(.-)[ei]ġe?an$") end if pref then data.pres23 = pref .. "a" data.impsg = data.pres23 data.past = pref .. "od" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)ġe?an$") if pref then -- twēoġan, smēaġ(e)an data.pres23 = pref data.impsg = data.pres23 data.past = data.pres23 .. "d" data.pp = data.past return end end

weak_verbs["3"] = function(data) local pref = rmatch(data.inf, "^(.-)abban$") if pref then data.prese = pref .. "æbbe" data.pres23 = pref .. "æf" data.impsg = pref .. "afa" data.past = pref .. "æfd" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)libban$") if pref then -- libban, compounds data.pres23 = pref .. "leofa" data.impsg = data.pres23 data.past = pref .. "lifd" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)seċġe?an$") if pref then -- seċġan, compounds data.pres23 = pref .. "sæġ" data.impsg = pref .. "sæġe" data.past = pref .. "sæġd" data.pp = data.past return end local pref = rmatch(data.inf, "^(.-)hyċġe?an$") if pref then -- hyċġan, compounds data.pres23 = pref .. "hyġ" data.impsg = pref .. "hyġe" data.past = pref .. "hogd" data.pp = data.past return end end

local function make_irregular_non_past(args, inf, pref, pres1, pres2, pres3, prespl,	presp, subj, impsg, imppl, pp, with_ge) add_ending(args, "infinitive", inf, "") add_ending_with_prefix(args, "infinitive2", pref, presp, "ne") add_ending_with_prefix(args, "1sg_pres_indc", pref, pres1, "") add_ending_with_prefix(args, "2sg_pres_indc", pref, pres2, "") add_ending_with_prefix(args, "3sg_pres_indc", pref, pres3, "") add_ending_with_prefix(args, "pl_pres_indc", pref, prespl, "") add_ending_with_prefix(args, "sg_pres_subj", pref, subj, "") add_ending_with_prefix(args, "pl_pres_subj", pref, subj, "n") add_ending_with_prefix(args, "sg_impr", pref, impsg, "") add_ending_with_prefix(args, "pl_impr", pref, imppl, "") add_ending_with_prefix(args, "pres_ptc", pref, presp, "de") if with_ge then add_ending_with_prefix(args, "past_ptc", pref, pp, "", construct_optional_ge_stem_ending) else add_ending_with_prefix(args, "past_ptc", pref, pp, "") end end

-- Construct all preterite-present forms. Each of the arguments can be a single string or list. -- If a given argument is missing, supply an empty list {}. -- Arguments: -- INF: Infinitive. -- PREF: Prefix to add to all forms other than the infinitive. -- PRES13: 1st/3rd singular present form. -- PRES2: 2nd singular present form. -- PRESPL: Plural present form. -- PRESP: Present participle stem (up through -en, missing final -de; also used to construct --       second infinitive by adding -ne) -- SUBJ: Singular present subjunctive form (also used to construct plural subjunctive by adding -n) -- IMPSG: 2nd singular imperative form. -- IMPPL: 2nd plural imperative form. -- PAST: Stem of past tense. -- PP: Past participle. local function make_preterite_present_forms(inf, pref, pres13, pres2, prespl,	presp, subj, impsg, imppl, past, pp, with_ge) local args = {} make_irregular_non_past(args, inf, pref, pres13, pres2, pres13, prespl, presp, subj,		impsg, imppl, pp, with_ge) make_weak_past(args, pref, past) return args end

local function make_preterite_present(inf, with_ge) local pref, vowel = rmatch(inf, "^(.-[wƿn])([iy])[oe]?tan$") if pref then return make_preterite_present_forms(			inf, pref, "āt", "āst", vowel .. "ton", vowel .. "ten",			vowel .. "te", vowel .. "te", vowel .. "taþ", {vowel .. "ss", vowel .. "st"},			vowel .. "ten", with_ge) end local pref = rmatch(inf, "^(.-)dugan$") if pref then return make_preterite_present_forms(			inf, pref, "dēag", "dēaht", "dugon", "dugen", "dyġe", "dyġe", "dugaþ", "doht", {}, with_ge) end local pref = rmatch(inf, "^(.-)cunnan$") if pref then return make_preterite_present_forms(			inf, pref, "cann", "canst", "cunnon", "cunnen", "cunne",			"cunne", "cunnaþ", "cūþ", "cunnen", with_ge) end local pref = rmatch(inf, "^(.-)unnan$") if pref then return make_preterite_present_forms(			inf, pref, "ann", "anst", "unnon", "unnen", "unne", "unne", "unnaþ", "ūþ", "unnen", with_ge) end local pref = rmatch(inf, "^(.-[þð])urfan$") if pref then return make_preterite_present_forms(			inf, pref, "earf", "earft", "urfon", "earfen", "yrfe", "yrfe", "urfaþ", "orft", {}, with_ge) end local pref = rmatch(inf, "^(.-)durran$") if pref then return make_preterite_present_forms(			inf, pref, "dearr", "dearst", "durron", {}, "dyrre", "dyrre", "durfaþ",			"dorst", {}, with_ge) end local pref = rmatch(inf, "^(.-)sċulan$") if not pref then pref = rmatch(inf, "^(.-)sċeolan$") end if pref then return make_preterite_present_forms(			inf, pref, "sċeal", "sċealt", "sċulon", {}, "sċyle",			{}, {}, "sċold", {}, with_ge) end local pref = rmatch(inf, "^(.-)munan$") if pref then return make_preterite_present_forms(			inf, pref, "man", "manst", "munon", "munen", "myne",			{"mun", "myne"}, "munaþ", "mund", "munen", with_ge) end local pref = rmatch(inf, "^(.-)magan$") if pref then return make_preterite_present_forms(			inf, pref, "mæġ", "meaht", "magon", "magen", "mæġe", {}, {},			{"meaht", "meht"}, {}, with_ge) end local pref = rmatch(inf, "^(.-)nugan$") if pref then return make_preterite_present_forms(			inf, pref, "neah", {}, "nugon", {}, "nuge", {}, {}, "noht", {}, with_ge) end local pref = rmatch(inf, "^(.-)mōtan$") if pref then return make_preterite_present_forms(			inf, pref, "mōt", "mōst", "mōton", {}, "mōte", {}, {}, "mōst", {}, with_ge) end local pref = rmatch(inf, "^(.-)āgan$") if pref then return make_preterite_present_forms(			inf, pref, "āh", "āhst", "āgon", "āgen", "āge", "āge", "āgaþ", "āht", "āgen", with_ge) end error("Unrecognized preterite-present verb: " .. inf) end

local function make_irregular(inf, with_ge) local args = {} local pref, cons = rmatch(inf, "^(.-)([wƿ])esan$") if pref then make_irregular_non_past(args, inf, pref, "eom", "eart", "is", {"sind", "sindon"},			cons .. "esen", "sīe", cons .. "es", cons .. "esaþ", {}, with_ge) make_strong_past(args, pref, cons .. "æs", cons .. "ǣr") return args end local pref = rmatch(inf, "^(.-)nesan$") if pref then make_irregular_non_past(args, inf, pref, "neom", "neart", "nis", {"ne sind", "ne sindon"},			"nesen", "ne sīe", "nes", "nesaþ", {}, with_ge) make_strong_past(args, pref, "næs", "nǣr") return args end local pref, vowel = rmatch(inf, "^(.-)b([īē]o)n$") if pref then make_irregular_non_past(args, inf, pref, "b" .. vowel, "bist", "biþ", "b" .. vowel .. "þ",			"b" .. vowel .. "n", "b" .. vowel, "b" .. vowel, "b" .. vowel .. "þ", "b" .. vowel .. "n", with_ge) return args end local pref = rmatch(inf, "^(.-)dōn$") if pref then make_irregular_non_past(args, inf, pref, "dō", "dēst", "dēþ", "dōþ", "dōn",			"dō", "dō", "dōþ", "dōn", with_ge) make_weak_past(args, pref, "dyd") return args end local pref = rmatch(inf, "^(.-)gān$") if pref then make_irregular_non_past(args, inf, pref, "gā", "gǣst", "gǣþ", "gāþ", "gān",			"gā", "gā", "gāþ", "gān", with_ge) make_weak_past(args, pref, "ēod") return args end local pref = rmatch(inf, "^(.-[wƿ])illan$") if pref then make_irregular_non_past(args, inf, pref, "ille", "ilt", "ile", "illaþ", "illen",			"ille", {}, {}, {}, with_ge) make_weak_past(args, pref, "old") return args end local pref, vowel = rmatch(inf, "^(.-)n([eiy])llan$") if pref then make_irregular_non_past(args, inf, pref, "n" .. vowel .. "lle", "n" .. vowel .. "lt",			"n" .. vowel .. "le", "n" .. vowel .. "llaþ",			"n" .. vowel .. "llen", "n" .. vowel .. "lle",			{}, {}, {}, with_ge) make_weak_past(args, pref, "nold") return args end error("Unrecognized irregular verb: " .. inf) end

local function set_categories(typ, class) local cats = {} local classtext = class and "class " .. class .. " " or "" if typ == "strong" then table.insert(cats, "Old English " .. classtext .. "strong verbs") elseif typ == "weak" then table.insert(cats, "Old English " .. classtext .. "weak verbs") elseif typ == "pretpres" then table.insert(cats, "Old English preterite-present verbs") elseif typ == "irreg" or typ == "anomalous" then table.insert(cats, "Old English irregular verbs") elseif typ then error("Unrecognized verb type: " .. typ) end return cats end

function export.show(frame) local parent_args = frame:getParent.args local params = { [1] = {required = true, list = true, default = "beran"}, }	for slot, _ in pairs(slots_and_accel) do		params[slot] = {} end local args = require("Module:parameters").process(parent_args, params) local allforms local allcats = {} if #args[1] > 1 then table.insert(allcats, "Old English verbs with multiple conjugations") end for _, infspec in ipairs(args[1]) do		local inf, spec = rmatch(infspec, "^(.-)<(.*)>$") if not inf then error("Verb spec should look like e.g. 'beran' or 'dēman': " .. infspec) end local specs = rsplit(spec, "/") local class = specs[1] local verner = rfind(class, "v") class = gsub(class, "v", "") local presa = gsub(inf, "n$", "") data = { inf = inf, presa = presa, prese = presa:find("ēa$") and presa or gsub(presa, "e?a$", "e"), verner = verner, with_ge = not begins_with_verbal_prefix(inf), extraforms = {}, }		local typ if class:find("^s") then typ = "strong" class = gsub(class, "^s", "") if strong_verbs[class] then strong_verbs[class](data) else error("Unrecognized strong class: " .. class) end elseif class:find("^w") then typ = "weak" class = gsub(class, "^w", "") if weak_verbs[class] then weak_verbs[class](data) else error("Unrecognized weak class: " .. class) end elseif class == "pp" then typ = "pretpres" elseif class == "i" then typ = "irreg" else error("Unrecognized verb class: " .. class) end

local overrides = {} for i, spec in ipairs(specs) do			if i > 1 then local parts = rsplit(spec, ":") if #parts ~= 2 then error("Verb modified spec must be of the form 'KEY:VALUE': " .. spec) end local k = parts[1] local v = parts[2] local splitv = rsplit(v, ", *") local unrecognized = false if slots_and_accel[k] then overrides[k] = splitv elseif k == "ge" then data.with_ge = require("Module:yesno")(v) elseif k == "impers" then data.impers = require("Module:yesno")(v) elseif typ == "weak" or typ == "strong" then if k == "pres" then data.presa = splitv data.prese = splitv data.pres23 = splitv data.impsg = splitv elseif k == "pres1456" then data.presa = splitv data.prese = splitv elseif k == "pres23" then data.pres23 = splitv elseif k == "presa" then data.presa = splitv elseif k == "prese" then data.prese = splitv elseif typ == "strong" and k == "past" then data.pastsg = splitv data.pastpl = splitv elseif typ == "weak" and k == "past" then data.past = splitv elseif typ == "strong" and k == "pastsg" then data.pastsg = splitv elseif typ == "strong" and k == "pastpl" then data.pastpl = splitv elseif k == "impsg" then data.impsg = splitv elseif k == "pp" then data.pp = splitv elseif typ == "weak" and k == "papp" then data.past = splitv data.pp = splitv else unrecognized = true end else unrecognized = true end if unrecognized then error("Unrecognized spec key '" .. k .. "' (value '" .. v .. "')")				end end end

if typ == "weak" or typ == "strong" then local missing_fields = {} local fields_to_check = typ == "weak" and {"presa", "prese", "pres23", "impsg", "past", "pp"} or				{"presa", "prese", "pres23", "impsg", "pastsg", "pastpl", "pp"} for _, field in ipairs(fields_to_check) do				if not data[field] then table.insert(missing_fields, field) end end if #missing_fields > 0 then error("Required spec(s) " .. table.concat(missing_fields, ",") ..					" missing, i.e. the form of the infinitive '" .. inf ..					"' was not recognized as a " .. typ .. " class-" .. class .. " verb and the " ..					"overriding specs weren't (all) supplied") end end local forms if typ == "strong" then forms = make_strong(data.presa, data.prese, data.pres23, data.impsg, data.pastsg,				data.pastpl, data.pp, data.with_ge) elseif typ == "weak" then forms = make_weak(data.presa, data.prese, data.pres23, data.impsg, data.past,				data.pp, data.with_ge) elseif typ == "pretpres" then forms = make_preterite_present(inf, data.with_ge) elseif typ == "irreg" then forms = make_irregular(inf, data.with_ge) else error("Internal error: Unrecognized verb type: " .. typ) end for k, v in pairs(data.extraforms) do			add_form_to_slot(forms, k, v)		end for k, v in pairs(overrides) do			forms[k] = v		end if data.impers then -- e.g. mǣtan; clear personal non-3sg forms forms["1sg_pres_indc"] = {} forms["2sg_pres_indc"] = {} forms["pl_pres_indc"] = {} forms["pl_pres_subj"] = {} forms["1sg_past_indc"] = {} forms["2sg_past_indc"] = {} forms["pl_past_indc"] = {} forms["pl_past_subj"] = {} forms["sg_impr"] = {} forms["pl_impr"] = {} end

class = rsub(class, "[a-z]", "") if class == "" then class = nil end if not allforms then allforms = forms allforms["type"] = typ allforms["class"] = class else for k, v in pairs(forms) do				for _, form in ipairs(v) do					ut.insert_if_not(allforms[k], form) end end end local cats = set_categories(typ, class) for _, cat in ipairs(cats) do			ut.insert_if_not(allcats, cat) end end local table = make_table(allforms) return table .. m_utilities.format_categories(allcats, lang) end

return export

title: Module:User:Benwing2/ang-verb


text:
Rhymes:English/ɔːlɪk

Pronunciation
,

Two syllables

 * aulic
 * Gaulic
 * Maulik
 * Paulick

Three syllables

 * diaulic
 * hydraulic
 * monaulic
 * pneudraulic
 * triaulic
 * Victaulic

Four syllables

 * ethnophaulic
 * interaulic

Five syllables

 * androdiaulic
 * oodiaulic

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Rhymes:English/ɔːlɪk


title: User:Benwing2/ang-weak


title: User:Benwing2/test-ang-weak


text:
Blacktown

Etymology
From.

title: Blacktown


text:
Rhymes:English/ɔːltɪk

Pronunciation
,

Two syllables

 * Baltic

Three syllables

 * airBaltic
 * basaltic
 * cobaltic

Five syllables

 * metabasaltic
 * trachybasaltic
 * xanthocobaltic

Six syllables

 * alkalibasaltic

title: Rhymes:English/ɔːltɪk


text:
Rhymes:English/ɔːnɪk

Pronunciation
,

Three syllables

 * Maunick

Three syllables

 * ceraunic, keraunic
 * IRAWniQ

Five syllables

 * isoceraunic, isokeraunic

title: Rhymes:English/ɔːnɪk


text:
ဘီးကြယ်

Noun

 * 1)  referring to older people, especially those over the age of 40 and yet still partying, womanizing, and keeping up to date with the latest fashion trends.

title: ဘီးကြယ်


text:
ပလပ်ကြွတ်

Phrase

 * 1)  used to say that something is not in good shape.

title: ပလပ်ကြွတ်


text:
Talk:frontal

direct and forceful
direct, forceful, and intended to be overwhelming He made a frontal attack on her political opponent Microsoft® Encarta® 2009 --Backinstadiums (talk) 11:41, 24 November 2019 (UTC)

title: Talk:frontal


text: Template:el-char

title: Template:el-char


text:
Reconstruction:Proto-Slavic/ranъ

Etymology
Possibly related to 🇨🇬 and 🇨🇬. Further etymology unclear.

Adjective

 * 1) early

Inflection
Accent paradigm a or c.

Descendants

 * East Slavic:
 * Belarusian:
 * Ukranian: ,
 * South Slavic:
 * West Slavic:
 * Pomeranian:
 * Sorbian:
 * West Slavic:
 * Pomeranian:
 * Sorbian:
 * West Slavic:
 * Pomeranian:
 * Sorbian:
 * Pomeranian:
 * Sorbian:
 * Pomeranian:
 * Sorbian:
 * Pomeranian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:

title: Reconstruction:Proto-Slavic/ranъ


text:
Reconstruction:Proto-Slavic/pozdьnъ

Etymology
Formed from an earlier (compared 🇨🇬, dialectal 🇨🇬, ), from. Akin to 🇨🇬.

Adjective

 * 1) late, posterior in time
 * 2) languid, tardy with slow, idle, delayed effect or reaction
 * 1) languid, tardy with slow, idle, delayed effect or reaction

Inflection
Accent paradigm b

Descendants

 * East Slavic:
 * South Slavic:
 * Serbo-Croatian:
 * West Slavic:
 * Sorbian:
 * Serbo-Croatian:
 * West Slavic:
 * Sorbian:
 * West Slavic:
 * Sorbian:
 * West Slavic:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:
 * Sorbian:

title: Reconstruction:Proto-Slavic/pozdьnъ


text:
Reconstruction:Proto-Slavic/cęta

Etymology
Probably from.

Noun

 * 1) small coin

Descendants
undefined
 * East Slavic:
 * South Slavic:
 * Church Slavonic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * Non-Slavic:

authors: Илья А. Латушкин

title: Reconstruction:Proto-Slavic/cęta


text:
Talk:flit

be briefly present
to be briefly present or visible Microsoft® Encarta® 2009 --Backinstadiums (talk) 12:21, 24 November 2019 (UTC)

title: Talk:flit


text:
Pei-p'ing

Etymology
From romanization of.

Proper noun

 * 1)  Beijing.

title: Pei-p'ing


text:
jõuluturg

Noun

 * 1) Christmas market

title: jõuluturg


text:
Talk:sylvan

rural
characteristic of the countryside, especially in an idyllic way Microsoft® Encarta® 2009 --Backinstadiums (talk) 12:38, 24 November 2019 (UTC)

title: Talk:sylvan


text:
kiikuma

Etymology
From, possibly onomatopoeic. Cognate with 🇨🇬 and 🇨🇬.

Verb

 * 1)  to swing, to seesaw
 * 2) To move back and forth on a swing or a seesaw.
 * 3) To waveringly, swayingly move back and forth or up and down.
 * 1) To waveringly, swayingly move back and forth or up and down.

title: kiikuma


text:
Talk:ideal

imaginary object or concept
A concept that exists in the imagination only Microsoft® Encarta® 2009 --Backinstadiums (talk) 12:51, 24 November 2019 (UTC)

title: Talk:ideal


text:
iytan

Etymology
From.

Noun

 * 1) mush, mash

title: iytan


text: kiikuda

title: kiikuda


text: tasukaru

title: tasukaru


text: shénmiào

title: shénmiào


text: rézbe

title: rézbe


text: réznek

title: réznek


text: réznél

title: réznél


text: rézen

title: rézen


text: rézre

title: rézre


text: rézhez

title: rézhez


text:
iadflingo

Etymology
From.

Verb

 * 1) to scalp

title: iadflingo


text: rézből

title: rézből


text: rézről

title: rézről


text: rézzé

title: rézzé


text: rézért

title: rézért


text: rézzel

title: rézzel


text: rézként

title: rézként


text:
blingo

Verb

 * 1) to skin, to flay

title: blingo


text: rézig

title: rézig


text: rezet

title: rezet


text: bùdéyàolǐng

title: bùdéyàolǐng


text: réztől

title: réztől


text: bǐfǎ

title: bǐfǎ


text:
valkyrje

Etymology
, from.

Noun

 * 1)  a valkyrie; female attendant of Odin that leads fallen warriors to Valhalla

Etymology
, from.

Noun

 * 1)  a valkyrie; female attendant of Odin that leads fallen warriors to Valhalla

title: valkyrje


text:
qaralamaq

Etymology 1
From.

Verb

 * 1) to blacken to cause to be or become black
 * 2) to cross out, to strike out, to strike off, to strike through
 * 3) to soil, to stain, to dirty, to smut
 * 4) to shade, to make shadows on (a painting)
 * 5)  to denigrate, slander, to calumniate, to libel, to besmirch

Etymology 2
Cognate with 🇨🇬.

Verb

 * 1)  to stare
 * 2)  to ponder, to think about (something) carefully and thoroughly
 * 1)  to ponder, to think about (something) carefully and thoroughly

title: qaralamaq


text: szántok

title: szántok


text: szántunk

title: szántunk


text: szántalak

title: szántalak


text:
szántatok

Etymology 2
, from

title: szántatok


text:
dəqiq

Etymology
From.

Adjective

 * 1) accurate
 * 2) precise, exact
 * 3) prompt, punctual, thorough

title: dəqiq


text: Bìsònglóu

title: Bìsònglóu


text: harfler

title: harfler


text: harflar

title: harflar


text:
harfi

Noun

 * 1) definite accusative form of harf

title: harfi


text: ayollar

title: ayollar


text:
oktabr

Etymology
, from.

title: oktabr


text:
დუშანბე

Proper noun

 * 1) Dushanbe, the capital of Tajikistan

title: დუშანბე


text: Category:Moroccan Arabic demonstrative adverbs


text:
đáng thương

Etymology
.

Adjective

 * 1) pitiful; pitiable

Usage notes

 * Not to be confused with and.

title: đáng thương


text:
Reconstruction:Proto-Slavic/bojьnъ

Etymology
Formed as, from.

Adjective

 * 1)  military

Descendants

 * East Slavic:
 * South Slavic:
 * West Slavic:
 * South Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:

title: Reconstruction:Proto-Slavic/bojьnъ


text:
ἐλέγχω

Etymology
From, from.

Verb

 * 1)  to disgrace, put to shame
 * 2)  to cross-examine, question
 * 3)  to test, bring to the proof

title: ἐλέγχω


text:
Reconstruction:Proto-Slavic/bojьcь

Etymology
Agent noun of, from.

Noun

 * 1)  fighter

Descendants

 * East Slavic:
 * South Slavic:
 * West Slavic:
 * South Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:
 * West Slavic:

title: Reconstruction:Proto-Slavic/bojьcь


text:
Stufenbarren

Noun

 * 1)  uneven bars

title: Stufenbarren


text:
posaunen

Etymology
From ;.

Verb

 * 1) to play the trumpet

title: posaunen


text:
Reconstruction:Proto-Slavic/bojevъ

Etymology
Formed as, from.

Adjective

 * 1)   militant, combatant

Descendants

 * East Slavic:
 * South Slavic:
 * West Slavic:
 * South Slavic:
 * West Slavic:
 * West Slavic:

title: Reconstruction:Proto-Slavic/bojevъ


text:
vorfordern

Verb

 * 1)  to summon

title: vorfordern


text:
名學

Noun

 * 1)  famous scholar
 * 2)  logic as a field of study
 * 1)  logic as a field of study

title: 名學


text: 名学

title: 名学


text: Category:Requests for etymologies in Champenois entries


text:
Fort Madison

Etymology
Originally a fort named after President.

title: Fort Madison


text: Category:Requests concerning Champenois

title: Category:Requests concerning Champenois


text:
Reconstruction:Proto-Slavic/stęgъ

Etymology
Probably borrowed from, ultimately from 🇨🇬, synonymous with South Slavic. Not all authors agree that the two forms are genetically related, despite their identical meaning.

title: Reconstruction:Proto-Slavic/stęgъ


text:
lonso

Etymology
From ; compare 🇨🇬, 🇨🇬.

Noun

 * 1) bear
 * 2) a stupid person

title: lonso


text:
fortnehmen

Etymology
From de. Compare 🇨🇬,.

Verb

 * 1) to take away
 * 2) * 1901, Max Henning, Der Koran, 4:20 (with Yusuf Ali's translation)
 * "de"

- Und so ihr eine Gattin gegen eine andere eintauschen wollt und ihr habt der einen ein Talent gegeben, so nehmt nichts von ihm fort. Wolltet ihr es etwa fortnehmen in Verleumdung und offenbarer Sünde?

title: fortnehmen


text:
ntị

Etymology
Cognate with 🇨🇬, 🇨🇬. Compare also with 🇨🇬.

Noun

 * 1) ear

title: ntị


text:
körpə

Etymology
From. Cognates with 🇨🇬, 🇨🇬, etc.

Noun

 * 1) infant, baby

title: körpə


text: Antheil

title: Antheil


text: Antheile

title: Antheile


text: Antals

title: Antals


text: Antales

title: Antales


text: Antale

title: Antale


text: Antels

title: Antels


text: Anteles

title: Anteles


text: Antele

title: Antele


text: Anthal

title: Anthal


text: Anthals

title: Anthals


text: Anthales

title: Anthales


text: Anthale

title: Anthale


text:
llatai

Etymology
From or.

Noun

 * 1) love messenger, go-between

title: llatai


text: Anthel

title: Anthel


text: Anthels

title: Anthels


text: Antheles

title: Antheles


text: Anthele

title: Anthele


text: Antheils

title: Antheils


text: Antheiles

title: Antheiles


text: Lati

title: Lati


text:
Talk:四字熟語

Comment
The usage notes added in this edit is of encyclopedic nature. Compare "how an idiom is used" and "how to use the word 'idiom' in a sentence". Compare also "how a camera is used" and "how to use the word 'camera' in a sentence". An encyclopedia would provide an answer to the former while a dictionary would provide an answer to the latter. KevinUp (talk) 15:58, 24 November 2019 (UTC)
 * Well, it does help clarify the definition. "Is this a yojijukugo?" —Suzukaze-c◇◇ 00:42, 25 November 2019 (UTC)
 * How do you like 下二段活用? -- Huhu9001 (talk) 01:56, 25 November 2019 (UTC)
 * Very well, the usage notes can be kept, but please get someone to check your grammar. Compare the original sentence in Wikipedia:

"Yojijukugo in the broad sense simply means any Japanese compound words consisting of four kanji characters. In the narrow or strict sense, however, the term refers only to four-kanji compounds that have a particular (idiomatic) meaning that cannot be inferred from the meanings of the components that make them up."
 * I'm not sure whether statements such as "opinions on what is camera varies considerably" helps to clarify the definition of though. KevinUp (talk) 02:24, 25 November 2019 (UTC)
 * Also, the second sentence "Typically read using ..." is missing its subject, so some readers might interpret it as "The word camera is typically read using ..." rather than "Cameras are typically read using ..." (substitute "camera" with "四字熟語" to see what I mean). KevinUp (talk) 02:34, 25 November 2019 (UTC)
 * I don't know. Are "what is camera" or "what camera is " that different? -- Huhu9001 (talk) 02:46, 25 November 2019 (UTC)
 * I've fixed the grammar. Yes, there's a difference between the two. The former is a question while the latter is a statement, e.g. "What is a camera?" (question) and "Dad told me what a camera is." (statement). KevinUp (talk) 02:56, 25 November 2019 (UTC)
 * Obviously your description is not correct. "what" = "the thing that".

 * "what is a camera" == "the thing that is a camera"
 * "what a camera is" == "the thing that a camera is"
 * Both are okay. -- Huhu9001 (talk) 09:03, 25 November 2019 (UTC)
 * Can you add punctuation and capitalization to the sentences above? Are these complete sentences or part of a long sentence? Are these questions or statements? Please add the subject to the examples above if it is intended to be interpreted as such. If you want to discuss English grammar please add punctuation and capitalization because punctuation can change the meaning of a sentence in English. KevinUp (talk) 09:15, 25 November 2019 (UTC)

title: Talk:四字熟語


text: よじじゅくご

title: よじじゅくご


text:
Rhymes:English/ɔː(ɹ)dʒɪk

Pronunciation
,

Two syllables

 * georgic
 * orgic

title: Rhymes:English/ɔː(ɹ)dʒɪk


text:
einherje

Noun

 * 1)  einherjar; warriors who died in battle and were brought to valhalla

Etymology
..

Noun

 * 1)  one of the einherjar; a warrior who died in battle and was brought to Valhalla

title: einherje


text: Category:Norwegian Bokmål learned borrowings


text: Category:Norwegian Nynorsk terms borrowed from Old Norse


text: Category:Norwegian Nynorsk learned borrowings


text:
uymaq

Etymology 1
From. Compare 🇨🇬.

Verb

 * 1) to correspond, to conform, to agree, to comply, to be in line with, to fit
 * 2) to give in to
 * 1) to give in to
 * 1) to give in to

Etymology 2
Possibly from etymology 1.

Verb

 * 1) to take an interest in, to get carried away by
 * 2) to feel attracted to, to fall in love with
 * 3) to get seduced by, to succumb to the temptation of, not to be able to resist
 * 4) to indulge
 * 5) to give way to, to succumb to something negative
 * 1) to indulge
 * 2) to give way to, to succumb to something negative
 * 1) to give way to, to succumb to something negative

title: uymaq


text: παισί

title: παισί


text:
Talk:chesed

Enduring and Faithful
I’ve heard it emphasized that Chesed has a timelessness nature which lasts beyond the moment. The faithfulness and enduring nature of Chesed is indicative of its source. How much of this hyperbole and oratory and how much is an inherent part of the word’s meaning ? Bcent1234 (talk) 16:46, 24 November 2019 (UTC)

title: Talk:chesed


text: Category:Arabic location adverbs

title: Category:Arabic location adverbs


text: παισίν

title: παισίν


text: Category:Moroccan Arabic location adverbs


text:
Rhymes:English/ɔː(ɹ)lɪk

Pronunciation
,

Two syllables

 * gorlic
 * Horlick
 * Orlik
 * Orlyk
 * Warlick

Three syllables

 * McGorlick

title: Rhymes:English/ɔː(ɹ)lɪk


text:
ishq

Etymology
.

Noun

 * 1) love

title: ishq


text:
Rhymes:English/ɔː(ɹ)nɪk

Pronunciation
,

Two syllables

 * cornic
 * Cornick
 * Dornick
 * dornick
 * Dornik
 * Dvornik
 * dvornik
 * Dwornik
 * Gornick
 * Gornik
 * Hornick
 * Hornik
 * Kornick
 * Pornic
 * Skornik
 * Warnick
 * Wornik
 * Zornik
 * Zvornik

Three syllables

 * Izvornik
 * Javornik
 * Jeziornik
 * Piskornik
 * van Dornicke

Four syllables

 * unicornic

Five syllables

 * Stary Jawornik

title: Rhymes:English/ɔː(ɹ)nɪk


text:
Talk:th'

there
Just as we have there's: Contraction of there is, what contractions does th' allow? --Backinstadiums (talk) 17:05, 24 November 2019 (UTC)

title: Talk:th'


text:
Rhymes:English/ɔː(ɹ)sɪk

Pronunciation
,

Two syllables

 * borsic
 * Worswick

title: Rhymes:English/ɔː(ɹ)sɪk


text:
User:Tom 144/abšānu

Noun

 * 1) rope

title: User:Tom 144/abšānu


text: desiderosus

title: desiderosus


text:
Rhymes:English/ɔː(ɹ)stɪk

Pronunciation
,

Two syllables

 * fore-stick, forestick
 * Korstick
 * Warstick

title: Rhymes:English/ɔː(ɹ)stɪk


text:
Rhymes:English/ɔː(ɹ)θɪk

Pronunciation
,

Two syllables

 * orthic

Three syllables

 * anorthic
 * pedorthic

title: Rhymes:English/ɔː(ɹ)θɪk


text:
Schwebebalken

Noun

 * 1)  balance beam

title: Schwebebalken


text:
דעיע

Determiner

 * 1)  this, that

title: דעיע


text:
דעיס

Pronoun

 * 1)  this, that

title: דעיס


text:
Rhymes:English/ɔː(ɹ)tʃɪk

Pronunciation
,

Two syllables

 * Dworczyk
 * Florczyk
 * Gbiorczyk
 * Korczyk
 * Torchic

Three syllables

 * Grzegorczyk
 * Łazorczyk
 * Michorczyk
 * Stasiorczyk
 * Wypiorczyk

Four syllables

 * Teodorczyk

title: Rhymes:English/ɔː(ɹ)tʃɪk


text:
Rhymes:English/ɔː(ɹ)vɪk

Pronunciation
,

Two syllables

 * Aarvik
 * Forvik
 * Noorvik
 * Norvik
 * Jorvik, Yorvik
 * Rorvik
 * Storvik
 * Torvic
 * Torvik

title: Rhymes:English/ɔː(ɹ)vɪk


text:
Mindesthaltbarkeitsdatum

Noun

 * 1) expiry date, best-before date
 * 2) shelf life

title: Mindesthaltbarkeitsdatum


text:
ปล่อยของ

Etymology
From 🇰🇲.

Noun

 * 1)  to perform a ritual in order to send a magical object to harm someone.
 * 2)  to show one's ability or skill.

title: ปล่อยของ


text:
Rhymes:English/ɔːsɪk

Pronunciation
,

Two syllables

 * glaucic

Three syllables

 * banausic

title: Rhymes:English/ɔːsɪk


text:
User:Tom 144/abu

Etymology
From.

Noun

 * 1) father

title: User:Tom 144/abu


text: United Kingdom Independence Party

title: United Kingdom Independence Party


text:
إينا

Etymology
Compare 🇨🇬 and 🇨🇬.

Determiner

 * 1)  which?

title: إينا


text:
Rhymes:English/ɔːtɪk

Pronunciation
,

Two syllables

 * nautic

Three syllables

 * philautic

Four syllables

 * aeronautic
 * Aquanautic
 * Argonautic, argonautic
 * astronautic
 * cosmonautic
 * cybernautic
 * Hadhramautic, Hadramautic

Six syllables

 * bio-astronautic, bioastronautic

title: Rhymes:English/ɔːtɪk


text:
Rhymes:English/ɔːzɪk

Pronunciation
,

Three syllables

 * banausic

Four syllables

 * menopausic

title: Rhymes:English/ɔːzɪk


text: Category:Cities in Aomori Prefecture

title: Category:Cities in Aomori Prefecture


text:
Article 50

Noun

 * 1)  Article 50 of the Treaty of Lisbon which holds the EU's exit clause, allowing and setting out rules for countries leaving the European Union.

title: Article 50


text:
exit clause

Noun

 * 1)  A provision in a legal document or lease allowing a signatory or lessee to terminate the contract legally and usually without penalty under certain circumstances.

title: exit clause


text:
imádkozó

Adjective

 * 1) praying

title: imádkozó