this python script generates words that could plausibly exist (some more
plausibly than others) within the conventions of english orthography

examples
bazzy schossler thwompser twass trebbery shroant ewk seach gluntse leph gwouque shrowk dwolver krowsk mawl cassler vrenkle scrolve royth nypfy bweeze plauph tewnt fwulsy dwempse glix frawp rusp floax gwysp zhoop spewgh chauft gleigh greeque clount steast sluph stwanx vlupst sclound scaythler shroith bweanse twausslery spyspler strell zolve thwy snigler throasque prygery doafsy flisk sloob flewsque trestler glownt voff cysp kraulch cleench sloash creystler breckle gloumpse bwiph shabbler frowdge imble screwly thrapse fough vylch kreegsy saumpy squammery glounch shwink thost gwulver sool spowthy eepty chrew sanser squeap kleth sclyver shansed blisks quaiff boabsy drasp tud bonx stroof throag frakle sclosk scraight groath tantsy freeg shront rentler froin


script
import random

first = ['', 'b', 'bl', 'br', 'bw', 'c', 'ch', 'chl', 
         'chr', 'cl', 'cr', 'cw', 'd', 'dr', 'dw', 
         'f', 'fl', 'fr', 'fw', 'g', 'gl', 'gr', 
         'gw', 'h', 'j', 'k', 'kl', 'kr', 'kw', 'l', 
         'm', 'n', 'p', 'pl', 'pr', 'pw', 'qu', 'r',
         's', 'sc', 'sch', 'scl', 'scr', 'sh', 'shr', 
         'shw', 'sl', 'sm', 'sn', 'sp', 'squ', 'st', 
         'str', 'stw', 'sw', 't', 'th', 'thr', 'thw',
         'tr', 'tw', 'v', 'vl', 'vr', 'w', 'wh', 'x', 
         'y', 'z', 'zh']

middle = ['a', 'ae', 'ai', 'au', 'aw', 'ay', 'e', 'ea',
         'ee', 'ei', 'ew', 'ey', 'i', 'o', 'oa', 'oi', 
         'oo', 'ou', 'ow', 'oy', 'u', 'y']

last = ['', 'b', 'bb', 'c', 'ch', 'ck', 'ct', 'd', 'dd', 
         'dge', 'f', 'ff', 'ft', 'g', 'gg', 'gh', 'ght', 
         'k', 'l', 'lch', 'll', 'lse', 'lve', 'm', 'mb', 
         'mm', 'mp', 'mpse', 'n', 'nch', 'nd', 'ng', 
         'nk', 'nn', 'nse', 'nt', 'ntse', 'nx', 'p', 
         'pf', 'ph', 'pp', 'pse', 'pst', 'pt', 'que', 
         'sc', 'sh', 'sk', 'sm', 'sp', 'sque', 'ss', 
         'st', 't', 'th', 'tt', 'v', 'x', 'z', 'zz']

rlist = ['r', 'rb', 'rc', 'rch', 'rchle', 'rd', 'rdle', 
         'rf', 'rft', 'rg', 'rk', 'rkle', 'rl', 'rm', 
         'rmle', 'rn', 'rnk', 'rnkle', 'rp', 'rple']


for x in range(20):
    word = random.choice(first) + random.choice(middle) 
         + random.choice(last)

    print(word)

    #if not ends in e or l, randomly add le
    if word[-1] not in ['e', 'l']:
        word = word+random.choice(['', 'le'])

    #if not ends in vowel, randomly add e
    if word[-1] not in ['a', 'e', 'i', 'o', 'u']:
        word = word+random.choice(['', 'e'])

    #if ends in e, randomly add d, r
    if word[-1]=='e':
        word = word+random.choice(['', 'd', 'r'])
    
    if word[-1] in ['a', 'e', 'i', 'o', 'u']:
        word = word+random.choice(rlist)

    #if not ends in s, randomly add s
    if word[-1]!='s':
        word = word+random.choice(['', 's'])
        
    #randomly add y
    if word[-1]!='y':
        word = word+random.choice(['', 'y'])
    
    print(word)

python code formatted to html with pygments