!! =============================================== ! !! The Finnish morphophonological/twolc rules file ! !! =============================================== ! Alphabet a b d e f g h i j k l m n o p r s š t u v y z å ä ö A B D E F G H I J K L M N O P R S Š T U V Y Z Å Ä Ö %^A:ä !%^A:a ! luulen, että näin on oikein :-/ %^O:ö !%^O:o %^U:y %^V: %^wg:0 %^PLi:i %^PRTi:i %^CONDi:i %^SUPi:i %^VLoss:0 %>:0 #:0 ; ! %^A:ä %^O:ö %^U:y Sets FrontVowel = y ä ö ; NeutralVowel = e i ; BackVowel = a o u ; ArchiVowel = %^A %^O %^U ; SomeVowel = %^V ; Vowel = FrontVowel BackVowel ArchiVowel SomeVowel NeutralVowel ; Conson = b c d f g h j k l m n p q r s t v w x z ; Dummy = %> %+ %^wg ; NonFront = BackVowel Conson NeutralVowel Dummy ; Definitions LBC = ( #: Conson* ( [ NeutralVowel | i: ] \[ #: | FrontVowel: | :FrontVowel ]* ) ) [ BackVowel: | :BackVowel ] \[ #: | FrontVowel: | :FrontVowel ]* ; Rules ! "^A:a" "^U:u"syntax error at ' matched ; ! Minulla on toisaalta yksiselitteisiä, hyvin tarkkaan ! "%^A:a" ! %^A:a <=> LBC %>: ( n | t | s s | s t | l l | l t ) _ ; ! LBC %>: v _ t ; ! ! "%^U:u" ! %^U:u <=> LBC %>: n _ t ; "Vowel lengthening" %^V:Vy <=> Vy %>: _ ; where Vy in ( a e i o u y ä ö ) ; !Tässä on hyvä, koska näytetään miten voidaan yhdistää monta sääntöä, !joissa on analogisia tapahtumia ! tössö mun: "Back harmony" Vx:Vy <=> [ BackVowel: | :BackVowel ] [ NonFront: | :NonFront ]* %>: NonFront:* _ ; where Vx in ( %^A %^O %^U ) Vy in ( a o u ) matched ; !Vowel loss "Stem a loss" a:0 <=> [ #: ] Conson* [ [ u | o ] Conson:+ | Vowel+ Conson+ Vowel+ Conson:+ ] _ %>: [ %^PLi: | %^PRTi: | %^SUPi: ] ; "Stem i loss" i:0 <=> _ %>: [ %^PRTi: | %^PLi: e n ] ; "Stem e loss" e:0 <=> _ %>: %^PRTi: ; !Other vowel transformations "Stem a:o in two-syllable words" a:o <=> [ #: ] [ Conson* [ a | e | i ] ( u ) Conson:+ | s u o l ] _ %>: [ %^PLi: | %^PRTi: ] ; ! lasi:laseja "Stem i:e" i:e <=> Conson:+ _ %>: %^PLi: %>: ; "Plural i:j" %^PLi:j <=> :Vowel %>: _ ( %>: ) :Vowel ;