glaemscribe 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|