glaemscribe 1.0.19 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/glaemresources/charsets/tengwar_ds_annatar.cst +509 -0
- data/glaemresources/charsets/tengwar_ds_eldamar.cst +22 -16
- data/glaemresources/charsets/tengwar_ds_elfica.cst +461 -0
- data/glaemresources/charsets/tengwar_ds_parmaite.cst +500 -0
- data/glaemresources/charsets/{tengwar_ds.cst → tengwar_ds_sindarin.cst} +59 -62
- data/glaemresources/charsets/tengwar_freemono.cst +176 -0
- data/glaemresources/charsets/unicode_runes.cst +1 -0
- data/glaemresources/modes/adunaic.glaem +50 -28
- data/glaemresources/modes/blackspeech.glaem +156 -82
- data/glaemresources/modes/english-ipa.glaem +49 -0
- data/glaemresources/modes/french-ipa.glaem +49 -0
- data/glaemresources/modes/{oldnorse-medieval.glaem → futhark-runicus.glaem} +4 -4
- data/glaemresources/modes/futhark-younger.glaem +129 -0
- data/glaemresources/modes/{futhorc.glaem.disabled → futhorc.glaem} +76 -38
- data/glaemresources/modes/gothic.glaem +1 -1
- data/glaemresources/modes/khuzdul.glaem +1 -1
- data/glaemresources/modes/mercian.glaem +31 -16
- data/glaemresources/modes/quenya-sarati.glaem +5 -3
- data/glaemresources/modes/quenya.glaem +168 -77
- data/glaemresources/modes/rlyehian.glaem +41 -43
- data/glaemresources/modes/sindarin-beleriand.glaem +39 -17
- data/glaemresources/modes/sindarin-daeron.glaem +1 -1
- data/glaemresources/modes/{sindarin-classical.glaem → sindarin.glaem} +73 -37
- data/glaemresources/modes/telerin.glaem +161 -64
- data/glaemresources/modes/valarin-sarati.glaem +1 -1
- data/glaemresources/modes/westron.glaem +83 -44
- data/glaemresources/modes/westsaxon.glaem +30 -13
- data/lib/api/charset.rb +29 -11
- data/lib/api/charset_parser.rb +15 -3
- data/lib/api/mode.rb +15 -3
- data/lib/api/mode_parser.rb +7 -2
- data/lib/api/option.rb +15 -1
- data/lib/api/post_processor/resolve_virtuals.rb +35 -24
- data/lib/api/transcription_pre_post_processor.rb +2 -1
- metadata +15 -11
- data/glaemresources/modes/blackspeech-annatar.glaem +0 -320
- data/glaemresources/modes/futhark-long-branch.glaem.disabled +0 -101
- data/glaemresources/modes/futhark-short-twig.glaem.disabled +0 -101
@@ -33,10 +33,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
33
33
|
\language "R'lyehian"
|
34
34
|
\writing Tengwar
|
35
35
|
\mode Glaemscrafu
|
36
|
-
\version 0.0.
|
37
|
-
\authors "Fthalagn"
|
36
|
+
\version 0.0.3
|
37
|
+
\authors "H.P.Lovecraft & The Great Ancient Gods, impl. Fthalagn"
|
38
38
|
|
39
|
-
\
|
39
|
+
\beg changelog
|
40
|
+
\entry "0.0.1" "First version"
|
41
|
+
\entry 0.0.2 "Ported to virtual chars"
|
42
|
+
\entry 0.0.3 "Ported to various charsets"
|
43
|
+
\end
|
44
|
+
|
45
|
+
\charset tengwar_ds_sindarin true
|
46
|
+
\charset tengwar_ds_parmaite false
|
47
|
+
\charset tengwar_ds_eldamar false
|
48
|
+
\charset tengwar_ds_annatar false
|
49
|
+
\charset tengwar_ds_elfica false
|
50
|
+
\charset tengwar_freemono false
|
40
51
|
|
41
52
|
\beg options
|
42
53
|
\end
|
@@ -158,38 +169,21 @@ y palatal semi vowel ?
|
|
158
169
|
\beg rules litteral
|
159
170
|
{VOWELS} === a * e * i * o * u * w
|
160
171
|
|
161
|
-
{
|
162
|
-
{
|
163
|
-
|
164
|
-
{
|
165
|
-
|
166
|
-
{
|
167
|
-
{U_LOOP_L} === O_TEHTA_L
|
168
|
-
{U_LOOP_XL} === O_TEHTA_XL
|
169
|
-
|
170
|
-
{TEHTA_XS} === A_TEHTA_XS * E_TEHTA_XS * I_TEHTA_XS * {O_LOOP_XS} * {U_LOOP_XS} * THSUP_SEV_XS
|
171
|
-
{TEHTA__S} === A_TEHTA_S * E_TEHTA_S * I_TEHTA_S * {O_LOOP_S} * {U_LOOP_S} * THSUP_SEV_S
|
172
|
-
{TEHTA__L} === A_TEHTA_L * E_TEHTA_L * I_TEHTA_L * {O_LOOP_L} * {U_LOOP_L} * THSUP_SEV_L
|
173
|
-
{TEHTA_XL} === A_TEHTA_XL * E_TEHTA_XL * I_TEHTA_XL * {O_LOOP_XL} * {U_LOOP_XL} * THSUP_SEV_XL
|
174
|
-
|
175
|
-
[{VOWELS}] --> TELCO [{TEHTA_XS}] \** Replace isolated short vowels **\
|
172
|
+
{O_LOOP} === O_TEHTA
|
173
|
+
{U_LOOP} === U_TEHTA
|
174
|
+
|
175
|
+
{TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * O_TEHTA * U_TEHTA * SEV_TEHTA
|
176
|
+
|
177
|
+
[{VOWELS}] --> TELCO [{TEHTAR}] \** Replace isolated short vowels **\
|
176
178
|
|
177
|
-
|
178
179
|
{WDIPHTHONGS} === {NULL}
|
179
180
|
{WDIPHTHENGS} === {NULL}
|
180
181
|
|
181
182
|
{V_D_KER} === [ {VOWELS} {WDIPHTHONGS} ]
|
182
183
|
{V_D_KER_WN} === [ {VOWELS} {WDIPHTHONGS} * {NULL} ]
|
183
184
|
|
184
|
-
{
|
185
|
-
{
|
186
|
-
{V_D_IMG__L} === [ {TEHTA__S} {WDIPHTHENGS} ]
|
187
|
-
{V_D_IMG_XL} === [ {TEHTA_XL} {WDIPHTHENGS} ]
|
188
|
-
{V_D_IMG_XS_WN} === [ {TEHTA_XS} {WDIPHTHENGS} * {NULL} ]
|
189
|
-
{V_D_IMG__S_WN} === [ {TEHTA__L} {WDIPHTHENGS} * {NULL} ]
|
190
|
-
{V_D_IMG__L_WN} === [ {TEHTA__S} {WDIPHTHENGS} * {NULL} ]
|
191
|
-
{V_D_IMG_XL_WN} === [ {TEHTA_XL} {WDIPHTHENGS} * {NULL} ]
|
192
|
-
|
185
|
+
{V_D_IMG} === [ {TEHTAR} {WDIPHTHENGS} ]
|
186
|
+
{V_D_IMG_WN} === [ {TEHTAR} {WDIPHTHENGS} * {NULL} ]
|
193
187
|
|
194
188
|
{L1_KER_1} === t * p
|
195
189
|
{L1_IMG_1} === TINCO * PARMA
|
@@ -197,30 +191,30 @@ y palatal semi vowel ?
|
|
197
191
|
{L1_IMG_2} === CALMA
|
198
192
|
|
199
193
|
\** NORMAL **\
|
200
|
-
[ {L1_KER_1} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_1} ] [{NULL} *
|
201
|
-
[ {L1_KER_2} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_2} ] [{NULL} *
|
194
|
+
[ {L1_KER_1} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_1} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
195
|
+
[ {L1_KER_2} ] [{NULL} * h] {V_D_KER_WN} --> [ {L1_IMG_2} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
202
196
|
|
203
197
|
{L2_KER} === d * b * g
|
204
198
|
{L2_IMG} === ANDO * UMBAR * ANGA
|
205
|
-
[ {L2_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L2_IMG} ] [{NULL} *
|
199
|
+
[ {L2_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L2_IMG} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
206
200
|
|
207
201
|
{L3_KER} === f
|
208
202
|
{L3_IMG} === FORMEN
|
209
|
-
[ {L3_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L3_IMG} ] [{NULL} *
|
203
|
+
[ {L3_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L3_IMG} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
210
204
|
|
211
205
|
{L5_KER} === n * m
|
212
206
|
{L5_IMG} === NUMEN * MALTA
|
213
|
-
[ {L5_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L5_IMG} ] [{NULL} *
|
207
|
+
[ {L5_KER} ] [{NULL} * h] {V_D_KER_WN} --> [ {L5_IMG} ] [{NULL} * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
214
208
|
|
215
|
-
r [{NULL} * y * h] {V_D_KER_WN} --> ROMEN [{NULL} *
|
216
|
-
s {V_D_KER_WN} --> SILME_NUQUERNA {
|
217
|
-
z {V_D_KER_WN} --> ESSE_NUQUERNA {
|
209
|
+
r [{NULL} * y * h] {V_D_KER_WN} --> ROMEN [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
210
|
+
s {V_D_KER_WN} --> SILME_NUQUERNA {V_D_IMG_WN}
|
211
|
+
z {V_D_KER_WN} --> ESSE_NUQUERNA {V_D_IMG_WN}
|
218
212
|
|
219
|
-
l [{NULL} * y * h] {V_D_KER_WN} --> LAMBE [{NULL} *
|
220
|
-
h [{NULL} * y * h] {V_D_KER_WN} --> AHA [{NULL} *
|
221
|
-
v [{NULL} * y * h] {V_D_KER_WN} --> VALA [{NULL} *
|
213
|
+
l [{NULL} * y * h] {V_D_KER_WN} --> LAMBE [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
214
|
+
h [{NULL} * y * h] {V_D_KER_WN} --> AHA [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
215
|
+
v [{NULL} * y * h] {V_D_KER_WN} --> VALA [{NULL} * PALATAL_SIGN * GEMINATE_SIGN_TILD] {V_D_IMG_WN}
|
222
216
|
|
223
|
-
y {V_D_KER_WN} --> VILYA {
|
217
|
+
y {V_D_KER_WN} --> VILYA {V_D_IMG_WN}
|
224
218
|
|
225
219
|
' --> HARP_SHAPED
|
226
220
|
’ --> HARP_SHAPED
|
@@ -252,8 +246,8 @@ y palatal semi vowel ?
|
|
252
246
|
» --> DQUOT_CLOSE
|
253
247
|
|
254
248
|
- --> PUNCT_DOT
|
255
|
-
– -->
|
256
|
-
— -->
|
249
|
+
– --> PUNCT_TILD
|
250
|
+
— --> PUNCT_DTILD
|
257
251
|
|
258
252
|
[ --> PUNCT_PAREN_L
|
259
253
|
] --> PUNCT_PAREN_R
|
@@ -284,6 +278,10 @@ y palatal semi vowel ?
|
|
284
278
|
A --> NUM_10
|
285
279
|
B --> NUM_11
|
286
280
|
\end
|
287
|
-
|
281
|
+
|
288
282
|
\end
|
289
283
|
|
284
|
+
|
285
|
+
\beg postprocessor
|
286
|
+
\resolve_virtuals
|
287
|
+
\end
|
@@ -24,21 +24,34 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
24
24
|
|
25
25
|
\** Sindarin Beleriand mode for glaemscribe (MAY BE INCOMPLETE) **\
|
26
26
|
\beg changelog
|
27
|
-
\entry 0.0.2 "Added lw"
|
28
|
-
\entry 0.0.3 "Added thorn as equivalent for th"
|
29
|
-
\entry 0.0.4 "Porting to virtual chars to simplify and beautify"
|
27
|
+
\entry "0.0.2" "Added lw"
|
28
|
+
\entry "0.0.3" "Added thorn as equivalent for th"
|
29
|
+
\entry "0.0.4" "Porting to virtual chars to simplify and beautify"
|
30
|
+
\entry "0.0.5" "Added charset support for Annatar"
|
31
|
+
\entry "0.0.6" "Added support for the FreeMonoTengwar font"
|
32
|
+
\entry "0.1.0" "Added support for the Tengwar Elfica font"
|
30
33
|
\end
|
31
34
|
|
32
35
|
\language "Sindarin"
|
33
36
|
\writing "Tengwar"
|
34
37
|
\mode "Beleriand"
|
35
|
-
\version "0.0
|
36
|
-
\authors "Talagan (Benjamin Babut)"
|
38
|
+
\version "0.1.0"
|
39
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
37
40
|
|
38
|
-
\charset
|
39
|
-
\charset
|
41
|
+
\charset tengwar_ds_sindarin true
|
42
|
+
\charset tengwar_ds_parmaite false
|
43
|
+
\charset tengwar_ds_eldamar false
|
44
|
+
\charset tengwar_ds_annatar false
|
45
|
+
\charset tengwar_ds_elfica false
|
46
|
+
\charset tengwar_freemono false
|
40
47
|
|
41
48
|
\beg options
|
49
|
+
|
50
|
+
\beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
|
51
|
+
\value CONSONANT_MODIFICATION_STYLE_WAVE 0
|
52
|
+
\value CONSONANT_MODIFICATION_STYLE_BAR 1
|
53
|
+
\end
|
54
|
+
|
42
55
|
\option reverse_numbers true
|
43
56
|
\beg option numbers_base BASE_12
|
44
57
|
\value BASE_10 10
|
@@ -79,6 +92,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
79
92
|
\beg processor
|
80
93
|
|
81
94
|
\beg rules litteral
|
95
|
+
|
96
|
+
\if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
|
97
|
+
{GEMINATE} === GEMINATE_SIGN_TILD
|
98
|
+
{NASAL} === NASALIZE_SIGN_TILD
|
99
|
+
\else
|
100
|
+
{GEMINATE} === GEMINATE_SIGN
|
101
|
+
{NASAL} === NASALIZE_SIGN
|
102
|
+
\endif
|
103
|
+
|
82
104
|
{A} === a
|
83
105
|
{AA} === á
|
84
106
|
{E} === e
|
@@ -134,9 +156,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
134
156
|
|
135
157
|
[{L1}] --> [{_L1_}]
|
136
158
|
|
137
|
-
nt --> TINCO
|
138
|
-
mp --> PARMA
|
139
|
-
n{K} --> CALMA
|
159
|
+
nt --> TINCO {NASAL}
|
160
|
+
mp --> PARMA {NASAL}
|
161
|
+
n{K} --> CALMA {NASAL}
|
140
162
|
|
141
163
|
\** ======== **\
|
142
164
|
\** 2ND LINE **\
|
@@ -146,8 +168,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
146
168
|
|
147
169
|
[{L2}] --> [{_L2_}]
|
148
170
|
|
149
|
-
mb --> UMBAR
|
150
|
-
nd --> ANDO
|
171
|
+
mb --> UMBAR {NASAL}
|
172
|
+
nd --> ANDO {NASAL}
|
151
173
|
|
152
174
|
\** ======== **\
|
153
175
|
\** 3RD LINE **\
|
@@ -157,10 +179,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
157
179
|
|
158
180
|
[{L3}] --> [{_L3_}]
|
159
181
|
|
160
|
-
nth --> SULE
|
161
|
-
mph --> FORMEN
|
162
|
-
nf --> FORMEN
|
163
|
-
nch --> AHA
|
182
|
+
nth --> SULE {NASAL}
|
183
|
+
mph --> FORMEN {NASAL}
|
184
|
+
nf --> FORMEN {NASAL}
|
185
|
+
nch --> AHA {NASAL}
|
164
186
|
|
165
187
|
\** ======== **\
|
166
188
|
\** 4TH LINE **\
|
@@ -202,7 +224,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
202
224
|
|
203
225
|
[{S_LINE}] --> [{_S_LINE_}]
|
204
226
|
|
205
|
-
ns --> SILME_NUQUERNA
|
227
|
+
ns --> SILME_NUQUERNA {NASAL}
|
206
228
|
|
207
229
|
\** ======== **\
|
208
230
|
\** OTHERS **\
|
@@ -34,7 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
34
34
|
\writing "Cirth"
|
35
35
|
\mode "Angerthas Daeron"
|
36
36
|
\version "0.0.4"
|
37
|
-
\authors "Talagan (Benjamin Babut)"
|
37
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
38
38
|
|
39
39
|
\charset cirth_ds true
|
40
40
|
|
@@ -25,34 +25,54 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
25
25
|
\** Sindarin Classical mode for glaemscribe (MAY BE INCOMPLETE) **\
|
26
26
|
|
27
27
|
\beg changelog
|
28
|
-
\entry 0.0.2 "Fixed some tehtar versions which did not look quite nice for ch, dh, v, mb. Reworked the problem of labialized consonnants (+w), adding an option for treating the u-curl + tehta combination."
|
29
|
-
\entry 0.0.3 "Extended the labialized consonnants option."
|
30
|
-
\entry 0.0.4 "Fixed nw (BUG : was using ORE from the beleriand mode), added lw"
|
31
|
-
\entry 0.0.5 "Added thorn as equivalent for th"
|
32
|
-
\entry 0.0.6 "Porting to virtual chars to simplify and beautify"
|
28
|
+
\entry "0.0.2" "Fixed some tehtar versions which did not look quite nice for ch, dh, v, mb. Reworked the problem of labialized consonnants (+w), adding an option for treating the u-curl + tehta combination."
|
29
|
+
\entry "0.0.3" "Extended the labialized consonnants option."
|
30
|
+
\entry "0.0.4" "Fixed nw (BUG : was using ORE from the beleriand mode), added lw"
|
31
|
+
\entry "0.0.5" "Added thorn as equivalent for th"
|
32
|
+
\entry "0.0.6" "Porting to virtual chars to simplify and beautify"
|
33
|
+
\entry "0.0.7" "Added charset support for Annatar"
|
34
|
+
\entry "0.0.8" "Added support for the FreeMonoTengwar font"
|
35
|
+
\entry "0.1.0" "Added support for the Tengwar Elfica font"
|
33
36
|
\end
|
34
37
|
|
35
38
|
|
36
39
|
\language "Sindarin"
|
37
40
|
\writing "Tengwar"
|
38
|
-
\mode "
|
39
|
-
\version "0.0
|
40
|
-
\authors "Talagan (Benjamin Babut)"
|
41
|
+
\mode "General Use"
|
42
|
+
\version "0.1.0"
|
43
|
+
\authors "J.R.R. Tolkien, impl. Talagan (Benjamin Babut)"
|
41
44
|
|
42
|
-
\charset
|
43
|
-
\charset
|
45
|
+
\charset tengwar_ds_sindarin true
|
46
|
+
\charset tengwar_ds_parmaite false
|
47
|
+
\charset tengwar_ds_eldamar false
|
48
|
+
\charset tengwar_ds_annatar false
|
49
|
+
\charset tengwar_ds_elfica false
|
50
|
+
\charset tengwar_freemono false
|
44
51
|
|
45
52
|
\beg options
|
46
|
-
|
47
|
-
\beg option
|
48
|
-
\value
|
49
|
-
\value
|
53
|
+
|
54
|
+
\beg option reverse_o_u_tehtar U_UP_O_DOWN
|
55
|
+
\value O_UP_U_DOWN 1
|
56
|
+
\value U_UP_O_DOWN 2
|
50
57
|
\end
|
58
|
+
|
59
|
+
\beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
|
60
|
+
\value CONSONANT_MODIFICATION_STYLE_WAVE 0
|
61
|
+
\value CONSONANT_MODIFICATION_STYLE_BAR 1
|
62
|
+
\end
|
63
|
+
|
51
64
|
\beg option labialized_consonants_u_curl LABIALIZED_U_CURL_ALWAYS
|
52
65
|
\value LABIALIZED_U_CURL_NONE 1
|
53
66
|
\value LABIALIZED_U_CURL_NO_TEHTAR 2
|
54
67
|
\value LABIALIZED_U_CURL_ALWAYS 3
|
55
68
|
\end
|
69
|
+
|
70
|
+
\option reverse_numbers true
|
71
|
+
\beg option numbers_base BASE_12
|
72
|
+
\value BASE_10 10
|
73
|
+
\value BASE_12 12
|
74
|
+
\end
|
75
|
+
|
56
76
|
\end
|
57
77
|
|
58
78
|
\beg preprocessor
|
@@ -89,6 +109,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
89
109
|
|
90
110
|
\beg rules litteral
|
91
111
|
|
112
|
+
\if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
|
113
|
+
{GEMINATE} === GEMINATE_SIGN_TILD
|
114
|
+
{NASAL} === NASALIZE_SIGN_TILD
|
115
|
+
\else
|
116
|
+
{GEMINATE} === GEMINATE_SIGN
|
117
|
+
{NASAL} === NASALIZE_SIGN
|
118
|
+
\endif
|
119
|
+
|
120
|
+
\if "reverse_o_u_tehtar == U_UP_O_DOWN"
|
121
|
+
{O_LOOP} === O_TEHTA
|
122
|
+
{U_LOOP} === U_TEHTA
|
123
|
+
\else
|
124
|
+
{O_LOOP} === U_TEHTA
|
125
|
+
{U_LOOP} === O_TEHTA
|
126
|
+
\endif
|
127
|
+
|
92
128
|
\** VOWELS **\
|
93
129
|
{A} === a
|
94
130
|
{AA} === á
|
@@ -117,12 +153,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
117
153
|
{VOWELS} === {A} * {E} * {I} * {O} * {U} * {Y}
|
118
154
|
{LVOWELS} === {AA} * {EE} * {II} * {OO} * {UU} * {YY}
|
119
155
|
|
120
|
-
{TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA *
|
156
|
+
{TEHTAR} === A_TEHTA * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP} * Y_TEHTA
|
121
157
|
|
122
|
-
{_LTEHTAR_} === ARA A_TEHTA * ARA E_TEHTA * ARA I_TEHTA * ARA
|
158
|
+
{_LTEHTAR_} === ARA A_TEHTA * ARA E_TEHTA * ARA I_TEHTA * ARA {O_LOOP} * ARA {U_LOOP} * ARA Y_TEHTA
|
123
159
|
|
124
160
|
{DIPHTHONGS} === {AI} * {AU} * {AW} * {EI} * {UI} * {AE} * {OE}
|
125
|
-
{_DIPHTHONGS_} === ANNA A_TEHTA * VALA A_TEHTA * VALA A_TEHTA * ANNA E_TEHTA * ANNA
|
161
|
+
{_DIPHTHONGS_} === ANNA A_TEHTA * VALA A_TEHTA * VALA A_TEHTA * ANNA E_TEHTA * ANNA {U_LOOP} * YANTA A_TEHTA * YANTA {O_LOOP}
|
126
162
|
|
127
163
|
\** Consonants + Vowels, we will often need these ones **\
|
128
164
|
{V_D} === [ {VOWELS} ]
|
@@ -142,18 +178,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
142
178
|
|
143
179
|
{V_D_WN}[{L1}] --> 2,1 --> [{_L1_}]{_V_D_WN_}
|
144
180
|
|
145
|
-
{V_D_WN}nt --> TINCO
|
146
|
-
{V_D_WN}mp --> PARMA
|
147
|
-
{V_D_WN}n{K} --> CALMA
|
181
|
+
{V_D_WN}nt --> TINCO {NASAL} {_V_D_WN_}
|
182
|
+
{V_D_WN}mp --> PARMA {NASAL} {_V_D_WN_}
|
183
|
+
{V_D_WN}n{K} --> CALMA {NASAL} {_V_D_WN_}
|
148
184
|
|
149
185
|
\** 2ND LINE **\
|
150
186
|
{L2} === d * b * g * ng \** * g **\
|
151
|
-
{_L2_} === ANDO * UMBAR * UNGWE * UNGWE
|
187
|
+
{_L2_} === ANDO * UMBAR * UNGWE * UNGWE {NASAL} \** * s **\
|
152
188
|
|
153
189
|
{V_D_WN}[{L2}] --> 2,1 --> [{_L2_}]{_V_D_WN_}
|
154
190
|
|
155
|
-
{V_D_WN}mb --> UMBAR
|
156
|
-
{V_D_WN}nd --> ANDO
|
191
|
+
{V_D_WN}mb --> UMBAR {NASAL} {_V_D_WN_}
|
192
|
+
{V_D_WN}nd --> ANDO {NASAL} {_V_D_WN_}
|
157
193
|
|
158
194
|
\** 3RD LINE **\
|
159
195
|
{L3} === (þ,th) * (f,ph,ff) * ch
|
@@ -161,10 +197,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
161
197
|
|
162
198
|
{V_D_WN}[{L3}] --> 2,1 --> [{_L3_}]{_V_D_WN_}
|
163
199
|
|
164
|
-
{V_D_WN}nth --> SULE
|
165
|
-
{V_D_WN}mph --> FORMEN
|
166
|
-
{V_D_WN}nf --> FORMEN
|
167
|
-
{V_D_WN}nch --> HWESTA
|
200
|
+
{V_D_WN}nth --> SULE {NASAL} {_V_D_WN_}
|
201
|
+
{V_D_WN}mph --> FORMEN {NASAL} {_V_D_WN_}
|
202
|
+
{V_D_WN}nf --> FORMEN {NASAL} {_V_D_WN_}
|
203
|
+
{V_D_WN}nch --> HWESTA {NASAL} {_V_D_WN_}
|
168
204
|
|
169
205
|
\** 4TH LINE **\
|
170
206
|
{L4} === (đ,ð,ðh,dh) * (v,bh,f_) \** Some noldorin variants here ... **\
|
@@ -178,14 +214,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
178
214
|
|
179
215
|
{V_D_WN}[{L5}] --> 2,1 --> [{_L5_}]{_V_D_WN_}
|
180
216
|
|
181
|
-
{V_D_WN}nn --> NUMEN
|
182
|
-
{V_D_WN}mm --> MALTA
|
217
|
+
{V_D_WN}nn --> NUMEN {NASAL} {_V_D_WN_}
|
218
|
+
{V_D_WN}mm --> MALTA {NASAL} {_V_D_WN_}
|
183
219
|
|
184
220
|
\** 6TH LINE **\
|
185
221
|
|
186
222
|
\** 7TH LINE **\
|
187
223
|
{L7} === r_ * r * l * ll * w
|
188
|
-
{_L7_} === ORE * ROMEN * LAMBE * LAMBE
|
224
|
+
{_L7_} === ORE * ROMEN * LAMBE * LAMBE {GEMINATE} * VALA
|
189
225
|
|
190
226
|
{V_D_WN}[{L7}] --> 2,1 --> [{_L7_}]{_V_D_WN_}
|
191
227
|
|
@@ -198,7 +234,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
198
234
|
|
199
235
|
{V_D_WN}[{L8}] --> 2,1 --> [{_L8_}]{_V_D_WN_}
|
200
236
|
|
201
|
-
{V_D_WN}ns --> SILME_NUQUERNA
|
237
|
+
{V_D_WN}ns --> SILME_NUQUERNA {NASAL} {_V_D_WN_}
|
202
238
|
|
203
239
|
s --> SILME
|
204
240
|
|
@@ -226,12 +262,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
226
262
|
rw --> ROMEN SEV_TEHTA
|
227
263
|
\endif
|
228
264
|
|
229
|
-
\if "labialized_consonants_u_curl == LABIALIZED_U_CURL_ALWAYS"
|
230
|
-
{V_D}dw --> ANDO SEV_TEHTA
|
231
|
-
{V_D}gw --> UNGWE SEV_TEHTA
|
232
|
-
{V_D}lw --> LAMBE SEV_TEHTA
|
233
|
-
{V_D}nw --> NUMEN SEV_TEHTA
|
234
|
-
{V_D}rw --> ROMEN SEV_TEHTA
|
265
|
+
\if "labialized_consonants_u_curl == LABIALIZED_U_CURL_ALWAYS"
|
266
|
+
{V_D}dw --> ANDO SEV_TEHTA {_V_D_}
|
267
|
+
{V_D}gw --> UNGWE SEV_TEHTA {_V_D_}
|
268
|
+
{V_D}lw --> LAMBE SEV_TEHTA {_V_D_}
|
269
|
+
{V_D}nw --> NUMEN SEV_TEHTA {_V_D_}
|
270
|
+
{V_D}rw --> ROMEN SEV_TEHTA {_V_D_}
|
235
271
|
\endif
|
236
272
|
\end
|
237
273
|
|
@@ -25,20 +25,58 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
25
25
|
\** Telerin mode for glaemscribe (MAY BE INCOMPLETE) - Derived from Quenya **\
|
26
26
|
|
27
27
|
\beg changelog
|
28
|
-
\entry 0.0.2 "Correcting ts/ps sequences to work better with eldamar"
|
29
|
-
\entry 0.0.3 "Porting to virtual chars"
|
28
|
+
\entry "0.0.2" "Correcting ts/ps sequences to work better with eldamar"
|
29
|
+
\entry "0.0.3" "Porting to virtual chars"
|
30
|
+
\entry "0.0.4" "Added charset support for Annatar"
|
31
|
+
\entry "0.0.5" "Added support for the FreeMonoTengwar font"
|
32
|
+
\entry "0.0.6" "Ported some options from the quenya mode"
|
33
|
+
\entry "0.1.0" "Added support for the Tengwar Elfica font"
|
30
34
|
\end
|
31
35
|
|
32
36
|
\language "Telerin"
|
33
37
|
\writing "Tengwar"
|
34
38
|
\mode "Glaemscrafu"
|
35
|
-
\version "0.0
|
36
|
-
\authors "Talagan (Benjamin Babut)"
|
39
|
+
\version "0.1.0"
|
40
|
+
\authors "Talagan (Benjamin Babut), based on J.R.R Tolkien"
|
41
|
+
|
42
|
+
\charset tengwar_ds_sindarin true
|
43
|
+
\charset tengwar_ds_parmaite false
|
44
|
+
\charset tengwar_ds_eldamar false
|
45
|
+
\charset tengwar_ds_annatar false
|
46
|
+
\charset tengwar_ds_elfica false
|
47
|
+
\charset tengwar_freemono false
|
37
48
|
|
38
|
-
\charset tengwar_ds true
|
39
|
-
\charset tengwar_ds_eldamar false
|
40
49
|
|
41
50
|
\beg options
|
51
|
+
|
52
|
+
\beg option reverse_o_u_tehtar U_UP_O_DOWN
|
53
|
+
\value O_UP_U_DOWN 1
|
54
|
+
\value U_UP_O_DOWN 2
|
55
|
+
\end
|
56
|
+
|
57
|
+
\beg option long_vowels_format LONG_VOWELS_USE_LONG_CARRIER
|
58
|
+
\value LONG_VOWELS_USE_LONG_CARRIER 1
|
59
|
+
\value LONG_VOWELS_USE_DOUBLE_TEHTAR 2
|
60
|
+
\end
|
61
|
+
|
62
|
+
\beg option double_tehta_e false
|
63
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
64
|
+
\end
|
65
|
+
\beg option double_tehta_i false
|
66
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
67
|
+
\end
|
68
|
+
\beg option double_tehta_o true
|
69
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
70
|
+
\end
|
71
|
+
\beg option double_tehta_u true
|
72
|
+
\visible_when 'long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR'
|
73
|
+
\end
|
74
|
+
|
75
|
+
\beg option consonant_modification_style CONSONANT_MODIFICATION_STYLE_BAR
|
76
|
+
\value CONSONANT_MODIFICATION_STYLE_WAVE 0
|
77
|
+
\value CONSONANT_MODIFICATION_STYLE_BAR 1
|
78
|
+
\end
|
79
|
+
|
42
80
|
\option reverse_numbers true
|
43
81
|
\beg option numbers_base BASE_12
|
44
82
|
\value BASE_10 10
|
@@ -74,52 +112,109 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
74
112
|
\beg processor
|
75
113
|
|
76
114
|
\beg rules litteral
|
77
|
-
|
78
|
-
{AA} === á
|
79
|
-
{E} === e
|
80
|
-
{EE} === é
|
81
|
-
{I} === i
|
82
|
-
{II} === í
|
83
|
-
{O} === o
|
84
|
-
{OO} === ó
|
85
|
-
{U} === u
|
86
|
-
{UU} === ú
|
87
|
-
|
88
|
-
{AI} === {A}{I}
|
89
|
-
{AU} === {A}{U}
|
90
|
-
{EU} === {E}{U}
|
91
|
-
{IU} === {I}{U}
|
92
|
-
{OI} === {O}{I}
|
93
|
-
{UI} === {U}{I}
|
94
|
-
|
95
|
-
|
115
|
+
|
96
116
|
{K} === (c,k)
|
97
117
|
{W} === (v,w)
|
98
118
|
{SS} === (z,ss)
|
99
119
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
120
|
+
\if "consonant_modification_style == CONSONANT_MODIFICATION_STYLE_WAVE"
|
121
|
+
{GEMINATE} === GEMINATE_SIGN_TILD
|
122
|
+
\else
|
123
|
+
{GEMINATE} === GEMINATE_SIGN
|
124
|
+
\endif
|
105
125
|
|
106
|
-
{
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
126
|
+
{VOWELS} === a * e * i * o * u
|
127
|
+
{LVOWELS} === á * é * í * ó * ú
|
128
|
+
|
129
|
+
\if "reverse_o_u_tehtar == U_UP_O_DOWN"
|
130
|
+
{O_LOOP} === O_TEHTA
|
131
|
+
{O_LOOP_DOUBLE} === O_TEHTA_DOUBLE
|
132
|
+
{U_LOOP} === U_TEHTA
|
133
|
+
{U_LOOP_DOUBLE} === U_TEHTA_DOUBLE
|
134
|
+
\else
|
135
|
+
{O_LOOP} === U_TEHTA
|
136
|
+
{O_LOOP_DOUBLE} === U_TEHTA_DOUBLE
|
137
|
+
{U_LOOP} === O_TEHTA
|
138
|
+
{U_LOOP_DOUBLE} === O_TEHTA_DOUBLE
|
139
|
+
\endif
|
140
|
+
|
141
|
+
\** Shape of the a, option removed from quenya, may be readded later **\
|
142
|
+
{A_SHAPE} === A_TEHTA
|
143
|
+
|
144
|
+
\** Implicit a, option removed from quenya, may be readded later **\
|
145
|
+
{_A_} === {A_SHAPE}
|
146
|
+
{_NVOWEL_} === {NULL}
|
147
|
+
|
148
|
+
{_TEHTAR_} === {_A_} * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP}
|
111
149
|
|
112
|
-
|
113
|
-
{
|
150
|
+
\** Split diphtongs option removed from quenya, may be readded later **\
|
151
|
+
{DIPHTHONGS} === ai * au * eu * iu * oi * ui
|
152
|
+
{_DIPHTHONGS_} === YANTA {_A_} * URE {_A_} * URE E_TEHTA * URE I_TEHTA * YANTA {O_LOOP} * YANTA {U_LOOP}
|
153
|
+
{WDIPHTHONGS} === * {DIPHTHONGS} \** groovy! **\
|
154
|
+
{_WDIPHTHONGS_} === * {_DIPHTHONGS_} \** same thing **\
|
114
155
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
156
|
+
{_LONG_A_} === ARA {A_SHAPE}
|
157
|
+
{_LONG_E_} === ARA E_TEHTA
|
158
|
+
{_LONG_I_} === ARA I_TEHTA
|
159
|
+
{_LONG_O_} === ARA {O_LOOP}
|
160
|
+
{_LONG_U_} === ARA {U_LOOP}
|
161
|
+
{_LONE_LONG_A_} === {_LONG_A_}
|
162
|
+
{_LONE_LONG_E_} === {_LONG_E_}
|
163
|
+
{_LONE_LONG_I_} === {_LONG_I_}
|
164
|
+
{_LONE_LONG_O_} === {_LONG_O_}
|
165
|
+
{_LONE_LONG_U_} === {_LONG_U_}
|
166
|
+
|
167
|
+
{LTEHTAR} === {NULL}
|
168
|
+
{_LTEHTAR_} === {NULL}
|
169
|
+
|
170
|
+
\if "long_vowels_format == LONG_VOWELS_USE_DOUBLE_TEHTAR"
|
171
|
+
\if double_tehta_e
|
172
|
+
{_LONG_E_} === E_TEHTA_DOUBLE
|
173
|
+
{_LONE_LONG_E_} === TELCO {_LONG_E_}
|
174
|
+
{LTEHTAR} === {LTEHTAR} * é
|
175
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_E_}
|
176
|
+
\endif
|
177
|
+
\if double_tehta_i
|
178
|
+
{_LONG_I_} === I_TEHTA_DOUBLE
|
179
|
+
{_LONE_LONG_I_} === TELCO {_LONG_I_}
|
180
|
+
{LTEHTAR} === {LTEHTAR} * í
|
181
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_I_}
|
182
|
+
\endif
|
183
|
+
\if double_tehta_o
|
184
|
+
{_LONG_O_} === {O_LOOP_DOUBLE}
|
185
|
+
{_LONE_LONG_O_} === TELCO {_LONG_O_}
|
186
|
+
{LTEHTAR} === {LTEHTAR} * ó
|
187
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_O_}
|
188
|
+
\endif
|
189
|
+
\if double_tehta_u
|
190
|
+
{_LONG_U_} === {U_LOOP_DOUBLE}
|
191
|
+
{_LONE_LONG_U_} === TELCO {_LONG_U_}
|
192
|
+
{LTEHTAR} === {LTEHTAR} * ú
|
193
|
+
{_LTEHTAR_} === {_LTEHTAR_} * {_LONG_U_}
|
194
|
+
\endif
|
195
|
+
\endif
|
196
|
+
|
197
|
+
\** images of long vowels, either tehtar or ara versions **\
|
198
|
+
{_LVOWELS_} === {_LONG_A_} * {_LONG_E_} * {_LONG_I_} * {_LONG_O_} * {_LONG_U_}
|
199
|
+
|
200
|
+
{WLONG} === * {LVOWELS}
|
201
|
+
{_WLONG_} === * {_LVOWELS_}
|
202
|
+
|
203
|
+
{V_D} === [ {VOWELS} {WLONG} {WDIPHTHONGS} ]
|
204
|
+
{V_D_WN} === [ {VOWELS} {WLONG} {WDIPHTHONGS} * {NULL} ]
|
205
|
+
|
206
|
+
{_V_D_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} ]
|
207
|
+
{_V_D_WN_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} * {_NVOWEL_} ]
|
208
|
+
|
209
|
+
\** LONE SHORT VOWELS **\
|
210
|
+
[{VOWELS}] --> TELCO [{_TEHTAR_}] \** Replace isolated short vowels **\
|
211
|
+
|
212
|
+
\** LONE LONG VOWELS **\
|
213
|
+
[{LVOWELS}] --> [{_LONE_LONG_A_} * {_LONE_LONG_E_} * {_LONE_LONG_I_} * {_LONE_LONG_O_} * {_LONE_LONG_U_}]
|
122
214
|
|
215
|
+
[{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
|
216
|
+
|
217
|
+
|
123
218
|
\** TELERIN: changed v/w, removed all y rules **\
|
124
219
|
|
125
220
|
\** ===================== **\
|
@@ -129,14 +224,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
129
224
|
{_L1_} === CALMA * QUESSE * TINCO * PARMA
|
130
225
|
|
131
226
|
{L1_GEMS} === {K}{K} * tt * pp
|
132
|
-
{_L1_GEMS_} === CALMA
|
227
|
+
{_L1_GEMS_} === CALMA {GEMINATE} * TINCO {GEMINATE} * PARMA {GEMINATE}
|
133
228
|
|
134
229
|
\** NORMAL **\
|
135
230
|
[ {L1} ] {V_D_WN} --> [ {_L1_} ] {_V_D_WN_}
|
136
231
|
[ {L1_GEMS} ] {V_D_WN} --> [ {_L1_GEMS_} ] {_V_D_WN_}
|
137
232
|
|
138
|
-
ts{V_D_WN} --> TINCO {_V_D_WN_}
|
139
|
-
ps{V_D_WN} --> PARMA {_V_D_WN_}
|
233
|
+
ts{V_D_WN} --> TINCO ALVEOLAR_SIGN {_V_D_WN_}
|
234
|
+
ps{V_D_WN} --> PARMA ALVEOLAR_SIGN {_V_D_WN_}
|
140
235
|
{K}s{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_}
|
141
236
|
x{V_D_WN} --> CALMA ALVEOLAR_SIGN {_V_D_WN_} \** render ks for x **\
|
142
237
|
|
@@ -159,9 +254,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
159
254
|
[{L3}]{V_D_WN} --> [{_L3_}]{_V_D_WN_}
|
160
255
|
|
161
256
|
\** Override h with vowels (descendent) **\
|
162
|
-
_h{V_D}
|
163
|
-
h
|
164
|
-
|
257
|
+
_h{V_D} --> HYARMEN {_V_D_}
|
258
|
+
\** Starting voiced h before long vowels **\
|
259
|
+
_h[{LVOWELS}] --> HYARMEN [{_LVOWELS_}]
|
260
|
+
|
261
|
+
(h,χ) --> AHA
|
165
262
|
|
166
263
|
\** ===================== **\
|
167
264
|
\** 4TH LINE RULES **\
|
@@ -180,8 +277,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
180
277
|
|
181
278
|
[{L5}]{V_D_WN} --> [{_L5_}]{_V_D_WN_}
|
182
279
|
|
183
|
-
nn{V_D_WN} --> NUMEN
|
184
|
-
mm{V_D_WN} --> MALTA
|
280
|
+
nn{V_D_WN} --> NUMEN {GEMINATE} {_V_D_WN_}
|
281
|
+
mm{V_D_WN} --> MALTA {GEMINATE} {_V_D_WN_}
|
185
282
|
|
186
283
|
\** ===================== **\
|
187
284
|
\** 6TH LINE RULES **\
|
@@ -191,32 +288,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
191
288
|
|
192
289
|
[{L6}]{V_D_WN} --> [{_L6_}]{_V_D_WN_}
|
193
290
|
|
194
|
-
rr{V_D_WN} --> ROMEN
|
291
|
+
rr{V_D_WN} --> ROMEN {GEMINATE} {_V_D_WN_}
|
195
292
|
rd{V_D_WN} --> ARDA {_V_D_WN_}
|
196
293
|
|
197
294
|
\** ===================== **\
|
198
295
|
\** L LINE RULES **\
|
199
296
|
\** ===================== **\
|
200
297
|
{LINE_L} === l * ld * ll
|
201
|
-
{_LINE_L_} === LAMBE * ALDA * LAMBE
|
298
|
+
{_LINE_L_} === LAMBE * ALDA * LAMBE {GEMINATE}
|
202
299
|
|
203
300
|
[{LINE_L}]{V_D_WN} --> [{_LINE_L_}]{_V_D_WN_}
|
301
|
+
|
204
302
|
hl{V_D_WN} --> HALLA LAMBE {_V_D_WN_}
|
205
303
|
hr{V_D_WN} --> HALLA ROMEN {_V_D_WN_}
|
206
|
-
|
304
|
+
|
207
305
|
\** ===================== **\
|
208
306
|
\** S/Z LINE RULES **\
|
209
307
|
\** ===================== **\
|
210
|
-
{L8}
|
211
|
-
{
|
212
|
-
|
213
|
-
[{L8}]{V_D_WN} --> [{_L8_}]{_V_D_WN_}
|
308
|
+
{L8} === s * {SS}
|
309
|
+
{_L8_TEHTAR_} === SILME_NUQUERNA * ESSE_NUQUERNA
|
310
|
+
{_L8_NO_TEHTAR_} === SILME * ESSE
|
214
311
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
{
|
219
|
-
{
|
312
|
+
[{L8}][{VOWELS}] --> [{_L8_TEHTAR_}][{_TEHTAR_}]
|
313
|
+
[{L8}][{LTEHTAR}] --> [{_L8_TEHTAR_}][{_LTEHTAR_}]
|
314
|
+
|
315
|
+
{L8} --> {_L8_NO_TEHTAR_}
|
316
|
+
{L8}[{DIPHTHONGS}] --> {_L8_NO_TEHTAR_}[{_DIPHTHONGS_}]
|
220
317
|
\end
|
221
318
|
|
222
319
|
\beg rules punctuation
|