TJ Mora
(τугеⅼјоɴаѕ.ⅿога@ɡⅿаіⅼ.ϲоⅿ)
Type it! All lowercase. Don't copy-paste!
15 December 2020
Inflection Expressions, or inflexp for short, are a sequence of characters that define the rules or steps that should be undertaken by an implementing software library in inflecting a base or root word of a natural language. Inflexp has character sequences for repetition (of the word or its syllables), prefixation, suffixation, infixation, sound shifting (including stress and tone shifting), sound dropping, and others.
This specification is agnostic on how libraries should implement their data structures and method logic. To give an example however, one way to implement inflexp is to define a class Word which main value is of an array type Syllable[] and where each Syllable has some or all of the following properties: onset: char[], nucleus: char[], coda: char[], stress: int, length: int, tone: int, premark: char, and postmark: char. Then various inflection methods can be defined to manipulate the syllables and their properties.
This specification (Inflection Expressions Specification) is free of known copyright restrictions.
Note: Implementing libraries may have a different license.
Inflexp originally arose from another open-source natural language project, Halita. Halita is a word-inflection and -deinflection library for Philippine languages like Tagalog. The many native languages of the Philippines are inflected languages. As different Philippine languages have different affixes and different ways of repeating their syllables and root words, a new kind of inflection expression was needed. A simple prefix expression like pang- can only do so much it also introduces sound changes and sound dropping along the way.
Early in the development of Halita, it became apparent that its class Word and class Syllable source files can be generalized to work not just with Philippine languages but also with other languages in the world. So those source files were taken out of Halita, moved into a new open source project, Inflexer, and rewritten to reflect their new purpose. This very document serves to standardize the specification of the inflection expression used by Inflexer.
A character is a symbol or glyph, which can be a letter, a number, an ideogram, a pictogram, a punctuation mark or any other special mark.
A word is a character or a sequence of characters which on its own provides a semantic meaning.
A syllable is a phonological (sound-based) building block of a word. It is comprised at least by a nucleus (which is typically a vowel) with optional onset and final sounds (which are typically consonants).
An onset is any sound, typically a consonant or cluster of consonants, at the start of a syllable before the nucleus. If it is comprised of a cluster of consonants, the first consonant is known as the initial while the last consonant is the medial. The initial can be any consonant while the medial is typically a liquid consonant like <l> or <r> or a semivowel like <w> or <j>.
A nucleus is the central part of a syllable, typically a vowel or a multiphthong but can also be a syllabic consonant (a consonant that forms a syllable on its own).
A coda is any sound, typically a consonant or cluster of consonants, in a syllable that comes after the nucleus.
A body is the combination of both the entire onset and the entire nucleus of a syllable.
A rhyme is the combination of both the entire nucleus and the entire coda of a syllable.
A stress is a an emphasis that may be given to a syllable. Different languages have different methods for stress. It can be increasing the loudness of the syllable, or lengthening the pronunciation of the nucleus, or changing the tone.
A vowel length is any shortening or elongation in the pronunciation of a syllable's nucleus. In many languages, vowel length is conflated with stress but there are some languages where stress is different from vowel lengths.
A tone is a pitch applied to a syllable. In tonal languages like the Chinese languages, changing the tone of a syllable can change a word into a different word with a different meaning.
Special marks are any symbol (like the dash <-> and the apostrophe <’>) that a syllable contains.
An implementing natural language-agnostic library is a software library that implements inflexp through the provision of abstract classes. Its methods deal more with the manipulation of the data structures to accomplish the inflection without actually requiring or knowing the orthography and irregularities of any natural language. An example of this kind of library is Inflexer.
An implementing natural language-specific library is a software library that implements inflexp but also transforms inflexp's default behavior to better suit the orthography and irregularities of its target natural language. This kind of library usually extends the the abstract classes provided by an implementing natural language-agnostic library like Inflexer. An example of an implementing natural language-specific library is Halita, which is specific to the Philippine language family.
The following table defines what each inflexp symbol or sequence of symbols does.
The examples below are just meant to give a quick glimpse on how inflexp should work. For a more definitive list of specification examples that any implementing library should be able to test themselves against, see the section, IV. Specification Examples.
Note: The example words below are showed syllabified through the use of the interpunct <·> symbol to give a better view on how an inflexp-inflection should take place. In reality, implementing libraries should be able to take un-syllabified words and also output un-syllabified words, with the syllabification and un-syllabification happening silently in the background.
Note: The examples below use diacritics to denote a stress (acute accent) and a tone (hook above). Implementing natural language-specific libraries should handle stresses and tones according to the orthography of that natural language.
Symbol Name | Symbol | Representation | Example |
hash sign | # | whole base word repeater/designator | inflect("sin·taks", "#") => "sin·taks·sin·taks" |
equal sign | = | special mark placer | inflect("sin·taks", "=#") => "sin·taks·-sin·taks" inflect("sin·taks", "#=") => "sin·taks-·sin·taks" |
dash | - | affixation direction designator | inflect("sin·taks", "de-") => "de·sin·taks" inflect("sin·taks","-ing") => "sin·taks·ing" |
underscore | _ | skip to other end designator | |
plus sign | + | duplicator | |
semicolon | ; | context direction designator | |
colon | : | syllable position designator | |
underscore | + | in-syllable positioning designator | |
comma | , | syllable separator for multi-syllabic repetition | |
digit 1 | 1 | entire onset repeater/designator | inflect("sin·taks", "14;") => "si·sin·taks" inflect("sin·taks", ";14") => "sin·taks·ta" |
digit 2 | 2 | initial repeater/designator | inflect("klubs·trolp", "24;") => "ku·klubs·trolp" inflect("klubs·trolp", "_24;") => "klubs·ku·trolp" |
digit 3 | 3 | medial repeater/designator | inflect("klubs·trolp", ":34;") => "klubs·ro·trolp" inflect("klubs·trolp", ";34:") => "klubs·lu·trolp" |
digit 4 | 4 | entire nucleus repeater/designator | inflect("dak·mein·toi", ":4;") => "dak·ei·mein·toi" |
digit 5 | 5 | first vowel or syllabic consonant of nucleus repeater/designator | inflect("dak·mein·toi", ":15:15;") => "dak·me·mein·to·toi" inflect("dak·mein·toi", ";15:15") => "dak·mein·me·toi·to" |
digit 6 | 6 | last sound of multiphthong nucleus repeater/designator | inflect("dak·mein·toi", ":_67;") => "dak·mein·in·toi" |
digit 7 | 7 | entire coda repeater/designator | inflect("sart·pelk·mork", "47:47:47;") => "art·sart·elk·pelk·ork·mork" inflect("sart·pelk·mork", "_47:_47:_47;") => "sart·art·pelk·elk·mork·ork" |
digit 8 | 8 | first sound of coda repeater/designator | inflect("sart·pelk·mork", "148,148;") => "sar·pel·sart·pelk·mork" inflect("sart·pelk·mork", ";148,148") => "sart·pelk·mork·pel·mor" |
digit 9 | 9 | last sound of coda repeater/designator | inflect("sart·pelk·mork", ":149,149;") => "sart·pek·mok·pelk·mork" inflect("sart·pelk·mork", ":_149,149;") => "sart·pelk·pek·mok·mork" |
double dollar sign | $$ | stress repeater/designator | inflect("pán·pen", ";14$$:") => "pán·pá·pen" |
double percent sign | %% | vowel length repeater/designator | inflect("kan·kēn", ";%%14") => "kan·kēn·kē" |
double at sign | @@ | tone repeater/designator | inflect("pản·pen", "47@@;") => "ản·pản·pen" |
asterisk | * | entire body repeater/designator | inflect("treiks", "*;") => "trei·treiks" |
double asterisk | ** | entire rhyme repeater/designator | inflect("treiks", ";**") => "treiks·eiks" |
triple asterisk | *** | whole syllable repeater/designator | inflect("treiks", "***+;") => "treiks·treiks·treiks" |
tilde | ~ | sound magnet | inflect("sin·taks", "-~ing") => "sin·tak·sing" inflect("dak·mein·toi", ":~4;") => "da·kei·mein·toi" inflect("en·trot", ";24~_") => "en·tot·rot" |
tilde followed by dollar sign | ~$ | stress magnet | inflect("da·gán", "-~$on") => "da·gan·ón" inflect("da·gán", "-~~$on") => "da·ga·nón" |
tilde followed by percent sign | ~% | vowel length magnet | inflect("fa·tēk", "-~%an") => "fa·tek·ān" inflect("fa·tēk", "-~~%an") => "fa·te·kān" |
tilde followed by at sign | ~@ | tone magnet | inflect("trẻp", "-~@on") => "trep·ỏn" inflect("trẻp", "-~~@on") => "tre·pỏn" |
dot | . | sound pusher | inflect("as·ka·don", "sa.t-") => "sa·tas·ka·don" inflect("len", "ta.p-") => "ta·plen" |
dollar sign followed by a number (within the scope of a dot) | .$n $n. |
stress pusher | inflect("as·ka·don", "sa.t$4-") => "sa·tás·ka·don" |
percent sign followed by a number (within the scope of a dot) | .%n %n. |
vowel length pusher | inflect("as·ka·don", "te.m%12-") => "te·mās·ka·don" |
at sign followed by a number (within the scope of a dot) | .@n @n. |
tone pusher | inflect("tre·pon", "-@2.") => "tre·pỏn" |
exclamation mark | ! ! |
sound suppressor | inflect("ven·zod", ".!-") => "en·zod" inflect("vlen·zod", ".!-") => "len·zod" inflect("vlen·zod", "-!k.") => "vlen·zok" |
double exclamation mark | !! !! |
sound cluster suppressor | inflect("vlen·zod", ".!!-") => "en·zod" inflect("vlern·zod", "-!!..") => "vle·zod" |
triple exclamation mark | !!! | whole syllable suppressor | inflect("ti·gus·rom", "..!!!-") => "ti·rom" |
pipes | | | for infixing expression | inflect("plan·traks", "|1in|") => "plin·an·traks" inflect("plan·traks", "|2in|") => "pin·lan·traks" inflect("plan·traks", "|4in|") => "plainn·traks" inflect("plan·traks", "|7in|") => "plan·in·traks" inflect("plan·traks", "|7~in|") => "pla·nin·traks" |
For stresses, inflexp defines $0 as without stress, $2 as with secondary stress, and $4 as with primary stress. The stress suppressor syntax turns a syllable with primary or a secondary stress into a no-stress syllable.
For vowel lengths, inflexp defines %2 as a extra-short vowel, %4 as a half-long vowel, %8 as regular-length vowel, and %12 as a long vowel. The vowel length suppressor syntax turns an extra-short or a half-long or a long vowel into a regular-length vowel.
For tones, it is up to implementing natural language-specific library to define what each tone number represents (@0 to @99). The tone suppressor syntax turns any tone into whatever the @0 represents.
For pitch-accented languages, their pitches must be defined using inflexp's tone number system, as described in the previous paragraph.
The inflexp symbol =, or the special mark placer, though shown in the above examples to be placing the dash symbol <->, can actually place any mark. Implementing natural language-specific libraries should define what the special mark placer places. It can even be set to be conditional, that given a particular condition it places a mark, but given another condition it places another mark. Of course these conditional placements cannot be done through the inflexp syntax alone. Condition checking and the mark placement will need to take place under the hood.
Any implementing natural language-agnostic library should implement test classes (that extend their main abstract classes) and test their methods against all the specification examples contained in this section. Only those that successfully pass all the tests against all these specification examples can be considered to be full-pledged implementation of inflexp.
Any implementing natural language-specific library, on the other hand, does not need to test itself against all these specification examples. They are simply encouraged to preserve many of inflexp's syntax patterns and other definitions as conventions of their libraries.
The base words and resulting words in the tables in this section are shown syllabified to better show how the words should be represented internally in any implementing library. In reality though, implementing libraries should be able to take un-syllabified words and do their own syllabification of them, and output results in a valid orthography without syllabification.
The example words in the tables in this section use the letters <a>, <e>, <i>, <o>, and <u> exclusively as the nucleus of syllables. Any other letter or cluster of other letters bounding the nucleus are the onset and/or coda.
Solely for the purposes of this specification, the following diacritical marks represent the following:
none (e.g., a) - no stress, regular-length vowel, or @0 tone
grave above (e.g., à) - with secondary stress
acute above (e.g., á) - with primary stress
breve above (e.g., ă) - extra-short vowel
arch above (e.g., ȃ) - half-long vowel
bar above (e.g., ā) - long vowel
dot below (e.g., ạ) - @1 tone
hook above (e.g., ả) - @2 tone
tilde above (e.g., ã) - @3 tone
All of the following specification examples are also available in csv form.
Base Word | Applied inflexp | Resulting Word |
tleimp·kraugs | # | tleimp·kraugs·tleimp·kraugs |
tleimp·kraugs | =# | tleimp·kraugs·-tleimp·kraugs |
tleimp·kraugs | #= | tleimp·kraugs-·tleimp·kraugs |
tleimp·kraugs | ## | tleimp·kraugs·tleimp·kraugs·tleimp·kraugs |
tleimp·kraugs | #+ | tleimp·kraugs·tleimp·kraugs·tleimp·kraugs |
tleimp·kraugs | =#+ | tleimp·kraugs·-tleimp·kraugs·tleimp·kraugs |
tleimp·kraugs | #+= | tleimp·kraugs·tleimp·kraugs-·tleimp·kraugs |
tleimp·kraugs | =#=# | tleimp·kraugs·-tleimp·kraugs·-tleimp·kraugs |
tleimp·kraugs | #=#= | tleimp·kraugs-·tleimp·kraugs-·tleimp·kraugs |
tleimp·kraugs | =##= | tleimp·kraugs-·tleimp·kraugs·-tleimp·kraugs- |
tleimp·kraugs | #==# | tleimp·kraugs-·tleimp·kraugs·-tleimp·kraugs |
tleimp·kraugs | 1; | tl·tleimp·kraugs |
tleimp·kraugs | 1=; | tl-·tleimp·kraugs |
tleimp·kraugs | 1+; | tl·tl·tleimp·kraugs |
tleimp·kraugs | 1,1; | tl·kr·tleimp·kraugs |
tleimp·kraugs | ;1 | tleimp·kraugs·kr |
tleimp·kraugs | ;=1 | tleimp·kraugs·-kr |
tleimp·kraugs | ;1+ | tleimp·kraugs·kr·kr |
tleimp·kraugs | ;1,1 | tleimp·kraugs·tl·kr |
tleimp·kraugs | 2; | t·tleimp·kraugs |
tleimp·kraugs | 2=; | t-·tleimp·kraugs |
tleimp·kraugs | 2+; | t·t·tleimp·kraugs |
tleimp·kraugs | 2,2; | t·k·tleimp·kraugs |
tleimp·kraugs | ;2 | tleimp·kraugs·k |
tleimp·kraugs | ;=2 | tleimp·kraugs·-k |
tleimp·kraugs | ;2+ | tleimp·kraugs·k·k |
tleimp·kraugs | ;2,2 | tleimp·kraugs·t·k |
tleimp·kraugs | 3; | l·tleimp·kraugs |
tleimp·kraugs | 3=; | l-·tleimp·kraugs |
tleimp·kraugs | 3+; | l·l·tleimp·kraugs |
tleimp·kraugs | 3,3; | l·r·tleimp·kraugs |
tleimp·kraugs | ;3 | tleimp·kraugs·r |
tleimp·kraugs | ;=3 | tleimp·kraugs·-r |
tleimp·kraugs | ;3+ | tleimp·kraugs·r·r |
tleimp·kraugs | ;3,3 | tleimp·kraugs·l·r |
tleimp·kraugs | 4; | ei·tleimp·kraugs |
tleimp·kraugs | 4~; | eit·leimp·kraugs |
tleimp·kraugs | 4=; | ei-·tleimp·kraugs |
tleimp·kraugs | 4+; | ei·ei·tleimp·kraugs |
tleimp·kraugs | 4+~; | ei·eit·leimp·kraugs |
tleimp·kraugs | 4,4; | ei·au·tleimp·kraugs |
tleimp·kraugs | 4,4~; | ei·aut·leimp·kraugs |
tleimp·kraugs | ;4 | tleimp·kraugs·au |
tleimp·kraugs | ;~4 | tleimp·kraug·sau |
tleimp·kraugs | ;=4 | tleimp·kraugs·-au |
tleimp·kraugs | ;4+ | tleimp·kraugs·au·au |
tleimp·kraugs | ;~4+ | tleimp·kraug·sau·au |
tleimp·kraugs | ;4,4 | tleimp·kraugs·ei·au |
tleimp·kraugs | ;~4,4 | tleimp·kraug·sei·au |
tleimp·kraugs | 5; | e·tleimp·kraugs |
tleimp·kraugs | 5~; | et·leimp·kraugs |
tleimp·kraugs | 5=; | e-·tleimp·kraugs |
tleimp·kraugs | 5+; | e·e·tleimp·kraugs |
tleimp·kraugs | 5+~; | e·et·leimp·kraugs |
tleimp·kraugs | 5,5; | e·a·tleimp·kraugs |
tleimp·kraugs | 5,5~; | e·at·leimp·kraugs |
tleimp·kraugs | ;5 | tleimp·kraugs·a |
tleimp·kraugs | ;~5 | tleimp·kraug·sa |
tleimp·kraugs | ;=5 | tleimp·kraugs·-a |
tleimp·kraugs | ;5+ | tleimp·kraugs·a·a |
tleimp·kraugs | ;~5+ | tleimp·kraug·sa·a |
tleimp·kraugs | ;5,5 | tleimp·kraugs·e·a |
tleimp·kraugs | ;~5,5 | tleimp·kraug·se·a |
tleimp·kraugs | 6; | i·tleimp·kraugs |
tleimp·kraugs | 6~; | it·leimp·kraugs |
tleimp·kraugs | 6=; | i-·tleimp·kraugs |
tleimp·kraugs | 6+; | i·i·tleimp·kraugs |
tleimp·kraugs | 6+~; | i·it·leimp·kraugs |
tleimp·kraugs | 6,6; | i·u·tleimp·kraugs |
tleimp·kraugs | 6,6~; | i·ut·leimp·kraugs |
tleimp·kraugs | ;6 | tleimp·kraugs·u |
tleimp·kraugs | ;~6 | tleimp·kraug·su |
tleimp·kraugs | ;=6 | tleimp·kraugs·-u |
tleimp·kraugs | ;6+ | tleimp·kraugs·u·u |
tleimp·kraugs | ;~6+ | tleimp·kraug·su·u |
tleimp·kraugs | ;6,6 | tleimp·kraugs·i·u |
tleimp·kraugs | ;~6,6 | tleimp·kraug·si·u |
tleimp·kraugs | 7; | mp·tleimp·kraugs |
tleimp·kraugs | 7=; | mp-·tleimp·kraugs |
tleimp·kraugs | 7+; | mp·mp·tleimp·kraugs |
tleimp·kraugs | 7,7; | mp·gs·tleimp·kraugs |
tleimp·kraugs | ;7 | tleimp·kraugs·gs |
tleimp·kraugs | ;=7 | tleimp·kraugs·-gs |
tleimp·kraugs | ;7+ | tleimp·kraugs·gs·gs |
tleimp·kraugs | ;7,7 | tleimp·kraugs·mp·gs |
tleimp·kraugs | 8; | m·tleimp·kraugs |
tleimp·kraugs | 8=; | m-·tleimp·kraugs |
tleimp·kraugs | 8+; | m·m·tleimp·kraugs |
tleimp·kraugs | 8,8; | m·g·tleimp·kraugs |
tleimp·kraugs | ;8 | tleimp·kraugs·g |
tleimp·kraugs | ;=8 | tleimp·kraugs·-g |
tleimp·kraugs | ;8+ | tleimp·kraugs·g·g |
tleimp·kraugs | ;8,8 | tleimp·kraugs·m·g |
tleimp·kraugs | 9; | p·tleimp·kraugs |
tleimp·kraugs | 9=; | p-·tleimp·kraugs |
tleimp·kraugs | 9+; | p·p·tleimp·kraugs |
tleimp·kraugs | 9,9; | p·s·tleimp·kraugs |
tleimp·kraugs | ;9 | tleimp·kraugs·s |
tleimp·kraugs | ;=9 | tleimp·kraugs·-s |
tleimp·kraugs | ;9+ | tleimp·kraugs·s·s |
tleimp·kraugs | ;9,9 | tleimp·kraugs·p·s |
tleimp·kraugs | 14; | tlei·tleimp·kraugs |
tleimp·kraugs | 14~; | tleit·leimp·kraugs |
tleimp·kraugs | 15=; | tle-·tleimp·kraugs |
tleimp·kraugs | 16+; | tli·tli·tleimp·kraugs |
tleimp·kraugs | 16+~; | tli·tlit·leimp·kraugs |
tleimp·kraugs | 15,16; | tle·kru·tleimp·kraugs |
tleimp·kraugs | 15,16~; | tle·krut·leimp·kraugs |
tleimp·kraugs | ;14 | tleimp·kraugs·krau |
tleimp·kraugs | ;=15 | tleimp·kraugs·-kra |
tleimp·kraugs | ;16+ | tleimp·kraugs·kru·kru |
tleimp·kraugs | ;15,16 | tleimp·kraugs·tle·kru |
tleimp·kraugs | 24; | tei·tleimp·kraugs |
tleimp·kraugs | 24~; | teit·leimp·kraugs |
tleimp·kraugs | 25=; | te-·tleimp·kraugs |
tleimp·kraugs | 26+; | ti·ti·tleimp·kraugs |
tleimp·kraugs | 26+~; | ti·tit·leimp·kraugs |
tleimp·kraugs | 25,26; | te·ku·tleimp·kraugs |
tleimp·kraugs | 25,26~; | te·kut·leimp·kraugs |
tleimp·kraugs | ;24 | tleimp·kraugs·kau |
tleimp·kraugs | ;=25 | tleimp·kraugs·-ka |
tleimp·kraugs | ;26+ | tleimp·kraugs·ku·ku |
tleimp·kraugs | ;25,26 | tleimp·kraugs·te·ku |
tleimp·kraugs | 34; | lei·tleimp·kraugs |
tleimp·kraugs | 34~; | leit·leimp·kraugs |
tleimp·kraugs | 35=; | le-·tleimp·kraugs |
tleimp·kraugs | 36+; | li·li·tleimp·kraugs |
tleimp·kraugs | 36+~; | li·lit·leimp·kraugs |
tleimp·kraugs | 35,36; | le·ru·tleimp·kraugs |
tleimp·kraugs | 35,36~; | le·rut·leimp·kraugs |
tleimp·kraugs | ;34 | tleimp·kraugs·rau |
tleimp·kraugs | ;=35 | tleimp·kraugs·-ra |
tleimp·kraugs | ;36+ | tleimp·kraugs·ru·ru |
tleimp·kraugs | ;35,36 | tleimp·kraugs·le·ru |
tleimp·kraugs | 47; | eimp·tleimp·kraugs |
tleimp·kraugs | 48=; | eim-·tleimp·kraugs |
tleimp·kraugs | 49+; | eip·eip·tleimp·kraugs |
tleimp·kraugs | 48,49; | eim·aus·tleimp·kraugs |
tleimp·kraugs | ;47 | tleimp·kraugs·augs |
tleimp·kraugs | ;~47 | tleimp·kraug·saugs |
tleimp·kraugs | ;=48 | tleimp·kraugs·-aug |
tleimp·kraugs | ;49+ | tleimp·kraugs·aus·aus |
tleimp·kraugs | ;~49+ | tleimp·kraug·saus·aus |
tleimp·kraugs | ;48,49 | tleimp·kraugs·eim·aus |
tleimp·kraugs | ;~48,49 | tleimp·kraug·seim·aus |
tleimp·kraugs | 57; | emp·tleimp·kraugs |
tleimp·kraugs | 58=; | em-·tleimp·kraugs |
tleimp·kraugs | 59+; | ep·ep·tleimp·kraugs |
tleimp·kraugs | 58,59; | em·as·tleimp·kraugs |
tleimp·kraugs | ;57 | tleimp·kraugs·ags |
tleimp·kraugs | ;~57 | tleimp·kraug·sags |
tleimp·kraugs | ;=58 | tleimp·kraugs·-ag |
tleimp·kraugs | ;59+ | tleimp·kraugs·as·as |
tleimp·kraugs | ;~59+ | tleimp·kraug·sas·as |
tleimp·kraugs | ;58,59 | tleimp·kraugs·em·as |
tleimp·kraugs | ;~58,59 | tleimp·kraug·sem·as |
tleimp·kraugs | 67; | imp·tleimp·kraugs |
tleimp·kraugs | 68=; | im-·tleimp·kraugs |
tleimp·kraugs | 69+; | ip·ip·tleimp·kraugs |
tleimp·kraugs | 68,69; | im·us·tleimp·kraugs |
tleimp·kraugs | ;67 | tleimp·kraugs·ugs |
tleimp·kraugs | ;~67 | tleimp·kraug·sugs |
tleimp·kraugs | ;=68 | tleimp·kraugs·-ug |
tleimp·kraugs | ;69+ | tleimp·kraugs·us·us |
tleimp·kraugs | ;~69+ | tleimp·kraug·sus·us |
tleimp·kraugs | ;68,69 | tleimp·kraugs·im·us |
tleimp·kraugs | ;~68,69 | tleimp·kraug·sim·us |
tleimp·kraugs | *; | tlei·tleimp·kraugs |
tleimp·kraugs | *~; | tleit·leimp·kraugs |
tleimp·kraugs | *=; | tlei-·tleimp·kraugs |
tleimp·kraugs | *+; | tlei·tlei·tleimp·kraugs |
tleimp·kraugs | *+~; | tlei·tleit·leimp·kraugs |
tleimp·kraugs | *,*; | tlei·krau·tleimp·kraugs |
tleimp·kraugs | *,*~; | tlei·kraut·leimp·kraugs |
tleimp·kraugs | ;* | tleimp·kraugs·krau |
tleimp·kraugs | ;=* | tleimp·kraugs·-krau |
tleimp·kraugs | ;*+ | tleimp·kraugs·krau·krau |
tleimp·kraugs | ;*,* | tleimp·kraugs·tlei·krau |
tleimp·kraugs | **; | eimp·tleimp·kraugs |
tleimp·kraugs | **=; | eimp-·tleimp·kraugs |
tleimp·kraugs | **+; | eimp·eimp·tleimp·kraugs |
tleimp·kraugs | **,**; | eimp·augs·tleimp·kraugs |
tleimp·kraugs | ;** | tleimp·kraugs·augs |
tleimp·kraugs | ;~** | tleimp·kraug·saugs |
tleimp·kraugs | ;=** | tleimp·kraugs·-augs |
tleimp·kraugs | ;**+ | tleimp·kraugs·augs·augs |
tleimp·kraugs | ;~**+ | tleimp·kraug·saugs·augs |
tleimp·kraugs | ;**,** | tleimp·kraugs·eimp·augs |
tleimp·kraugs | ;~**,** | tleimp·kraug·seimp·augs |
tleimp·kraugs | ***; | tleimp·tleimp·kraugs |
tleimp·kraugs | ***=; | tleimp-·tleimp·kraugs |
tleimp·kraugs | ***+; | tleimp·tleimp·tleimp·kraugs |
tleimp·kraugs | ***,***; | tleimp·kraugs·tleimp·kraugs |
tleimp·kraugs | ;*** | tleimp·kraugs·kraugs |
tleimp·kraugs | ;=*** | tleimp·kraugs·-kraugs |
tleimp·kraugs | ;***+ | tleimp·kraugs·kraugs·kraugs |
tleimp·kraugs | ;***,*** | tleimp·kraugs·tleimp·kraugs |
bak·zeb | *~:_~**; | bab·ak·ze·beb |
ak·ze | *~:_~**; | a·ak·ze·e |
ak·ze | *:_**; | a·ak·ze·e |
brailp·gleird·tsoint | :14; | brailp·glei·gleird·tsoint |
brailp·gleird·tsoint | :14~; | brailp·gleig·leird·tsoint |
brailp·gleird·tsoint | :25; | brailp·ge·gleird·tsoint |
brailp·gleird·tsoint | :25~; | brailp·geg·leird·tsoint |
brailp·gleird·tsoint | :36; | brailp·li·gleird·tsoint |
brailp·gleird·tsoint | :36~; | brailp·lig·leird·tsoint |
brailp·gleird·tsoint | :15,16; | brailp·gle·tsi·gleird·tsoint |
brailp·gleird·tsoint | :15,16~; | brailp·gle·tsig·leird·tsoint |
brailp·gleird·tsoint | :*; | brailp·glei·gleird·tsoint |
brailp·gleird·tsoint | :*~; | brailp·gleig·leird·tsoint |
brailp·gleird·tsoint | :***; | brailp·gleird·gleird·tsoint |
brailp·gleird·tsoint | :_14; | brailp·gleird·glei·tsoint |
brailp·gleird·tsoint | :_14~; | brailp·gleird·gleit·soint |
brailp·gleird·tsoint | :_25; | brailp·gleird·ge·tsoint |
brailp·gleird·tsoint | :_25~; | brailp·gleird·get·soint |
brailp·gleird·tsoint | :_36; | brailp·gleird·li·tsoint |
brailp·gleird·tsoint | :_36~; | brailp·gleird·lit·soint |
brailp·gleird·tsoint | :_15,16; | brailp·gleird·gle·tsi·tsoint |
brailp·gleird·tsoint | :_15,16~; | brailp·gleird·gle·tsit·soint |
brailp·gleird·tsoint | :_*; | brailp·gleird·glei·tsoint |
brailp·gleird·tsoint | :_*~; | brailp·gleird·gleit·soint |
brailp·gleird·tsoint | :_***; | brailp·gleird·gleird·tsoint |
brailp·gleird·tsoint | ;47: | brailp·gleird·eird·tsoint |
brailp·gleird·tsoint | ;~47: | brailp·gleir·deird·tsoint |
brailp·gleird·tsoint | ;58: | brailp·gleird·er·tsoint |
brailp·gleird·tsoint | ;~58: | brailp·gleir·der·tsoint |
brailp·gleird·tsoint | ;69: | brailp·gleird·id·tsoint |
brailp·gleird·tsoint | ;~69: | brailp·gleir·did·tsoint |
brailp·gleird·tsoint | ;48,49: | brailp·gleird·ail·eid·tsoint |
brailp·gleird·tsoint | ;~48,49: | brailp·gleir·dail·eid·tsoint |
brailp·gleird·tsoint | ;**: | brailp·gleird·eird·tsoint |
brailp·gleird·tsoint | ;~**: | brailp·gleir·deird·tsoint |
brailp·gleird·tsoint | ;***: | brailp·gleird·gleird·tsoint |
brailp·gleird·tsoint | ;47_: | brailp·eird·gleird·tsoint |
brailp·gleird·tsoint | ;~47_: | brail·peird·gleird·tsoint |
brailp·gleird·tsoint | ;58_: | brailp·er·gleird·tsoint |
brailp·gleird·tsoint | ;~58_: | brail·per·gleird·tsoint |
brailp·gleird·tsoint | ;69_: | brailp·id·gleird·tsoint |
brailp·gleird·tsoint | ;~69_: | brail·pid·gleird·tsoint |
brailp·gleird·tsoint | ;48,49_: | brailp·ail·eid·gleird·tsoint |
brailp·gleird·tsoint | ;~48,49_: | brail·pail·eid·gleird·tsoint |
brailp·gleird·tsoint | ;**_: | brailp·eird·gleird·tsoint |
brailp·gleird·tsoint | ;~**_: | brail·peird·gleird·tsoint |
brailp·gleird·tsoint | ;***_: | brailp·gleird·gleird·tsoint |
kan·ken·kin·kon·kun | :*; | kan·ke·ken·kin·kon·kun |
kan·ken·kin·kon·kun | :_*; | kan·ken·ke·kin·kon·kun |
kan·ken·kin·kon·kun | ::**; | kan·ken·in·kin·kon·kun |
kan·ken·kin·kon·kun | ::_**; | kan·ken·kin·in·kon·kun |
kan·ken·kin·kon·kun | :::***; | kan·ken·kin·kon·kon·kun |
kan·ken·kin·kon·kun | :::_***; | kan·ken·kin·kon·kon·kun |
kan·ken·kin·kon·kun | ::::*; | kan·ken·kin·kon·ku·kun |
kan·ken·kin·kon·kun | ::::_*; | kan·ken·kin·kon·kun·ku |
kan·ken·kin·kon·kun | *:*:*; | ka·kan·ke·ken·ki·kin·kon·kun |
kan·ken·kin·kon·kun | _*:_*:_*; | kan·ka·ken·ke·kin·ki·kon·kun |
kan·ken·kin·kon·kun | ;*: | kan·ken·kin·kon·ko·kun |
kan·ken·kin·kon·kun | ;*_: | kan·ken·kin·ko·kon·kun |
kan·ken·kin·kon·kun | ;**:: | kan·ken·kin·in·kon·kun |
kan·ken·kin·kon·kun | ;**_:: | kan·ken·in·kin·kon·kun |
kan·ken·kin·kon·kun | ;***::: | kan·ken·ken·kin·kon·kun |
kan·ken·kin·kon·kun | ;***_::: | kan·ken·ken·kin·kon·kun |
kan·ken·kin·kon·kun | ;*:::: | kan·ka·ken·kin·kon·kun |
kan·ken·kin·kon·kun | ;*_:::: | ka·kan·ken·kin·kon·kun |
kan·ken·kin·kon·kun | ;*:*:* | kan·ken·kin·ki·kon·ko·kun·ku |
kan·ken·kin·kon·kun | ;*_:*_:*_ | kan·ken·ki·kin·ko·kon·ku·kun |
kan·ken·kin·kon·kun | *,**:**,*; | ka·en·kan·en·ki·ken·kin·kon·kun |
kan·ken·kin·kon·kun | ;*,**:**,* | kan·ken·kin·kon·ki·on·kun·on·ku |
sa·pó·tan·sàr | :*::*; | sa·po·pó·tan·sa·sàr |
sa·pó·tan·sàr | :*$$::$$*; | sa·pó·pó·tan·sà·sàr |
sa·pó·tan·sàr | :*~$::*~$; | sa·pó·po·tan·sà·sar |
sa·pó·tan·sàr | :_~$*::_~$*; | sa·po·pó·tan·sar·sà |
bă·bȇ·bī | *:14:*; | ba·bă·be·bȇ·bi·bī |
bă·bȇ·bī | %%*:%%14:*%%; | bă·bă·bȇ·bȇ·bī·bī |
bă·bȇ·bī | _~%*:~%14:*~%; | ba·ba·bĕ·bȇ·bī·bi |
bạ·kỏ·dũ | ;*:26:* | bạ·ba·kỏ·ko·dũ·du |
bạ·kỏ·dũ | ;*@@:@@26:@@* | bạ·bạ·kỏ·kỏ·dũ·dũ |
bạ·kỏ·dũ | ;~@*:~@26:* | ba·bạ·ko·kỏ·dũ·du |
Like in the previous subsection for Repetition, base words and result words here are shown syllabified using the interpunct >·< symbol. However, this syllabification is shown only for illustrative purposes. Multi-syllable prefixes in inflexp are shown in the table below without syllabification though.
Base Word | Applied inflexp | Resulting Word |
o·ni | ke- | ke·o·ni |
o·ni | ke=- | ke-·o·ni |
o·ni | kes- | kes·o·ni |
o·ni | kesr- | kesr·o·ni |
o·ni | ke.s- | ke·so·ni |
o·ni | kes.r- | kes·ro·ni |
o·ni | ke.sr- | ke·sro·ni |
o·ni | ke.sa- | ke·sao·ni |
o·ni | ke.sra- | ke·srao·ni |
o·ni | ke.srap- | ke·srap·ni |
o·ni | ke=.sr- | ke-·sro·ni |
o·ni | meke- | me·ke·o·ni |
o·ni | meke.s- | me·ke·so·ni |
o·ni | ke.$2- | ke·ò·ni |
o·ni | ke=.$4- | ke-·ó·ni |
o·ni | ke=.$2.$4- | ke-·ò·ní |
o·ni | kes.%2- | kes·ŏ·ni |
o·ni | kesr.%4- | kesr·ȏ·ni |
o·ni | ke.s%12- | ke·sō·ni |
o·ni | ke.s.%12- | ke·so·nī |
o·ni | kes.r@1- | kes·rọ·ni |
o·ni | ke.sr@2- | ke·srỏ·ni |
o·ni | ke=.sr@3- | ke-·srõ·ni |
pleiks·va | ke- | ke·pleiks·va |
pleiks·va | ke=- | ke-·pleiks·va |
pleiks·va | kes- | kes·pleiks·va |
pleiks·va | kesr- | kesr·pleiks·va |
pleiks·va | ke.s- | ke·spleiks·va |
pleiks·va | kes.r- | kes·rpleiks·va |
pleiks·va | ke.sr- | ke·srpleiks·va |
pleiks·va | ke.sa- | ke·saeiks·va |
pleiks·va | ke.sra- | ke·sraeiks·va |
pleiks·va | ke.sral- | ke·sralks·va |
pleiks·va | ke.s!- | ke·sleiks·va |
pleiks·va | kes.r!- | kes·rleiks·va |
pleiks·va | ke.sr!- | ke·srleiks·va |
pleiks·va | ke.sa!- | ke·saiks·va |
pleiks·va | ke.sra!- | ke·sraiks·va |
pleiks·va | ke.sral!- | ke·srals·va |
pleiks·va | ke.s!!- | ke·seiks·va |
pleiks·va | kes.r!!- | kes·reiks·va |
pleiks·va | ke.sr!!- | ke·sreiks·va |
pleiks·va | ke.sa!!- | ke·saks·va |
pleiks·va | ke.sra!!- | ke·sraks·va |
pleiks·va | ke.sral!!- | ke·sral·va |
pleiks·va | ke.s!$2- | ke·slèiks·va |
pleiks·va | kes.r!$4- | kes·rléiks·va |
pleiks·va | ke.sr!%2- | ke·srlĕiks·va |
pleiks·va | ke.s!!%12- | ke·sēiks·va |
pleiks·va | kes.r!!@1- | kes·rẹiks·va |
pleiks·va | ke.sr!!@2- | ke·srẻiks·va |
pleiks·va | meke.s!!@3- | me·ke·sẽiks·va |
oi·ka | a.p- | a·poi·ka |
oi·ka | a.p!- | a·poi·ka |
oi·ka | a.p!!- | a·poi·ka |
oi·ka | a.p!!!- | a·p·ka |
ra·re·ro | do.t.s.v- | do·tra·sre·vro |
ra·re·ro | do.t!.s!!.v!!!- | do·ta·se·v |
Base words and result words here are shown syllabified using the interpunct >·< symbol. Any multi-syllabic suffix inflexp, however, is not shown syllabified.
Base Word | Applied inflexp | Resulting Word |
a·to | -on | a·to·on |
a·to | -=on | a·to·-on |
a·to | -son | a·to·son |
a·to | -slon | a·to·slon |
a·to | -s.on | a·tos·on |
a·to | -s.lon | a·tos·lon |
a·to | -sl.on | a·tosl·on |
a·to | -is.on | a·tois·on |
a·to | -is.lon | a·tois·lon |
a·to | -ris.lon | a·tris·lon |
a·to | -sl.=on | a·tosl·-on |
a·to | -onis | a·to·o·nis |
a·to | -s.onis | a·tos·o·nis |
a·to | -$2.on | a·tò·on |
a·to | -$4.=on | a·tó·-on |
a·to | -$2.$4.=on | à·tó·-on |
a·to | -%2.son | a·tŏ·son |
a·to | -%4.slon | a·tȏ·slon |
a·to | -%12s.on | a·tōs·on |
a·to | -%12.s.on | ā·tos·on |
a·to | -@1s.lon | a·tọs·lon |
a·to | -@2sl.on | a·tỏsl·on |
a·to | -@3sl.=on | a·tõsl·-on |
in·kaurp | -on | in·kaurp·on |
in·kaurp | -=on | in·kaurp·-on |
in·kaurp | -ton | in·kaurp·ton |
in·kaurp | -tson | in·kaurp·tson |
in·kaurp | -t.on | in·kaurpt·on |
in·kaurp | -t.son | in·kaurpt·son |
in·kaurp | -ts.on | in·kaurpts·on |
in·kaurp | -it.on | in·kauit·on |
in·kaurp | -it.son | in·kauit·son |
in·kaurp | -rits.on | in·krits·on |
in·kaurp | -!t.on | in·kaurt·on |
in·kaurp | -!t.son | in·kaurt·son |
in·kaurp | -!ts.on | in·kaurts·on |
in·kaurp | -!it.on | in·kait·on |
in·kaurp | -!it.son | in·kait·son |
in·kaurp | -!rits.on | in·rits·on |
in·kaurp | -!!t.on | in·kaut·on |
in·kaurp | -!!t.son | in·kaut·son |
in·kaurp | -!!ts.on | in·kauts·on |
in·kaurp | -!!it.on | in·kit·on |
in·kaurp | -!!it.son | in·kit·son |
in·kaurp | -!!rits.on | in·rits·on |
in·kaurp | -$2!t.on | in·kàurt·on |
in·kaurp | -$4!t.son | in·káurt·son |
in·kaurp | -%2!ts.on | in·kăurts·on |
in·kaurp | -%12!!t.on | in·kāut·on |
in·kaurp | -@1!!t.son | in·kạut·son |
in·kaurp | -@2!!ts.on | in·kảuts·on |
in·kaurp | -@3!!ts.onis | in·kãuts·o·nis |
a·koi | -m.pa | a·koim·pa |
a·koi | -!m.pa | a·koim·pa |
a·koi | -!!m.pa | a·koim·pa |
a·koi | -!!!m.pa | a·m·pa |
ras·res·ros | -t.l.r.od | rast·resl·rosr·od |
ras·res·ros | -!t.!!l.!!!r.od | rat·rel·r·od |
Base words and result words here are shown syllabified using the interpunct >·< symbol. Any multi-syllabic suffix inflexp, however, is not shown syllabified.
Base Word | Applied inflexp | Resulting Word |
pláins·tak·sin | |1om| | plom·áins·tak·sin |
pláins·tak·sin | |1om~$| | plóm·ains·tak·sin |
pláins·tak·sin | |1o.m| | plo·máins·tak·sin |
pláins·tak·sin | |1o~$.m| | pló·mains·tak·sin |
pláins·tak·sin | |2om| | pom·láins·tak·sin |
pláins·tak·sin | |3om| | plom·áins·tak·sin |
pláins·tak·sin | |3o.m| | plo·máins·tak·sin |
pláins·tak·sin | |4om| | pláiomns·tak·sin |
pláins·tak·sin | |5om| | pláom·ins·tak·sin |
pláins·tak·sin | |5o.m| | pláo·mins·tak·sin |
pláins·tak·sin | |6om| | pláiomns·tak·sin |
pláins·tak·sin | |7om| | pláins·om·tak·sin |
pláins·tak·sin | |7~om| | pláin·som·tak·sin |
pláins·tak·sin | |7~~$om| | plain·sóm·tak·sin |
pláins·tak·sin | |8om| | pláin·oms·tak·sin |
pláins·tak·sin | |8om!| | pláin·om·tak·sin |
pláins·tak·sin | |8~om| | plái·noms·tak·sin |
pláins·tak·sin | |8~om!!| | plái·nom·tak·sin |
pláins·tak·sin | |8~$~om| | plai·nóms·tak·sin |
pláins·tak·sin | |9om| | pláins·om·tak·sin |
pláins·tak·sin | |9~om| | pláin·som·tak·sin |
pláins·tak·sin | |9~om!| | pláin·som·tak·sin |
pláins·tak·sin | |1oman| | plo·man·áins·tak·sin |
pláins·tak·sin | |1oma.n| | plo·ma·náins·tak·sin |
pláins·tak·sin | |.1om| | pláins·tom·ak·sin |
pláins·tak·sin | |.1~$om| | plains·tóm·ak·sin |
pláins·tak·sin | |.1o.m| | pláins·to·mak·sin |
pláins·tak·sin | |.1~$o.m| | plains·tó·mak·sin |
pláins·tak·sin | |.4om| | pláins·taomk·sin |
pláins·tak·sin | |.7om| | pláins·tak·om·sin |
pláins·tak·sin | |.7~om| | pláins·ta·kom·sin |
pláins·tak·sin | |..1om| | pláins·tak·som·in |
pláins·tak·sin | |..1o.m| | pláins·tak·so·min |
pláins·tak·sin | |1no| | plnóains·tak·sin |
pláins·tak·sin | |1no!| | plnóins·tak·sin |
pláins·tak·sin | |1no!!| | plnóns·tak·sin |
pláins·tak·sin | |1no!!!| | plnó·tak·sin |
pláins·tak·sin | |2no| | pno·láins·tak·sin |
pláins·tak·sin | |2no~$| | pnó·lains·tak·sin |
pláins·tak·sin | |3no| | plnóains·tak·sin |
pláins·tak·sin | |3no!| | plnóins·tak·sin |
pláins·tak·sin | |4no| | plái·nons·tak·sin |
pláins·tak·sin | |4~.no| | pláin·ons·tak·sin |
pláins·tak·sin | |4no!!!| | plái·no·tak·sin |
pláins·tak·sin | |5no| | plá·noins·tak·sin |
pláins·tak·sin | |5~.no| | plán·oins·tak·sin |
pláins·tak·sin | |5no!| | plá·nons·tak·sin |
pláins·tak·sin | |5no!!| | plá·nons·tak·sin |
pláins·tak·sin | |5no!!!| | plá·no·tak·sin |
pláins·tak·sin | |5~$no| | pla·nóins·tak·sin |
pláins·tak·sin | |6no| | plái·nons·tak·sin |
pláins·tak·sin | |7no| | pláins·no·tak·sin |
pláins·tak·sin | |8no| | pláin·nos·tak·sin |
pláins·tak·sin | |8~$no| | plain·nós·tak·sin |
pláins·tak·sin | |9no| | pláins·no·tak·sin |
pláins·tak·sin | |om9| | pláins·tak·siomn |
pláins·tak·sin | |!om9| | pláins·tak·somn |
pláins·tak·sin | |!!om9| | pláins·tak·somn |
pláins·tak·sin | |!!!om9| | pláins·tak·omn |
pláins·tak·sin | |om9.| | pláins·taomk·sin |
pláins·tak·sin | |~$om9.| | plains·táomk·sin |
pláins·tak·sin | |!~$om9.| | plains·tómk·sin |
pláins·tak·sin | |!!~$om9.| | plains·tómk·sin |
pláins·tak·sin | |!!!~$om9.| | plains·ómk·sin |
pláins·tak·sin | |om9..| | pláin·oms·tak·sin |
pláins·tak·sin | |~~$om9..| | plai·nóms·tak·sin |
pláins·tak·sin | |om8..| | pláiomns·tak·sin |
pláins·tak·sin | |om7..| | pláiomns·tak·sin |
pláins·tak·sin | |om6..| | pláom·ins·tak·sin |
pláins·tak·sin | |om5..| | plom·áins·tak·sin |
pláins·tak·sin | |om4..| | plom·áins·tak·sin |
pláins·tak·sin | |om3..| | pom·láins·tak·sin |
pláins·tak·sin | |om2..| | om·pláins·tak·sin |
pláins·tak·sin | |om1..| | om·pláins·tak·sin |
pláins·tak·sin | |no9| | pláins·tak·si·non |
pláins·tak·sin | |no9.| | pláins·ta·nok·sin |
pláins·tak·sin | |no9..| | pláin·nos·tak·sin |
pláins·tak·sin | |no8..| | plái·nons·tak·sin |
pláins·tak·sin | |~$no8..| | plai·nóns·tak·sin |
pláins·tak·sin | |no7..| | plái·nons·tak·sin |
pláins·tak·sin | |no6..| | plá·noins·tak·sin |
pláins·tak·sin | |~$no6..| | pla·nóins·tak·sin |
pláins·tak·sin | |no5..| | plnóains·tak·sin |
pláins·tak·sin | |!no5..| | pnóains·tak·sin |
pláins·tak·sin | |!!no5..| | nóains·tak·sin |
pláins·tak·sin | |!!!no5..| | nóains·tak·sin |
pláins·tak·sin | |no4..| | plnóains·tak·sin |
pláins·tak·sin | |no3..| | pno·láins·tak·sin |
pláins·tak·sin | |no~$3..| | pnó·lains·tak·sin |
pláins·tak·sin | |no2..| | no·pláins·tak·sin |
pláins·tak·sin | |no~$1..| | nó·plains·tak·sin |
tìn·dom | |1a~$.r| | tà·rin·dom |
tĭn·dom | |.1~%a.r| | tin·dă·rom |
tin·dȏm | |1a.r~%| | ta·rȋn·dom |
tin·dōm | |.1a~%.r| | tin·dā·rom |
tịn·dom | |~@ar7| | tin·dọarm |
tin·dỏm | |ar~@7.| | tỉarn·dom |
tin·dõm | |ar~@7.| | tĩarn·dom |
Base words and result words here are shown syllabified using the interpunct >·< symbol. Any multi-syllabic suffix inflexp, however, is not shown syllabified.
For all the specification examples below, the default order of precedence on which affixation will be executed first are as follows: repetition > infixation > prefixation > suffixation. To change the order of precedence, use the / expression.
Base Word | Applied inflexp | Resulting Word |
sreind·flaust |
One of the limitations of inflexp is its lack of conditional sub-expressions. For example, if a natural language only drop certain consonants and preserves other consonants at the start of the base word when prefixed with a particular prefix, there is no inflexp that can tell that rule. Instead, implementing natural language-specific libraries will need to perform the checking and the sound change within their implementation methods.
Digraphs, glottal stops and other orthographic features need to be addressed under the hood by implementing language-specific libraries. Digraphs and glottal stops for example can be represented internally by a single character (like their own IPA character), with their real-world representation only realized when decoding the data structure in the proper orthography.
While this specification assumes that multiphthongs are always the nucleus, implementing natural language-specific libraries are free not to follow this. They may instead treat the latter element of a multiphthong as consonant coda (e.g. <w>, <y>), for example. In many natural languages, treating the latter element of a diphthong as a coda is actually more efficient.
Inflexer - An orthography-agnostic JS/TypeScript library that takes inflexp arguments for its inflection methods.
Halita - An inflection and de-inflection JS/TypeScript library for Philippine languages. It extends Inflexer methods for a more accurate inflection and de-inflection of Philippine native words. Halita's own methods can take inflexp arguments.