Docs here.
Lexurgy is an online tool meant for conlangers (people who make constructed languages) to apply sound changes to their conlangs via a series of programmable rules. As such, this tool involves many string operations.
u
and w
classes and replace them with one-time substitutions.example
case, combine some rules into a single stepClass v {a,e,i,o,u}
Class c {p,t,k,f,s,c,b,d,g,v,z,g,h,j,l,m,n,q,r,w,x}
a:
@c *=>@c ;/$ @c* @v* _//{$ _,$ @c _}
b:
@c=>* /; _
c:
{@v,@c}=>* /; @v {@v,@c}* _
* {{p,t,k,f,s,c,x},{b,d,g,v,z,g,x}}$1=>$1 {{b,d,g,v,z,g,x},{p,t,k,f,s,c,x}}/_ ;
e:
@c$1 ;=>; $1
f:
(@c @v)$1=>$1 $1/; _
;=>*
Ungolfed:
Class vowel {a,e,i,o,u}
Class unvoiced {p,t,k,f,s,c}
Class voiced {b,d,g,v,z,g}
Class consonant {@unvoiced,@voiced,h,j,l,m,n,q,r,w,x}
# find first consonant after first vowel
part-1:
@consonant * => @consonant ; / $ @consonant* @vowel* _ // {$ _, $ @consonant _}
romanizer-a:
unchanged
# delete the consonant after the seperator
part-2:
@consonant => * / ; _
romanizer-b:
unchanged
# remove everything except the second vowel
part-3:
{@vowel, @consonant} => * / ; @vowel {@vowel, @consonant}* _
romanizer-c:
unchanged
# voicings
part-4:
* @voiced$1 => $1 @unvoiced / _ ;
* @unvoiced$1 => $1 @voiced / _ ;
romanizer-d:
unchanged
# swap mapped consonant and seperator
part-5:
@consonant$1 ; => ; $1
romanizer-e:
unchanged
# duplicate the `fe`
part-6:
(@consonant @vowel)$1 => $1 $1 / ; _
romanizer-f:
unchanged
# remove the seperator
part-7:
; => *
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4