in-progress #5
6 changed files with 109 additions and 0 deletions
0
in-progress/documentation-driven-development.scm
Normal file
0
in-progress/documentation-driven-development.scm
Normal file
100
in-progress/feature-change-applier.scm
Normal file
100
in-progress/feature-change-applier.scm
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
(article
|
||||||
|
(hgroup
|
||||||
|
(h1 "feature change applier")
|
||||||
|
(p (em "a first attempt at a conlanging tool")))
|
||||||
|
(section
|
||||||
|
(hgroup
|
||||||
|
(h2 "what is this?")
|
||||||
|
(p
|
||||||
|
(em
|
||||||
|
"a tool for conlanging: a feature-based sound-change applier
|
||||||
|
capable of applying multiple sets of rules at once."))
|
||||||
|
(hr))
|
||||||
|
(p
|
||||||
|
"you can try it out here: "
|
||||||
|
(a ((href "https://sorrelbri.github.io/feature-change-applier/"))
|
||||||
|
"feature change applier app"))
|
||||||
|
(img ((src "/static/img/settled/1/fca.jpg")
|
||||||
|
(alt "an image of Feature Change Applier application. visible
|
||||||
|
are labeled sections. 'proto language lexicon' is a text
|
||||||
|
field with nonsense weirds. 'phonetic features' is a list
|
||||||
|
of binary values shuch as '+ back' / '- back' and
|
||||||
|
characters representing associated sounds like 'a / u / ɯ'
|
||||||
|
/ 'ə', 'epoch 1' is a text field with a list of phonetic
|
||||||
|
rules such as
|
||||||
|
'[+ occlusive - nasal]>[+ occlusive + nasal]/n_.' and
|
||||||
|
buttons to 'Remove epoch 1' or 'Add Epoch'. 'modeling
|
||||||
|
options' is a single selected radio button labeled
|
||||||
|
'Default output' with buttons labeled 'Run Changes' and
|
||||||
|
'Clear Output'. 'Results of Run' is a list headed 'epoch
|
||||||
|
1' and containing newline separated words 'annɯ anat ant
|
||||||
|
annɯ tʰa nnɯ")))
|
||||||
|
(h3 "an unfinished project")
|
||||||
|
(p
|
||||||
|
"some background on conlanging and my interst in conlanging software
|
||||||
|
can be found in this "
|
||||||
|
(a ((href "/unsettled/1"))
|
||||||
|
"introductory post about conlanging software"))
|
||||||
|
(p
|
||||||
|
"this project was initially intended to function as a sound change
|
||||||
|
applier: a software tool that takes as input a list of lexical items
|
||||||
|
in a language and a list of sound change rules and produces as
|
||||||
|
output a new list of lexical items resulting from the application of
|
||||||
|
each rule to each of the lexical items in the input. more info about
|
||||||
|
sound change appliers will be available: "
|
||||||
|
(a ((href "/unsettled/?"))
|
||||||
|
"[pending] review of existing conlanging tools"))
|
||||||
|
(p
|
||||||
|
"there are two ways in which i sought to extend the functionality of
|
||||||
|
the typical sound change applier: through feature-based rules, and
|
||||||
|
through the processing of multiple rule sets at one time. "
|
||||||
|
(a ((href "https://en.wikipedia.org/wiki/Distinctive_feature"))
|
||||||
|
"phonological features")
|
||||||
|
" are proposed binary attributes of phonology that can be used to
|
||||||
|
distinguish different phonemes. [+/- nasal] is the distinguishing
|
||||||
|
feature in the minimal pair of phones [n][d]. the processing of
|
||||||
|
multiple rule sets is accomplished in this project via the notion
|
||||||
|
of an 'epoch.' at least one epoch must be defined, which takes as
|
||||||
|
its input the initial lexicon. any additional epochs must have
|
||||||
|
their input lexicons configured by the user, but they will default
|
||||||
|
to running in sequence. what this allows is for 'snapshots' of
|
||||||
|
lexicons between suites of rules (analogous to 'intermediate'
|
||||||
|
phases in historical linguistics, such as old english>middle
|
||||||
|
english>early modern english>modern english.) this also allows for
|
||||||
|
comparisons of different rule sets or the simulation of sound
|
||||||
|
changes across a family of related languages (analogous to vulgar
|
||||||
|
latin>italo-western, vulgar-latin>eastern romance, vulgar
|
||||||
|
latin>southern romance)")
|
||||||
|
(p
|
||||||
|
"both of these additional features are present, although the app is
|
||||||
|
quite buggy and unreliable"))
|
||||||
|
(section
|
||||||
|
(hgroup
|
||||||
|
(h2 "how does it work?")
|
||||||
|
(p (em "i'll tell you what i remember"))
|
||||||
|
(hr))
|
||||||
|
(p
|
||||||
|
"i made this a few years ago, right after i first learning how to
|
||||||
|
write web apps and so i used the tools that i knew a few years ago.
|
||||||
|
this means that it's javascript! specifically, a react app, where
|
||||||
|
all the fun processing stuff happens via the react hooks useReducer
|
||||||
|
pattern. "
|
||||||
|
(a
|
||||||
|
((href
|
||||||
|
"https://github.com/sorrelbri/feature-change-applier/tree/sj_latl/src/reducers"
|
||||||
|
)) "all of the reducers are here"))
|
||||||
|
(p
|
||||||
|
"at the end of my meaningful work on the project, i started using a "
|
||||||
|
(a ((href "https://nearley.js.org/"))
|
||||||
|
"javascript earley parser called nearley")
|
||||||
|
" as i started conceptualizing the tool as just one component in a
|
||||||
|
larger suite of tools i hoped to create. the language part never got
|
||||||
|
very far--writing a language is hard! writing a language when you've
|
||||||
|
not had significant programming experience is hard! ill advised? "
|
||||||
|
(a
|
||||||
|
((href
|
||||||
|
"https://github.com/sorrelbri/feature-change-applier/blob/sj_latl/src/utils/latl/grammar.ne"))
|
||||||
|
"there's the start of something like an ebnf grammar for the
|
||||||
|
project"))
|
||||||
|
(p
|
||||||
|
"this project isn't done! and it never will be!")))
|
0
in-progress/latl-primitives.scm
Normal file
0
in-progress/latl-primitives.scm
Normal file
0
in-progress/syntax-considered-harmful.scm
Normal file
0
in-progress/syntax-considered-harmful.scm
Normal file
BIN
static/img/settled/1/fca.jpg
Normal file
BIN
static/img/settled/1/fca.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
|
@ -145,3 +145,12 @@ li.tag-item {
|
||||||
margin: 0 6;
|
margin: 0 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 96%;
|
||||||
|
margin: 2%;
|
||||||
|
border-color: var(--foreground-color);
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue