glaemscribe 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +19 -0
- data/bin/glaemscribe +307 -0
- data/glaemresources/charsets/cirth_ds.cst +205 -0
- data/glaemresources/charsets/sarati_eldamar.cst +256 -0
- data/glaemresources/charsets/tengwar_ds.cst +318 -0
- data/glaemresources/charsets/unicode_gothic.cst +64 -0
- data/glaemresources/charsets/unicode_runes.cst +120 -0
- data/glaemresources/modes/adunaic.glaem +251 -0
- data/glaemresources/modes/blackspeech-annatar.glaem +318 -0
- data/glaemresources/modes/blackspeech.glaem +260 -0
- data/glaemresources/modes/gothic.glaem +78 -0
- data/glaemresources/modes/khuzdul.glaem +141 -0
- data/glaemresources/modes/mercian.glaem +419 -0
- data/glaemresources/modes/oldnorse-medieval.glaem +127 -0
- data/glaemresources/modes/quenya-sarati.glaem +320 -0
- data/glaemresources/modes/quenya.glaem +307 -0
- data/glaemresources/modes/sindarin-beleriand.glaem +285 -0
- data/glaemresources/modes/sindarin-classical.glaem +276 -0
- data/glaemresources/modes/sindarin-daeron.glaem +182 -0
- data/glaemresources/modes/telerin.glaem +302 -0
- data/glaemresources/modes/valarin-sarati.glaem +210 -0
- data/glaemresources/modes/westron.glaem +340 -0
- data/glaemresources/modes/westsaxon.glaem +342 -0
- data/lib/api/charset.rb +84 -0
- data/lib/api/charset_parser.rb +55 -0
- data/lib/api/constants.rb +29 -0
- data/lib/api/debug.rb +36 -0
- data/lib/api/eval.rb +268 -0
- data/lib/api/fragment.rb +113 -0
- data/lib/api/glaeml.rb +200 -0
- data/lib/api/if_tree.rb +96 -0
- data/lib/api/mode.rb +112 -0
- data/lib/api/mode_parser.rb +314 -0
- data/lib/api/option.rb +64 -0
- data/lib/api/post_processor/reverse.rb +36 -0
- data/lib/api/pre_processor/downcase.rb +35 -0
- data/lib/api/pre_processor/elvish_numbers.rb +47 -0
- data/lib/api/pre_processor/rxsubstitute.rb +40 -0
- data/lib/api/pre_processor/substitute.rb +38 -0
- data/lib/api/pre_processor/up_down_tehta_split.rb +138 -0
- data/lib/api/resource_manager.rb +130 -0
- data/lib/api/rule.rb +99 -0
- data/lib/api/rule_group.rb +159 -0
- data/lib/api/sheaf.rb +70 -0
- data/lib/api/sheaf_chain.rb +86 -0
- data/lib/api/sheaf_chain_iterator.rb +108 -0
- data/lib/api/sub_rule.rb +40 -0
- data/lib/api/transcription_pre_post_processor.rb +118 -0
- data/lib/api/transcription_processor.rb +137 -0
- data/lib/api/transcription_tree_node.rb +91 -0
- data/lib/glaemscribe.rb +70 -0
- metadata +112 -0
@@ -0,0 +1,210 @@
|
|
1
|
+
\**
|
2
|
+
|
3
|
+
Glǽmscribe (also written Glaemscribe) is a software dedicated to
|
4
|
+
the transcription of texts between writing systems, and more
|
5
|
+
specifically dedicated to the transcription of J.R.R. Tolkien's
|
6
|
+
invented languages to some of his devised writing systems.
|
7
|
+
|
8
|
+
Copyright (C) 2015 Benjamin Babut (Talagan).
|
9
|
+
|
10
|
+
This program is free software: you can redistribute it and/or modify
|
11
|
+
it under the terms of the GNU Affero General Public License as published by
|
12
|
+
the Free Software Foundation, either version 3 of the License, or
|
13
|
+
any later version.
|
14
|
+
|
15
|
+
This program is distributed in the hope that it will be useful,
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
GNU Affero General Public License for more details.
|
19
|
+
|
20
|
+
You should have received a copy of the GNU Affero General Public License
|
21
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
22
|
+
|
23
|
+
**\
|
24
|
+
|
25
|
+
\language "Valarin"
|
26
|
+
\writing "Sarati"
|
27
|
+
\mode "Glaemscrafu"
|
28
|
+
\version "0.0.1"
|
29
|
+
\authors "Talagan (Benjamin Babut)"
|
30
|
+
|
31
|
+
\charset sarati_eldamar true
|
32
|
+
|
33
|
+
\beg preprocessor
|
34
|
+
\** Work exclusively downcase **\
|
35
|
+
\downcase
|
36
|
+
|
37
|
+
\** Simplify trema vowels **\
|
38
|
+
\substitute ä a
|
39
|
+
\substitute ë e
|
40
|
+
\substitute ï i
|
41
|
+
\substitute ö o
|
42
|
+
\substitute ü u
|
43
|
+
\substitute ÿ y
|
44
|
+
|
45
|
+
\** Dis-ambiguate long vowels **\
|
46
|
+
\rxsubstitute "(ā|â|aa)" "á"
|
47
|
+
\rxsubstitute "(ē|ê|ee)" "é"
|
48
|
+
\rxsubstitute "(ī|î|ii)" "í"
|
49
|
+
\rxsubstitute "(ō|ô|oo)" "ó"
|
50
|
+
\rxsubstitute "(ū|û|uu)" "ú"
|
51
|
+
\rxsubstitute "(ȳ|ŷ|yy)" "ý"
|
52
|
+
|
53
|
+
\substitute "ai" "ay" \** Dis-ambiguate ai **\
|
54
|
+
\end
|
55
|
+
|
56
|
+
\beg processor
|
57
|
+
|
58
|
+
\outspace SARATI_SPACE
|
59
|
+
|
60
|
+
\beg rules litteral
|
61
|
+
|
62
|
+
{A} === a
|
63
|
+
{AA} === á
|
64
|
+
{E} === e
|
65
|
+
{EE} === é
|
66
|
+
{I} === i
|
67
|
+
{II} === í
|
68
|
+
{O} === o
|
69
|
+
{OO} === ó
|
70
|
+
{U} === u
|
71
|
+
{UU} === ú
|
72
|
+
{Y} === y
|
73
|
+
{YY} === ý
|
74
|
+
|
75
|
+
{AE} === (æ,ae)
|
76
|
+
{AEAE} === (ǽ,ǣ)
|
77
|
+
|
78
|
+
{OE} === ǫ
|
79
|
+
{OEOE} === ǭ
|
80
|
+
|
81
|
+
\** ################################################# **\
|
82
|
+
\** DIPHTHONGS are dis-ambiguated in the preprocessor # **\
|
83
|
+
\** ################################################# **\
|
84
|
+
|
85
|
+
\** ############# **\
|
86
|
+
\** DIACRITICS # **\
|
87
|
+
\** ############# **\
|
88
|
+
|
89
|
+
{VOWELS} === {A} * {E} * {I} * {O} * {U} * {AE} * {OE}
|
90
|
+
{LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU} * {AEAE} * {OEOE}
|
91
|
+
{STEHTAS} === SARATI_QUENYA_A * SARATI_QUENYA_E * SARATI_QUENYA_I * SARATI_QUENYA_O * SARATI_QUENYA_U * SARATI_QUENYA_A_REVERSED * SARATI_DIACRITIC_CIRCLE
|
92
|
+
|
93
|
+
{V_L_KER_WN} === [ {VOWELS} * {NULL} ]
|
94
|
+
{V_IMG_FOR_CONSONNANTS_WN} === [ {STEHTAS} * {NULL} ] \** # No vowel == nothing **\
|
95
|
+
|
96
|
+
\** ######## **\
|
97
|
+
\** RULES # **\
|
98
|
+
\** ######## **\
|
99
|
+
|
100
|
+
[{VOWELS}] --> [{STEHTAS}] SARATI_QUENYA_LONG_VOWEL_CARRIER \** # Isolated vowels : use short carrier (reversed order RTL) **\
|
101
|
+
[{LVOWELS}] --> [{STEHTAS}] SARATI_DASH_U SARATI_QUENYA_LONG_VOWEL_CARRIER \** # Long vowels: carrier + dash + tehta **\
|
102
|
+
|
103
|
+
\** ########### **\
|
104
|
+
\** FIRST LINE **\
|
105
|
+
|
106
|
+
{K} === (c,k) \** # For tolkienian compatibility's sake **\
|
107
|
+
|
108
|
+
{LINE_1ST_KER} === t * p * {K} \** # * tt * pp * {K}{K} **\
|
109
|
+
{LINE_1ST_IMG} === SARATI_T * SARATI_P * SARATI_QUENYA_C \** # * ó" * óq * ó# **\
|
110
|
+
|
111
|
+
{V_L_KER_WN}[{LINE_1ST_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_1ST_IMG}]
|
112
|
+
|
113
|
+
\** ########### **\
|
114
|
+
\** SECOND LINE **\
|
115
|
+
|
116
|
+
{LINE_2ND_KER} === d * b * g * gw
|
117
|
+
{LINE_2ND_IMG} === SARATI_QUENYA_ND * SARATI_QUENYA_MB * SARATI_NG * SARATI_PHONETIC_GW
|
118
|
+
|
119
|
+
{V_L_KER_WN}[{LINE_2ND_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_2ND_IMG}]
|
120
|
+
|
121
|
+
\** ########### **\
|
122
|
+
\** THIRD LINE **\
|
123
|
+
|
124
|
+
{LINE_3RD_KER} === þ * s * š * (χ,x) * h * šš \** # * s_ **\
|
125
|
+
{LINE_3RD_IMG} === SARATI_QUENYA_NT * SARATI_QUENYA_S * SARATI_VOICELESS_PALATO_ALVEOLAR_SIBILANT_FRICATIVE * SARATI_VOICELESS_VELAR_FRICATIVE * SARATI_H * SARATI_DASH_D SARATI_VOICELESS_PALATO_ALVEOLAR_SIBILANT_FRICATIVE \** # * ü **\
|
126
|
+
|
127
|
+
{V_L_KER_WN}[{LINE_3RD_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_3RD_IMG}]
|
128
|
+
|
129
|
+
\** ########### **\
|
130
|
+
\** FOURTH LINE **\
|
131
|
+
|
132
|
+
{LINE_4TH_KER} === ð * z * ȝ \** # * z_ **\
|
133
|
+
{LINE_4TH_IMG} === SARATI_VOICED_DENTAL_FRICATIVE * SARATI_QUENYA_SS_ALT_1 * SARATI_VOICED_VELAR_FRICATIVE \** # * ú **\
|
134
|
+
|
135
|
+
{V_L_KER_WN}[{LINE_4TH_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_4TH_IMG}]
|
136
|
+
|
137
|
+
\** ########### **\
|
138
|
+
\** FIFTH LINE **\
|
139
|
+
|
140
|
+
{LINE_5TH_KER} === m * n
|
141
|
+
{LINE_5TH_IMG} === SARATI_M * SARATI_N
|
142
|
+
|
143
|
+
{V_L_KER_WN}[{LINE_5TH_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_5TH_IMG}]
|
144
|
+
|
145
|
+
\** ########### **\
|
146
|
+
\** SIXTH LINE **\
|
147
|
+
|
148
|
+
{LINE_6TH_KER} === l * ll
|
149
|
+
{LINE_6TH_IMG} === SARATI_L * SARATI_DASH_D SARATI_L
|
150
|
+
|
151
|
+
{V_L_KER_WN}[{LINE_6TH_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_6TH_IMG}]
|
152
|
+
|
153
|
+
\** ########### **\
|
154
|
+
\** SEVENTH LINE **\
|
155
|
+
|
156
|
+
{LINE_7TH_KER} === r * rr
|
157
|
+
{LINE_7TH_IMG} === SARATI_R * SARATI_DASH_D SARATI_R
|
158
|
+
|
159
|
+
{V_L_KER_WN}[{LINE_7TH_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_7TH_IMG}]
|
160
|
+
|
161
|
+
\** ########### **\
|
162
|
+
\** EIGHTH LINE **\
|
163
|
+
|
164
|
+
{LINE_8TH_KER} === y * w
|
165
|
+
{LINE_8TH_IMG} === SARATI_QUENYA_Y * SARATI_W
|
166
|
+
|
167
|
+
{V_L_KER_WN}[{LINE_8TH_KER}] --> {V_IMG_FOR_CONSONNANTS_WN}[{LINE_8TH_IMG}]
|
168
|
+
\end
|
169
|
+
|
170
|
+
\beg rules punctuation
|
171
|
+
· --> {NULL}
|
172
|
+
, --> {NULL}
|
173
|
+
; --> {NULL}
|
174
|
+
: --> {NULL}
|
175
|
+
. --> SARATI_SPACE
|
176
|
+
- --> SARATI_SPACE
|
177
|
+
– --> SARATI_SPACE
|
178
|
+
! --> {NULL}
|
179
|
+
? --> {NULL}
|
180
|
+
' --> {NULL}
|
181
|
+
[ --> {NULL}
|
182
|
+
] --> {NULL}
|
183
|
+
‘ --> {NULL}
|
184
|
+
’ --> {NULL}
|
185
|
+
“ --> {NULL}
|
186
|
+
” --> {NULL}
|
187
|
+
\end
|
188
|
+
\end
|
189
|
+
|
190
|
+
\beg postprocessor
|
191
|
+
\reverse
|
192
|
+
\end
|
193
|
+
|
194
|
+
|
195
|
+
\** # Voyelles : a æ e i o ǫ u / ǭ Ǭ **\
|
196
|
+
\** # Diphtongues : ai **\
|
197
|
+
\** # **\
|
198
|
+
\** # Occlusives aspirées ph th . . . kh . **\
|
199
|
+
\** # Occlusives sourdes p t . . . k . **\
|
200
|
+
\** # Occlusives sonores b d . . . g . **\
|
201
|
+
\** # Fricatives sourdes . þ s š . χ h **\
|
202
|
+
\** # Fricatives sonores . ð z . . ȝ . **\
|
203
|
+
\** # Nasales m n . . . . . **\
|
204
|
+
\** # Latérales . l . . . . . **\
|
205
|
+
\** # Vibrantes . r . . . . . **\
|
206
|
+
\** # Semi-voyelles w . . . y . . **\
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
@@ -0,0 +1,340 @@
|
|
1
|
+
\**
|
2
|
+
|
3
|
+
Glǽmscribe (also written Glaemscribe) is a software dedicated to
|
4
|
+
the transcription of texts between writing systems, and more
|
5
|
+
specifically dedicated to the transcription of J.R.R. Tolkien's
|
6
|
+
invented languages to some of his devised writing systems.
|
7
|
+
|
8
|
+
Copyright (C) 2015 Benjamin Babut (Talagan).
|
9
|
+
|
10
|
+
This program is free software: you can redistribute it and/or modify
|
11
|
+
it under the terms of the GNU Affero General Public License as published by
|
12
|
+
the Free Software Foundation, either version 3 of the License, or
|
13
|
+
any later version.
|
14
|
+
|
15
|
+
This program is distributed in the hope that it will be useful,
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
18
|
+
GNU Affero General Public License for more details.
|
19
|
+
|
20
|
+
You should have received a copy of the GNU Affero General Public License
|
21
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
22
|
+
|
23
|
+
**\
|
24
|
+
|
25
|
+
\** Westron mode for glaemscribe (MAY BE INCOMPLETE) **\
|
26
|
+
\language Westron
|
27
|
+
\writing Tengwar
|
28
|
+
\mode Glaemscrafu
|
29
|
+
\version 0.0.1
|
30
|
+
\authors "Talagan (Benjamin Babut)"
|
31
|
+
|
32
|
+
\charset tengwar_ds true
|
33
|
+
|
34
|
+
\beg options
|
35
|
+
\option reverse_numbers true
|
36
|
+
\beg option numbers_base BASE_12
|
37
|
+
\value BASE_10 10
|
38
|
+
\value BASE_12 12
|
39
|
+
\end
|
40
|
+
\end
|
41
|
+
|
42
|
+
\beg preprocessor
|
43
|
+
\** Work exclusively downcase **\
|
44
|
+
\downcase
|
45
|
+
|
46
|
+
\** Simplify trema vowels **\
|
47
|
+
\substitute "ä" "a"
|
48
|
+
\substitute "ë" "e"
|
49
|
+
\substitute "ï" "i"
|
50
|
+
\substitute "ö" "o"
|
51
|
+
\substitute "ü" "u"
|
52
|
+
\substitute "ÿ" "y"
|
53
|
+
|
54
|
+
\** Dis-ambiguate long vowels **\
|
55
|
+
\rxsubstitute "(ā|â|aa)" "á"
|
56
|
+
\rxsubstitute "(ē|ê|ee)" "é"
|
57
|
+
\rxsubstitute "(ī|î|ii)" "í"
|
58
|
+
\rxsubstitute "(ō|ô|oo)" "ó"
|
59
|
+
\rxsubstitute "(ū|û|uu)" "ú"
|
60
|
+
\rxsubstitute "(ȳ|ŷ|yy)" "ý"
|
61
|
+
|
62
|
+
\** Preprocess numbers **\
|
63
|
+
\elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
|
64
|
+
\end
|
65
|
+
|
66
|
+
\beg processor
|
67
|
+
|
68
|
+
\beg rules litteral
|
69
|
+
{A} === a
|
70
|
+
{AA} === á
|
71
|
+
{E} === e
|
72
|
+
{EE} === é
|
73
|
+
{I} === i
|
74
|
+
{II} === í
|
75
|
+
{O} === o
|
76
|
+
{OO} === ó
|
77
|
+
{U} === u
|
78
|
+
{UU} === ú
|
79
|
+
|
80
|
+
\** Short diphthongs **\
|
81
|
+
{AI} === {A}{I}
|
82
|
+
{AU} === {A}{U}
|
83
|
+
{EI} === {E}{I}
|
84
|
+
{EU} === {E}{U}
|
85
|
+
{OI} === {O}{I}
|
86
|
+
{OU} === {O}{U}
|
87
|
+
{UI} === {U}{I}
|
88
|
+
{IU} === {I}{U}
|
89
|
+
|
90
|
+
\** LONG diphthongs **\
|
91
|
+
{AAI} === {AA}{I} \** âi **\
|
92
|
+
{AAU} === {AA}{U} \** âu **\
|
93
|
+
{EEI} === {EE}{I} \** êi **\
|
94
|
+
{EEU} === {EE}{U} \** êu **\
|
95
|
+
{OOI} === {OO}{I} \** ôi **\
|
96
|
+
{OOU} === {OO}{U} \** ôu **\
|
97
|
+
|
98
|
+
{SDIPHTHONGS} === {AI} * {AU} * {EI} * {EU} * {IU} * {OI} * {OU} * {UI}
|
99
|
+
{SDIPHTHENGS} === YANTA A_TEHTA_L * URE A_TEHTA_L * YANTA E_TEHTA_L * URE E_TEHTA_L * URE I_TEHTA_L * YANTA O_TEHTA_L * URE O_TEHTA_L * YANTA U_TEHTA_L
|
100
|
+
{LDIPHTHONGS} === {AAI} * {AAU} * {EEI} * {EEU} * {OOI} * {OOU}
|
101
|
+
{LDIPHTHENGS} === ARA A_TEHTA_XS YANTA * ARA A_TEHTA_XS URE * ARA E_TEHTA_XS YANTA * ARA E_TEHTA_XS URE * ARA O_TEHTA_XS YANTA * ARA O_TEHTA_XS URE
|
102
|
+
|
103
|
+
{VOWELS} === {A} * {E} * {I} * {O} * {U}
|
104
|
+
{TEHTA_XS} === A_TEHTA_XS * E_TEHTA_XS * I_TEHTA_XS * O_TEHTA_XS * U_TEHTA_XS
|
105
|
+
{TEHTA__S} === A_TEHTA_S * E_TEHTA_S * I_TEHTA_S * O_TEHTA_S * U_TEHTA_S
|
106
|
+
{TEHTA__L} === A_TEHTA_L * E_TEHTA_L * I_TEHTA_L * O_TEHTA_L * U_TEHTA_L
|
107
|
+
{TEHTA_XL} === A_TEHTA_XL * E_TEHTA_XL * I_TEHTA_XL * O_TEHTA_XL * U_TEHTA_XL
|
108
|
+
|
109
|
+
{LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU}
|
110
|
+
{LVOWTNG} === ARA A_TEHTA_XS * ARA E_TEHTA_XS * ARA I_TEHTA_XS * ARA O_TEHTA_XS * ARA U_TEHTA_XS
|
111
|
+
|
112
|
+
\** Let' put all vowels/diphthongs in the same basket **\
|
113
|
+
{V_D} === [ {VOWELS} * {LVOWELS} * {SDIPHTHONGS} * {LDIPHTHONGS} ]
|
114
|
+
\** And their images... **\
|
115
|
+
{T_XS_D} === [ {TEHTA_XS} * {LVOWTNG} * {SDIPHTHENGS} * {LDIPHTHENGS} ]
|
116
|
+
{T_S_D} === [ {TEHTA__S} * {LVOWTNG} * {SDIPHTHENGS} * {LDIPHTHENGS} ]
|
117
|
+
{T_L_D} === [ {TEHTA__L} * {LVOWTNG} * {SDIPHTHENGS} * {LDIPHTHENGS} ]
|
118
|
+
{T_XL_D} === [ {TEHTA_XL} * {LVOWTNG} * {SDIPHTHENGS} * {LDIPHTHENGS} ]
|
119
|
+
|
120
|
+
[{VOWELS}] --> TELCO [{TEHTA_XS}] \** Replace isolated short vowels **\
|
121
|
+
[{LVOWELS}] --> [{LVOWTNG}] \** Replace long vowels **\
|
122
|
+
[{SDIPHTHONGS}] --> [{SDIPHTHENGS}] \** Replace short diphthongs **\
|
123
|
+
[{LDIPHTHONGS}] --> [{LDIPHTHENGS}] \** Replace long diphthongs **\
|
124
|
+
|
125
|
+
\** ================ **\
|
126
|
+
\** CONSONANTS **\
|
127
|
+
\** ================ **\
|
128
|
+
|
129
|
+
{L1_S} === t * p * ch * (c,k)
|
130
|
+
{L1_T} === TINCO * PARMA * CALMA * QUESSE
|
131
|
+
|
132
|
+
[{L1_S}] --> [ {L1_T} ]
|
133
|
+
[{L1_S}]{V_D} --> [ {L1_T} ]{T_S_D}
|
134
|
+
|
135
|
+
{L1_G_S} === tt * pp *cch * (c,k)(c,k)
|
136
|
+
{L1_G_T} === TINCO DASH_INF_S * PARMA DASH_INF_S *CALMA DASH_INF_S * QUESSE DASH_INF_S
|
137
|
+
|
138
|
+
[{L1_G_S}] --> [ {L1_G_T} ]
|
139
|
+
[{L1_G_S}]{V_D} --> [ {L1_G_T} ]{T_S_D}
|
140
|
+
|
141
|
+
{L1_N_S} === nt * mp * nch * (n,ñ)(c,k)
|
142
|
+
{L1_N_T} === TINCO DASH_SUP_S * PARMA DASH_SUP_S * CALMA DASH_SUP_S * QUESSE DASH_SUP_S
|
143
|
+
|
144
|
+
[{L1_N_S}] --> [ {L1_N_T} ]
|
145
|
+
[{L1_N_S}]{V_D} --> [ {L1_N_T} ]{T_S_D}
|
146
|
+
|
147
|
+
{L2_S} === d * b * j * g
|
148
|
+
{L2_T} === ANDO * UMBAR * ANGA * UNGWE
|
149
|
+
|
150
|
+
[{L2_S}] --> [{L2_T}]
|
151
|
+
[{L2_S}]{V_D} --> [{L2_T}]{T_XL_D}
|
152
|
+
|
153
|
+
{L2_G_S} === dd * bb * jj * gg
|
154
|
+
{L2_G_T} === ANDO DASH_INF_L * UMBAR DASH_INF_L * ANGA DASH_INF_L * UNGWE DASH_INF_L
|
155
|
+
|
156
|
+
[{L2_G_S}] --> [{L2_G_T}]
|
157
|
+
[{L2_G_S}]{V_D} --> [{L2_G_T}]{T_XL_D}
|
158
|
+
|
159
|
+
{L2_N_S} === nd * Mb * nj * (n,ñ)g
|
160
|
+
{L2_N_T} === ANDO DASH_SUP_L * UMBAR DASH_SUP_L * ANGA DASH_SUP_L * UNGWE DASH_SUP_L
|
161
|
+
|
162
|
+
[{L2_N_S}] --> [{L2_N_T}]
|
163
|
+
[{L2_N_S}]{V_D} --> [{L2_N_T}]{T_XL_D}
|
164
|
+
|
165
|
+
\** Alignment of tehta is not the same in the font **\
|
166
|
+
\** So we need to split the third line unfortunately **\
|
167
|
+
{L3_1_S} === (th,þ) * (f,ph)
|
168
|
+
{L3_1_T} === SULE * FORMEN
|
169
|
+
|
170
|
+
{L3_2_S} === sh * kh
|
171
|
+
{L3_2_T} === AHA * HWESTA
|
172
|
+
|
173
|
+
[{L3_1_S}] --> [{L3_1_T}]
|
174
|
+
[{L3_1_S}]{V_D} --> [{L3_1_T}]{T_S_D}
|
175
|
+
[{L3_2_S}] --> [{L3_2_T}]
|
176
|
+
[{L3_2_S}]{V_D} --> [{L3_2_T}]{T_L_D}
|
177
|
+
|
178
|
+
{L3_1G_S} === (thth,tth,þþ) * (ff,phph,pph)
|
179
|
+
{L3_1G_T} === SULE DASH_INF_S * FORMEN DASH_INF_S
|
180
|
+
|
181
|
+
{L3_2G_S} === (shsh,ssh) * (k,kh)kh
|
182
|
+
{L3_2G_T} === AHA DASH_INF_S * HWESTA DASH_INF_S
|
183
|
+
|
184
|
+
[{L3_1G_S}] --> [{L3_1G_T}]
|
185
|
+
[{L3_1G_S}]{V_D} --> [{L3_1G_T}]{T_S_D}
|
186
|
+
[{L3_2G_S}] --> [{L3_2G_T}]
|
187
|
+
[{L3_2G_S}]{V_D} --> [{L3_2G_T}]{T_L_D}
|
188
|
+
|
189
|
+
{L3_1N_S} === (nth,nþ) * (nf,mf,mph)
|
190
|
+
{L3_1N_T} === SULE DASH_SUP_S * FORMEN DASH_SUP_S
|
191
|
+
|
192
|
+
{L3_2N_S} === nsh * (n,ñ)kh
|
193
|
+
{L3_2N_T} === AHA DASH_SUP_S * HWESTA DASH_SUP_S
|
194
|
+
|
195
|
+
[{L3_1N_S}] --> [{L3_1N_T}]
|
196
|
+
[{L3_1N_S}]{V_D} --> [{L3_1N_T}]{T_S_D}
|
197
|
+
[{L3_2N_S}] --> [{L3_2N_T}]
|
198
|
+
[{L3_2N_S}]{V_D} --> [{L3_2N_T}]{T_L_D}
|
199
|
+
|
200
|
+
{L4_S} === (dh,ð) * v * zh * gh
|
201
|
+
{L4_T} === ANTO * AMPA * ANCA * UNQUE
|
202
|
+
|
203
|
+
[{L4_S}] --> [{L4_T}]
|
204
|
+
[{L4_S}]{V_D} --> [{L4_T}]{T_XL_D}
|
205
|
+
|
206
|
+
{L4_G_S} === (dh,ð)(dh,ð) * vv * (zhzh,zzh) * (ghgh,ggh)
|
207
|
+
{L4_G_T} === ANTO DASH_INF_L * AMPA DASH_INF_L * ANCA DASH_INF_L * UNQUE DASH_INF_L
|
208
|
+
|
209
|
+
[{L4_G_S}] --> [{L4_G_T}]
|
210
|
+
[{L4_G_S}]{V_D} --> [{L4_G_T}]{T_XL_D}
|
211
|
+
|
212
|
+
{L4_N_S} === n(dh,ð) * (mv,nv) * nzh * (n,ñ)gh
|
213
|
+
{L4_N_T} === ANTO DASH_SUP_L * AMPA DASH_SUP_L * ANCA DASH_SUP_L * UNQUE DASH_SUP_L
|
214
|
+
|
215
|
+
[{L4_N_S}] --> [{L4_N_T}]
|
216
|
+
[{L4_N_S}]{V_D} --> [{L4_N_T}]{T_XL_D}
|
217
|
+
|
218
|
+
{L5_S} === n * m * ny * ñ
|
219
|
+
{L5_T} === NUMEN * MALTA * NOLDO * NWALME
|
220
|
+
|
221
|
+
[{L5_S}] --> [{L5_T}]
|
222
|
+
[{L5_S}]{V_D} --> [{L5_T}]{T_XL_D}
|
223
|
+
|
224
|
+
{L5_G_S} === nn * mn * (nyny,nny) * ññ
|
225
|
+
{L5_G_T} === NUMEN * MALTA * NOLDO * NWALME
|
226
|
+
|
227
|
+
[{L5_G_S}] --> [{L5_G_T}]
|
228
|
+
[{L5_G_S}]{V_D} --> [{L5_G_T}]{T_XL_D}
|
229
|
+
|
230
|
+
{L6_S} === w * y * rr * ww * yy
|
231
|
+
{L6_T} === VALA * ANNA * ROMEN DASH_INF_S * VALA DASH_INF_S * ANNA DASH_INF_S
|
232
|
+
[r * {L6_S}] --> [ ORE * {L6_T}]
|
233
|
+
[r * {L6_S}]{V_D} --> [ ROMEN * {L6_T}]{T_S_D}
|
234
|
+
|
235
|
+
\** This one is not useful (redundant with higher) **\
|
236
|
+
\** Keep it for clarity of mind **\
|
237
|
+
r_ --> ORE
|
238
|
+
|
239
|
+
s{V_D} --> SILME_NUQUERNA {T_S_D} \** Before a vowel goes down **\
|
240
|
+
s --> SILME \** Any other pos, up **\
|
241
|
+
z{V_D} --> ESSE_NUQUERNA {T_S_D} \** Before a vowel goes down **\
|
242
|
+
z --> ESSE \** Any other pos, up **\
|
243
|
+
|
244
|
+
ns{V_D} --> SILME_NUQUERNA DASH_SUP_S {T_S_D}
|
245
|
+
ns --> SILME_NUQUERNA DASH_SUP_S
|
246
|
+
nz{V_D} --> ESSE_NUQUERNA DASH_SUP_S {T_S_D}
|
247
|
+
nz --> ESSE_NUQUERNA DASH_SUP_S
|
248
|
+
|
249
|
+
ts --> TINCO SHOOK_RIGHT_L
|
250
|
+
ps --> PARMA SHOOK_RIGHT_L
|
251
|
+
(ks,cs,x) --> QUESSE SHOOK_LEFT_L
|
252
|
+
|
253
|
+
ts{V_D} --> TINCO SHOOK_RIGHT_L {T_XL_D}
|
254
|
+
ps{V_D} --> PARMA SHOOK_RIGHT_L {T_XL_D}
|
255
|
+
(ks,cs,x){V_D} --> QUESSE SHOOK_LEFT_L {T_S_D}
|
256
|
+
|
257
|
+
h{V_D} --> HYARMEN {T_XS_D}
|
258
|
+
h --> HYARMEN
|
259
|
+
hh{V_D} --> HYARMEN DASH_INF_L {T_XS_D}
|
260
|
+
hh --> HYARMEN DASH_INF_L
|
261
|
+
|
262
|
+
l{V_D} --> LAMBE {T_L_D}
|
263
|
+
l --> LAMBE
|
264
|
+
|
265
|
+
ll{V_D} --> LAMBE LAMBE_MARK_TILD {T_L_D}
|
266
|
+
ll --> LAMBE LAMBE_MARK_TILD
|
267
|
+
|
268
|
+
(hl,lh){V_D} --> ALDA {T_XL_D}
|
269
|
+
(hl,lh) --> ALDA
|
270
|
+
|
271
|
+
(hr,rh){V_D} --> ARDA {T_XL_D}
|
272
|
+
(hr,rh) --> ARDA
|
273
|
+
|
274
|
+
\end
|
275
|
+
|
276
|
+
\beg rules punctutation
|
277
|
+
. --> PUNCT_DDOT
|
278
|
+
.. --> PUNCT_DOT PUNCT_DDOT PUNCT_DOT
|
279
|
+
… --> PUNCT_TILD
|
280
|
+
... --> PUNCT_TILD
|
281
|
+
.... --> PUNCT_TILD
|
282
|
+
..... --> PUNCT_TILD
|
283
|
+
...... --> PUNCT_TILD
|
284
|
+
....... --> PUNCT_TILD
|
285
|
+
|
286
|
+
, --> PUNCT_DOT
|
287
|
+
: --> PUNCT_DOT
|
288
|
+
; --> PUNCT_DOT
|
289
|
+
! --> PUNCT_EXCLAM
|
290
|
+
? --> PUNCT_INTERR
|
291
|
+
· --> PUNCT_DOT
|
292
|
+
|
293
|
+
\** Apostrophe **\
|
294
|
+
|
295
|
+
' --> {NULL}
|
296
|
+
’ --> {NULL}
|
297
|
+
|
298
|
+
\** Quotes **\
|
299
|
+
|
300
|
+
“ --> DQUOT_OPEN
|
301
|
+
” --> DQUOT_CLOSE
|
302
|
+
« --> DQUOT_OPEN
|
303
|
+
» --> DQUOT_CLOSE
|
304
|
+
|
305
|
+
- --> PUNCT_DOT
|
306
|
+
– --> WAVE_MED_SIMPLE
|
307
|
+
— --> WAVE_MED_DOUBLE
|
308
|
+
|
309
|
+
[ --> PUNCT_PAREN_L
|
310
|
+
] --> PUNCT_PAREN_R
|
311
|
+
( --> PUNCT_PAREN_L
|
312
|
+
) --> PUNCT_PAREN_R
|
313
|
+
{ --> PUNCT_PAREN_L
|
314
|
+
} --> PUNCT_PAREN_R
|
315
|
+
< --> PUNCT_PAREN_L
|
316
|
+
> --> PUNCT_PAREN_R
|
317
|
+
|
318
|
+
\** Not universal between fonts ... **\
|
319
|
+
$ --> BOOKMARK_SIGN
|
320
|
+
≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
|
321
|
+
≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
|
322
|
+
\end
|
323
|
+
|
324
|
+
\beg rules numbers
|
325
|
+
0 --> NUM_0
|
326
|
+
1 --> NUM_1
|
327
|
+
2 --> NUM_2
|
328
|
+
3 --> NUM_3
|
329
|
+
4 --> NUM_4
|
330
|
+
5 --> NUM_5
|
331
|
+
6 --> NUM_6
|
332
|
+
7 --> NUM_7
|
333
|
+
8 --> NUM_8
|
334
|
+
9 --> NUM_9
|
335
|
+
A --> NUM_10
|
336
|
+
B --> NUM_11
|
337
|
+
\end
|
338
|
+
|
339
|
+
\end
|
340
|
+
|