#! sch charset iso-8859-1 ------------------------------------------------------------------------------- -- Latin to Modern Terkunan -- sound shift file -- (c) Henrik Theiling -- This is not meant to be precise, it contains some strange hacks, so -- do not take this seriously! ------------------------------------------------------------------------------- require >=1.0004 package HT::Conlang::S25 vowel a, e, E, i, I, o, O, u, U, @ consonant b, c, d, f, g, h, j, k, l, m, n, N, p, q, r, s, t, v, w, x, y, z group V {vowel} group W ai, au, ja, ja:, je, je:, jE, jo, jo:, jO, ju, ju:, jU, ji, ji:, jI, j@, wa, wa:, wi, wi:, wI, wI, we, we:, wE, wo, wo:, wO, wu, wu:, wU, w@ group GLIDE ja, je, jE, jo, jO, ju, jU, ji, jI, j@, wa, wi, wI, wI, we, wE, wo, wO, wu, wU, w@ group C {consonant} -- choose one way to arrive at the 7 or 5 vowel system: option vl_western = 1 option vl_eastern = 0 option vl_corsican = 0 option vl_sardinian = 0 option vl_sicilian = 0 -- three vowel system in non-stressed syllables? option three_vowels = 0 option three_vowels_pre = 0 pattern {WV:} (W,V:) pattern {WV} (W,V:,V) pattern {N} (n,m,N) pattern {P} (p,t,k) pattern {B} (b,d,g) pattern {PB} (p,t,k,b,d,g) pattern {F} (f,s,h) pattern {G} (w,j) pattern {L} (r,l) -- The stress marker is directly in front of the vowel. syllable basic C*'?{WV}C* C*'?{WV} C*'?{WV}C* C*'?{WV} C*'?{WV} C*'?{WV}C* C*'?{WV} C*'?{WV} C*'?{WV} C*'?{WV}C* C*'?{WV} C*'?{WV} C*'?{WV} C*'?{WV} C*'?{WV}C* C*'?{WV} C*'?{WV} C*'?{WV} C*'?{WV} C*'?{WV} C*'?{WV}C* syllable break (j)(j) ()(Cj) ()(Cw) ()((?:p,t,k,b,d,g)(?:r,l)) -- stop + r,l (C)(C+) property long .*(au,ai,GLIDE:,V:).* property short = !long -- The mute(=stop) + r,l rule is implemented by syllable break property heavy long .*C property light = !heavy property latin_stress first last first, [ last ] heavy, [ last ] any, [ light ], [ last ] property stress .*'.* property closed .*C property open = !closed property modern_stress first last last closed any, [ last open ] property end_rr .*r, [ r.* ] pattern latin_initial_syl b(l,r)? k(l,n,r,s)? d(r)? f(l,r)? g(l,n,r)? l m n p(l,r,s,t)? r s(m)? sk(l,r)? sp(l,r)? st(r)? t(r)? v z pattern initial_syl m?b(l,r)? N?k(l,r)? n?d(r)? (n,m)?f(l,r)? N?g(l,r)? l m n m?p(l,r)? r n?s n?sk(l,r)? n?sp(l,r)? n?st(r)? n?t(r)? (n,m)?v pattern initial_s_syl k(l,r)? p(l,r)? t(r)? step "Normalise" rule "diphthongs are long anyway" fix au: > au ai: > ai time 100 rule "orthography" c > k qu > kw x > ks y > i ae > e oe > e: gn > Nn v > w q > {error} z > {error} -- was /dz/, but I'll wait for a word to come along -- to decide what to do with it rule "greek loaned sounds" ph > f kh > k th > t rule "assimilation" bs > ps bt > pt -- i,u,j,w cannot automatically be repaired. The input must be correctly -- formated instead: e.g. in filia, which has three syllables instead of -- that we would predicted. And by changing the syllable count, the -- stress cannot be predicted anymore. rule "obvious glides" i > j / {WV} _ {WV} u > w rule "rectify some problems" ww > w jj > j rule "gemination of intervocalic j" j > jj / {WV} _ {WV} rule "remove long vowels" aa:? > a: ee:? > e: ii:? > i: oo:? > o: uu:? > u: rule "velarisation" (n,m) > N / _ (g,k) rule "labialisation" n > m / _ (p,b) rule "delabialisation" m > n / _ (t,d,s) rule "long vowels" syllable latin_stress (V:,W) > _ V > V: / _ [nm][sf] rule "long vowels" syllable latin_stress, any (V:,W) > _ V > V: / _ [nm][sf] rule "insert stress marker" syllable latin_stress W > 'W V: > 'V: V > 'V step "Classic to Vulgar" time 200 rule "delete h" h > 0 rule "new glides" e > i / _(a,o,u) ei > e: rule "rearrange glides and syllable structure" ji > i j > i (w,v)u > u / C_ (w,v) > u / _ rule "introduce glides, step 1" i > j / {WV} _ {WV} i' > 'j u > w u' > 'w rule "introduce glides, step 2" i > i / _ w u > u / _ j i > j / _ {WV} i' > 'j / u > w u' > 'w rule "delete final -m" syllable last !first m > 0 / _ $ -- Special rule for our dialect of Vulgar Latin: rule "final vowels are short" syllable last !first V: > V / _ $ rule "remove hiatus where h dropped" a:?a:? > a: e:?(e,i):? > e: i:?i:? > i: o:?(o,u):? > o: u:?(u,o):? > u: [ie]V > jV rule "ns > :s" syllable latin_stress V:?[nm] > V: / _ [sfv] rule "ns > :s" syllable latin_stress, any V:?[nm] > V: / _ [sfv] rule "drop of u after q before o" (w,u) > 0 / (k,g) _ o rule "shift some glides" ji: > i: / C'? _ ji > i jI > I wu: > u: wu > u -- anywhere where it has not yet been removed wU > U rule "vowel + w + vowel" a'wV > 'au / _ C awV > au e'wV > 'ju ewV > ju i'wV > 'ju iwV > ju o'wV > 'o: owV > o: rule "Sardinian drop of length" option vl_sardinian : > 0 rule "Vulgar vowels" option !vl_sardinian we: > we: we > wE wa: > wa: wa > wa je: > je: je > jE ja: > ja: ja > ja jo: > jo: jo > jO ju: > ju: ju > jU W > _ i: > i: i > I e: > e: e > E a: > a: a > a u: > u: u > U o: > o: o > O step "Vulgar to Romance" -- This rule is for our special variant of Romance: -- -- This is a bit boring if we do not allow new clusters -- to emerge. So additionally, we'll allow prenasalised -- plosives. rule "drop initial non-stressed i (and ex- in analogy)" syllable first !stress, any {WV:} > _ (i,I) > 0 / ^ _ initial_syl '?{WV} Ek > 0 / ^ _ s initial_s_syl '?{WV} rule "abu > au" abU > au / C '? _ C / C '? _ # / ^ '? _ C -- Syncope: rule "syncope of penult" syllable [ any ], !stress !long, [ last ] {WV} > 0 => syncope rule "syncope of antepenult" unless syncope syllable [ any ], !stress !long, [ any ], [ last ] {WV} > 0 => syncope rule "syncope of preantepenult" unless syncope syllable [ any ], !stress !long, [ any ], [ any ], [ last ] {WV} > 0 => syncope rule "syncope of penult" unless syncope syllable [ any ], !stress, [ last ] {WV} > 0 => syncope rule "syncope of antepenult" unless syncope syllable [ any ], !stress, [ any ], [ last ] {WV} > 0 => syncope rule "syncope of preantepenult" unless syncope syllable [ any ], !stress, [ any ], [ any ], [ last ] {WV} > 0 => syncope rule "collapse to three vowels" option three_vowels syllable !stress E:? > i e:? > i O:? > u o:? > u rule "collapse to three vowels" option three_vowels_pre syllable !stress, [ stress ] E:? > i e:? > i O:? > u o:? > u rule "collapse to three vowels" option three_vowels_pre syllable !stress, [ !stress, stress ] E:? > i e:? > i O:? > u o:? > u rule "collapse to three vowels" option three_vowels_pre syllable !stress, [ !stress, !stress, stress ] E:? > i e:? > i O:? > u o:? > u rule "remove stress markers, they were for syncope only" ' > 0 -- Now sweep the consonant mess the syncope created -- first gives voicedness, second poa: --rule "simplification of plosive clusters" -- (t,k)(b,p) > p -- (t,p)(g,k) > k -- (p,k)(d,t) > t -- (d,g)(b,p) > b -- (d,b)(g,k) > g -- (b,g)(d,t) > d -- first one is lost: rule "simplification of plosive clusters" {PB}p > p {PB}t > t {PB}k > k {PB}b > b {PB}d > d {PB}g > g rule "w and j drop between other consonants" {G} > 0 / C'? _ C rule "plosives between nasals drop" {PB} > 0 / {N} _ {N} rule "Western Romance vowel collapse" option vl_western I > e U > o rule "Eastern Romance vowel collapse" option vl_eastern I > e U > u rule "Corsican vowel collapse" option vl_corsican I > E U > O rule "Sicilian vowel collapse" option vl_sicilian e > i I > i E > e o > u O > o U > u rule "length is not phonemic" V: > V rule "intervocalic b > v" b > v / {WV} _ {WV} step "Romance to Old" time 500 rule "simplify initials" (k,g,N) > 0 / ^_n -- s > is / ^_C -- no, let's keep them rule "adjustment of voicing" d > t / (k,t,p,s) _ b > p g > k -- t > d / (l,n,m) _ -- I do not like this too much -- p > b -- k > g -- f > v rule "cluster phenomena" mn > mr nm > n Nn > Nr nN > n -- Metathesis needs reworking. Have a closer look at Sardinian. --rule "metathesis with r" -- syllable !first -- Wr > rW -- V:r > rV: -- Vr > rV --rule "metathesis with r (first syllable)" -- syllable first -- rW > Wr / C'? _ $ -- rV: > V:r -- rV > Vr rule "Epenthesis" m > mb / _ (r,l) N > Ng / _ (r,l) n > nd / _ (r) nst > nst / _ s > ts / (n,l,r) _ s > st / _ (l,r) rule "(de)labialisation" Ngw > mb Nkw > mp gw > g / ^_ kw > k gw > b / _ kw > p rule "palatalisation" tj > sj g > _ / {N} _ g > 0 / _(e,i)C g > 0 / _(e,i)$ g(i,j,e) > j / _ rule "cluster simplification" (ks,ps) > s (kt,pt) > t rule "adjust nasal POA" {N} > n / _ (t,d) {N} > m / _ (p,b) {N} > N / _ (k,g) rule "l > r always after alveolars" l > r / (t,d) _ rule "l > r after plosive if no r follows: step 1" syllable any, [ !.*r.* ] l > r / {PB}_ rule "l > r after plosive if no r follows: step 2" syllable [ !.*r.* ], last l > r / {PB}_ rule "l > r after plosive if no r follows: step 3" syllable first last l > r / {PB}_ rule "shift r > l after r, step 1" syllable [ .*r.* !end_rr ], any r > l rule "shift r > l after r, step 2" syllable [ .*r.* ], [ !.*r.* ], any r > l rule "shift l > r in tl" tl > tr rule "shift l > r in ln" ln > rn --rule "drop of w or change to v" -- w > b / (r,l) _ -- --w > 0 / C'? _ -- w > v / _ rule "drop of w or change to v" w > v / V:?_(W,V:?) / ^_ rule "drop of consonant length" bb > b dd > d ff > f gg > g jj > j kk > k ll > l mm > m nn > n pp > p rr > r ss > s tt > t vv > v rule "drop nd > n at end of word" dV > 0 / n_$ rule "au > monophthong" au > o rule "shift l > r before voiceless stop" syllable first last l > r / _ {P} rule "shift l > r before voiceless stop" syllable first, !.*r.* last l > r / _ {P} rule "shift l > r before voiceless stop" syllable first, !.*r.*, !.*r.* last l > r / _ {P} -- Not nice: alperi > auperi < ALTIBERIA -- Also, we have no general l > u anywhere, which we don't want because -- of the now diphthongs (iu, eu, ou). -- rule "shift l > u after a" -- al > _ / _ {WV} -- al > au / _ rule "Final vowel drops in some cases" syllable [ open ], last open V: > 0 / ^(r,l,n,t,s,k,p) _ V > 0 rule "Final vowel drops in some cases" syllable [ .*(n,m,l,r) ], last open V: > 0 / ^{P} _ V > 0 rule "Final vowel drops in some cases" syllable [ .*s ], last open V: > 0 / ^t _ V > 0 rule "Final vowel drops in some cases" syllable [ .*r ], last open V: > 0 / ^n _ V > 0 rule "Final rising diphthongs collapse" syllable last !first jV:? > i / _ $ => end_vowel_collapse wV:? > u => end_vowel_collapse rule "Remaining final vowels drop after vowel" unless end_vowel_collapse syllable [ .*{WV} ], last !first {WV} > 0 / ^ _ $ rule "Remaining final vowels collapse into e" unless end_vowel_collapse syllable last !first {WV} > e / _ $ rule "New length" syllable open jV: > _ jV > jV: W > _ V: > {error} V > V: rule "Characteristic vowel shift" j?i: > i: je: > i: e: > e: E: > e: w?u: > u: wo: > u: o: > o: w?O: > o: a: > a: j?i > I e > I E > E w?u > U w?o > U w?O > O a > a rule "Glides" w > v lj > j step "Old to Modern" time 1000 rule "Length is not phonemic" V: > V step "Modern to Orth" time 1900 rule "Vowel orthography" I > i O > o U > u E > e N > n / _(g,k) N > {error} rule "Introduction of H" syllable [ any ], any V > hV / ^_ rule "Glides" j > i