def-gthill / lexurgy

A high-powered sound change applier
GNU General Public License v3.0
42 stars 5 forks source link

syllable as filter #41

Open AdamantConlanger opened 2 years ago

AdamantConlanger commented 2 years ago

This is a request for an enhancement.

let's say we have

Feature (syllable) +stress
Feature +syllabic
Feature place(*noplace, labial, alveolar, velar)
Feature manner(*nomanner, nasal, plosive, fricative, liquid)
Feature frontness(*nofront, front, back)
Feature closeness(*noclose, close, open)

Diacritic ˈ (before) (floating) [+stress]

Symbol m [labial nasal]
Symbol n [alveolar nasal]
Symbol p [labial plosive]
Symbol t [alveolar plosive]
Symbol k [velar plosive]
Symbol s [alveolar fricative]
Symbol ɹ [alveolar liquid]
Symbol j [close front]
Symbol w [close back]
Symbol i [+syllabic close front]
Symbol u [+syllabic close back]
Symbol a [+syllabic open front]

Class sonorant {ɹ, j, w, m, n}
Class vowel {i, u, a}
Class obstruent {p, t, k, s}
Class consonant {@obstruent, @sonorant}

Syllables:
 @consonant? @vowel @sonorant?

word-initial-stress-assignment:
 <syl> => [+stress] / $ _

iterative-progressive-stress-assignment <syl> propagate:
 [] => [+stress] / [+stress] [] _

then Lexurgy gives the error

"\<syl>" doesn't make sense in the line "iterative-progressive-stress-assignment propagate:" (line 34)

I understand that "filter by syllable" doesn't actually make sense, because everything's part of a syllable. But it would be useful for readability if you were able to have [+stress] refer to a syllable instead of a phoneme. Yes, this is already possible by writing

iterative-progressive-stress-assignment propagate:
 <syl> => [+stress] / <syl>&[+stress] <syl> _

but writing <syl>&[+feature] is way more clunky than being able to just have a <syl> filter and writing [+feature]

so might this be an option for future implementation?

def-gthill commented 2 years ago

I like this idea. It might be tricky to implement, since it doesn't actually work the same way as a normal filter; it would be a totally different feature that just happens to share the same syntax.

Note that all sounds within a syllable are considered to have that syllable's features, so you should just be able to write

iterative-progressive-stress-assignment propagate:
 <syl> => [+stress] / [+stress] <syl> _