def-gthill / lexurgy

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

Different syllabification rules at word boundary #48

Closed stefanocoretta closed 2 years ago

stefanocoretta commented 2 years ago

Hi! Thanks a lot for the grate work you are doing! I have a question/feature request about syllabification.

Is there a way to specify different syllabification rules based on phonological context like word boundary?

For example, I would like to be able to obtain the following: ʔbi.ni, biʔ.ni, ɾβa.na, βaɾ.na, and so on. But now if I allow consonant clusters as onset I get cluster onsets everywhere because of the onset maximisation principle implemented in the syllabification function: ʔbi.ni, bi.ʔni, rba.na, ba.rna. Another example is /s/ which in some languages behaves differently in word-initial position: Italian /spa.da/ 'sword' vs /as.pi.de/ 'type of snake' (at least according to some phonologists).

Is there a way to achieve this or a work around? Thanks again!

def-gthill commented 2 years ago

Absolutely, you can put conditions on syllable structure rules just like you can on normal rules.

Let's say you start out with syllable rules like this:

Syllables:
 @consonant? @consonant @vowel @consonant?

(with appropriate definitions of the @consonant and @vowel classes)

This will give you bi.ʔni and ba.rna as you say. So instead, let's restrict that full syllable pattern to the start of the word ($ _) and provide a second, more restrictive pattern for all other syllables:

Syllables:
 @consonant @consonant @vowel @consonant? / $ _
 @consonant? @vowel @consonant?

This produces biʔ.ni and bar.na like you want, while still allowing initial consonant clusters.

You can also reduce the repetition by putting the condition on part of the rule:

Syllables:
 (@consonant / $ _)? @consonant? @vowel @consonant?
stefanocoretta commented 2 years ago

Ah! Thanks! I did try using $ but I was placing it in the wrong stop and didn't pay too much attention to the error message. 😅