Variables are an important feature in any self-respecting SCA. They make things so much easier! VSCA is aimed at making things easy, and VSCA is very self-respecting. Let me take some time to tell you about variables in this SCA, then.
P=ptk B=bdg B/P/_#
Sometimes, variables can be as simple as that. Sometimes, one letter just isn't enough for a variable name.
VLF=sf[th] VF=zv[dh] <VF>/<VLF>/_#
Variable names always consist of at least one capital letter, optionally followed by digits and mre capital letters. So allowed characters in a variable name are A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9.
Polygraphs can be part of variable values, as you can see in the last example. However, there is something special about them. See Symbols for a detailed explanation of this.
Polygraph blocks in assignments can also be used to save you some typing. Compare the following two examples, that in the end really mean the same. Which one would you rather type?
# Example 1 # Short vowels SV=aeiou # Nasal vowels NV=[a~][e~][i~][o~][u~] # Long vowels LV=[a:][e:][i:][o:][u:] # Long nasal vowels LNV=[a~:][e~:][i~:][o~:][u~:] # All vowels V=<SV><NV><LV><LNV>
# Example 2 # Short vowels SV=aeiou # Nasal vowels NV=[<SV>~] # Long vowels LV=[<SV>:] # Long nasal vowels LNV=[<NV>:] # All vowels V=<SV><NV><LV><LNV>
Variables can appear anywhere in a rule: in the Original field, in the New field, in Position and Exception fields, in polygraph blocks in Original or New fields, in optionals. Anywhere.
For example, if you have a variable P that contains your language's normal voiceless plosives and a variable B for the voiced plosives, and you want to do a one-time operation with aspirated plosives that you write as the plosive followed by an "h", you can simply write a rule like this:
[Ph]/B/_B
Some languages distinguish a consonant from a consonant that appears twice subsequently. Then they're usually called geminate clusters. VSCA makes it really easy to write rules that somehow operate on geminate clusters. Just a couple of examples to make this clear.
# Short vowels SV=aeiou # Long vowels LV=[<SV>:] # Stops S=ptk # Fricatives F=fsx # Shorten vowels before geminate stops <LV>/<SV>/_S+ # Geminate fricative into stops [F+]/S/_ # Stop into geminate stop at the end of a word S/[S+]/_#
You can put multiple pluses in a row. For example, P+++ stands for either "pppp", "tttt", or "kkkk", but not for, say, "pktp". You'd use PPPP for that.
You can also create a variable for geminate clusters, by the way. Not suprisingly, it would look like this:
# Plosives P=ptk # Geminate plosives GP=[P+]
Note that, since geminate clusters always form a polygraph, the "+" only works within the square brackets [ ]. The only exception to that, of course, is formed by Position and Exception fields, since these are considered to be polygraphs anyway. Don't put square brackets in your Position and Exception fields.
VSCA - Anything. Anywhere. Anytime