ã³ã³ãã€ã©ãã€ã³ã¿ããªã¿...ã©ãã ãã®æ¬ãšãããžã§ã¯ãããããã«æ§ããããŠããŸããïŒ ãã¹ã¿ãç²ããïŒ ãããŠãããã§ã¯ãèªç¶èšèªåæã®åéã«å
¥ããŸãããæ
å ±ã¯ãããŸããïŒ ãããŠãããã¯äœããã®åœ¢ã§éåžžã«è€éã§ãçè§£ã§ãããæ®éçã§ã¯ãããŸããã äžäžã®èšèªã®çç·šå°èª¬ãäœæããã¢ã€ãã¢ããããŸããã ããçš®ã®å€ä»£ã®èªç¶èšèªãŸãã¯æ¶ç©ºã®èšèªã§ç»å Žäººç©ãšäŒè©±ã§ããããã«ã ããšãã°ã©ãã³èªã§ïŒ ãããŠãã±ãã¢ãžã ãããŠåœŒããçè§£ããããã«ã ã©ãããŠïŒ
ãã®ããã«å¿
èŠãªã®ã¯ïŒ
1ïŒä»»æã®èšèªã®ææ³èšè¿°åœ¢åŒãéçºããŸãã
2ïŒQuenyaãšLatinã®ææ³ãæžããŸãã
3ïŒæ±çšææ³ã¢ãã©ã€ã¶ãŒããã³ããŒãµãŒãéçºããŸãã
4ïŒãã£ã©ã¯ã¿ãŒã®åäœãšããŒãµãŒãæ¥ç¶ããŸãã
ããšãã°ããã¬ãŽã©ã¹ãæšã«è¿ã¥ãããšãããã¬ãŒãºã¯æ¬¡ã®ããã«è§£éãããŸãã
åè©ãgoãã®ã¹ã¯ãªãããèµ·åããããLegolasããã¢ã¯ã·ã§ã³ãµããžã§ã¯ããšããŠéä¿¡ããïŒã²ãŒã ãªããžã§ã¯ããèŠã€ããã¿ã°ã§æ€çŽ¢ããããšã«ããïŒãæéïŒåœä»€åïŒã瀺ããã远å ã®åŸ
æ©æ¡ä»¶ãªãã§ã¢ã¯ã·ã§ã³ãµããžã§ã¯ããã¢ã¯ã·ã§ã³ãªããžã§ã¯ãã®äœçœ®ã«ç§»åããŸãã
ãã®äžé£ã®èšäºã§ã¯ãææ³ã¢ãã©ã€ã¶ãŒããŒãããããã§ã«githubã«ããå®å
šã«å®å®ããããŒãžã§ã³ãŸã§éçºããŸãïŒèšäºã®æåŸã®ãªã³ã¯ïŒã
1ïŒã¢ãã©ã€ã¶ãŒã¢ãŒããã¯ãã£ã®èšèš
2ïŒææ³ã®èŠçŽãèšè¿°ããããã®èšèªãéçºããŸãïŒéåžžã®èšèªåŠè
ãèšè¿°ã§ããããã«ïŒ
3ïŒéå ±ãèªãããã«ã¢ãã©ã€ã¶ãŒãæãã
4ïŒææ³èŠçŽã«åºã¥ããŠããã¹ããåæããããã¢ãã©ã€ã¶ãŒã«æããŸããã
ã¢ãã©ã€ã¶ãŒã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
1ïŒå質
2ïŒæ¡åŒµå¯èœ
3ïŒã¡ã³ããã³ã¹ãç°¡å
4ïŒèªã¿ããã
ã¢ãã©ã€ã¶ãŒã䜿çšã§ããŸãïŒ
1ïŒã³ãã³ãã©ã€ã³ãã
2ïŒRPCçµç±ã§ãªã¢ãŒããŸãã¯ããŒã«ã«ã«
å€ãã®ã³ãŒããéçŸå®çã«ãªããšæããŸããïŒ ãããC ++ã§äœæããå Žåãå®éã«ã¯ã»ãšãã©äœãããŸããã§ããããæ¬¡ã®å·ã§ã¯ãç§å¯ã«ã2ãæïŒå€æ¹ïŒã§ãã®ãããªãããžã§ã¯ããäœæã§ããéåžžã«å¿«é©ã§çãç°¡æœãªèšèªã«ã€ããŠèª¬æããŸãã
ããã§ã¯å§ããŸãããïŒ
ãŸããææ³ã®èŠçŽãèšè¿°ããããã®èšèªãã©ã®ããã«èŠããã¹ãããèããŠã¿ãŸãããã çŽ æŽãããåºãååã«åŸã£ãŠãå®å
šã«æœè±¡åã«åãæ¿ããŸãã èšèªåŠã§åºå¥ã§ããæœè±¡æŠå¿µã¯äœã§ããïŒ ãã·ãŒããå
šäœã匷調ããŸããã
LïŒã¢ã«ãã¡ãããLïŒå€ãã®æåïŒ
EïŒãšãã»ã³ã¹EïŒåè©ãåè©ãªã©ïŒ
AïŒå±æ§AïŒæéãæ°åãªã©ïŒ
FïŒæ¯èŒã®ã«ãŒã«FïŒäžèšã§ãã®ç¹æ§ãååŸããæ¹æ³ïŒ
FïŒLâ>EâAãããã£ãŠãã¢ãã©ã€ã¶ãŒã¯ãããã®æœè±¡åã§åäœããŸãã
èšèªä»æ§ããªãããã
ãªããžããªã«ã¯ãããéçºãããQuenyaèšèªãšãæå°ã®Lingua Latinaã®èŠçŽããããŸãã ããããåçŽãªæ¶ç©ºã®å€åœèªãªããã®èŠçŽãæžããŸãã ããã«ãããŸãã 仿§ãªã©/ al / tplãéããŸãïŒ
0ïŒã¢ã«ãã¡ãããã
0.1ïŒã¬ã©ã¹ïŒaãoãuïŒã
0.2ïŒåé³ïŒlïŒã
etc/al/tpl/verb.tpl.txt /* * It's time to introduce your experimental 'lol' language. * The 'lol' language has only two verb: 'ololoo' and 'olalaa'. * The infinitive coinsides to vocabular stem. * Present time of the verb forms by shorthening of the last vowel. * Past time forms by replacing of the first vowel 'o' to any other vowel. */
1ïŒ2ã€ã®åè©ïŒololooãolalaaïŒããããŸãã
1.1ïŒçŸåšã¯ãæåŸã®æ¯é³ïŒololoãolalaïŒã®ç¥èªã«ãã£ãŠåœ¢æãããŸãã
1.2ïŒçµéæéã¯ãæåã®æ¯é³ãä»ã®æ¯é³ïŒulollooãalallaaïŒã«çœ®ãæããããšã§åœ¢æãããŸãã
etc/al/tpl/noun.tpl.txt /* * It's time to introduce your experimental 'lol' language. * The 'lol' language has only one noun: 'll'. * But there are small assumption: between two consonants can be places * arbitrary count of arbitrary vowels. */
2ïŒåè©ã1ã€ãããŸãïŒllãlolãloolãluolã...ïŒã
etc/al/tpl/prep.tpl.txt /* * It's time to introduce your experimental 'lol' language. * The 'lol' language has only two preposition: 'ao' and 'oa'. * But there are small assumption: adjacent prepositions can be concatenated. */
3ïŒ2ã€ã®å眮è©ïŒaoãoaïŒããããŸãã
3.1ïŒããã¹ãå
ã®é¢é£ããå眮è©ã¯æ¥çãããŸãïŒao oa-> aooaïŒã
etc/al/tpl/adj.tpl.txt /* * It's time to introduce your experimental 'lol' language. * The 'lol' language has only two adjective: 'lo' and 'ol'. * If adjective ends with consonant - it is consonant declension AD.C (ol). * If adjective ends with vowel - it is vowel declension AD.V (lo). * If adjective has not additional endings - it has singular number. * Plural number forms like this: * For AD.C by adding vowel 'a' * For AD.V by adding suffix 'la' * Superlative A.sup. and comparative A.cmp. are formed like this: * A.sup. by prefix 'al' * A.cmp. exists only for adjective starts with consonant and * forms by appending any short vowel (wildcard @ from 'etc.tpl.txt') * at the beggining of the word. * Superlative and comparative forms plural number on it's own manner. * Only adjectives ends with vowel can form plural A.sup. or A.cmp. by * appending the 'lolo' suffix to the end of the word. */
4ïŒç°ãªãåè§ã®2ã€ã®åœ¢å®¹è©ïŒloãolïŒããããŸãã
4.1ïŒè€æ°ïŒlo-> lolaãol-> olaïŒãããããã
4.2ïŒæäžçŽïŒlo-> alloãol-> alolïŒã
4.3ïŒ1ã€ã®èµ€ç·¯ïŒlo-> aloãuloãoloïŒã®ã¿ã®æ¯èŒã
4.4ïŒãã£ã1ã€ã®åäœã®è€æ°åœ¢ïŒlo-> lololoïŒã
ç«¶äºã ãšã€ãªã¢ã³ã®è©©ãåŠã¶ã
ll ololo-ç°¡åãªæïŒ1ææ³ïŒã
lol ulalaa oa lul olala allololo-è€åæïŒ2ã€ã®ææ³ããŒã¹ïŒã
ç«¶äºïŒæå®ãããèŸæžåœ¢åŒã®æåã®ç¿»èš³ãèãåºãããOloloããšããèšèªã§æãçŸãããé³è²ã®è¯ã8ãã£ãŒããæžããŸãïŒäžèšã®ææ³ã®ãã¹ãŠã®èŠåã«åŸããŸãïŒã ãã®ãªãã¡ãŒã¯ãèšäºã®å
¬éæ¥ãã2é±éæå¹ã§ãã
ã³ã¡ã³ãã«åçãæžããapborezkiy @ gmail.comã§ãããã¯ãACCïŒ1ãã瀺ãããã«ããŠãã ããã
åè³è
ã¯åŸç¶ã®èšäºã§çºè¡šãããç§ãæå©ãã§ãããããã¯ã«ã€ããŠã¯ç¡æã®Skypeçžè«ãåããŸãã
ãã¹ãã«ããéçºã
TDDã®åçã䜿çšããŠãæåã«ã¢ãã©ã€ã¶ãŒã®ãã¹ãææãæºåããŸãã
var / test.tpl / test.in oa / *å眮è©* /
aooaaooa / *é£çµãããå眮è©* /
loool / *åè©* /
ll / *åè©* /
ololoo / *åè©äžå®è©* /
olalaa / *åè©äžå®è©* /
ulalaa / *éå»ã®åè©* /
uloloo / *éå»ã®åè©* /
ololo / *åè©çŸåšæå»* /
olala / *åè©çŸåšæå»* /
lo / *åæ°åœ¢å®¹è©æ¯é³åè§* /
ol / *åæ°åœ¢ã®åé³ã®æ Œå€å* /
lola / *è€æ°åœ¢å®¹è©æ¯é³ã®å€å* /
ola / *è€æ°åœ¢å®¹è©åé³ã®æ Œå€å* /
allo / *åæ°åœ¢ã®æäžçŽã®åœ¢å®¹è©æ¯é³ã®å€å* /
alol / *åæ°åœ¢ã®æäžçŽåœ¢å®¹è©åé³ã®æ Œå€å* /
ulo / *åæ°åœ¢ã®åœ¢å®¹è©ã®æ¯é³ã®åè§* /
allololo / *è€æ°åœ¢ã®æäžçŽã®åœ¢å®¹è©æ¯é³ã®å€å* /
ulololo / *è€æ°åœ¢ã®åœ¢å®¹è©ã®æ¯é³ã®å€å* /
ä»åŸããã®ãããªè©³çްãªåæãåºåããããã«ã¢ãã©ã€ã¶ãŒã«ããã§æãããšèšããŸãã
var / test.tpl / test.out oa {
å眮è©{/ * 1.4.1.1.1.1.1.100ã * /
pars_orationis = pã / *å眮è©* /
{
mp_prep = oa / * voc_prepositions * /
}
}
}
aooaaooa {
å眮è©{/ * 1.4.1.1.1.2.1.2.1.1.2.1.2.1.1.2.1.2.1.1.1.1.100.100.100.100ã * /
pars_orationis = pã / *å眮è©* /
{
mp_prep = oa / * voc_prepositions * /
mp_prep = ao / * voc_prepositions * /
mp_prep = oa / * voc_prepositions * /
mp_prep = ao / * voc_prepositions * /
}
}
}
loool {
åè©{/ * 1.2.1.1.1.2.1.2.2.1.2.1.1.3.1.1.2.100ã * /
pars_orationis = nã / *åè©* /
{
mn_stem = ll / * voc_nouns * /
/ * mn_vowel_left = ooo * /
/ * mn_vowel_left = o * /
/ * mn_vowel_left * /
/ * mn_vowel_right * /
}
}
}
ll {
åè©{/ * 1.2.1.1.1.1.1.3.1.1.2.100ã * /
pars_orationis = nã / *åè©* /
{
mn_stem = ll / * voc_nouns * /
/ * mn_vowel_left * /
/ * mn_vowel_right * /
}
}
}
ololoo {
åè©{/ * 1.3.1.1.1.1.1.2.100ã * /
pars_orationis = vbã / *åè©* /
mvb_time = V.infã / *äžå®è©* /
{
mvb_stem = ololoo / * voc_verbs * /
/ * mvb_time_past * /
}
}
}
olalaa {
åè©{/ * 1.3.1.2.2.1.1.1.100ã * /
pars_orationis = vbã / *åè©* /
mvb_time = V.infã / *äžå®è©* /
{
mvb_stem = olalaa / * voc_verbs * /
/ * mvb_time_present * /
}
}
}
ulalaa {
åè©{/ * 1.3.1.1.1.2.1.2.100ã * /
mvb_time = Vp / *éå»ã®æé* /
pars_orationis = vbã / *åè©* /
{
mvb_stem = olalaa / * voc_verbs * /
/ * mvb_time_past = o * /
}
}
}
uloloo {
åè©{/ * 1.3.1.1.1.2.1.2.100ã * /
mvb_time = Vp / *éå»ã®æé* /
pars_orationis = vbã / *åè©* /
{
mvb_stem = ololoo / * voc_verbs * /
/ * mvb_time_past = o * /
}
}
}
ololo {
åè©{/ * 1.3.1.2.2.2.1.1.100ã * /
mvb_time = V.pr / *çŸåšã®æé* /
pars_orationis = vbã / *åè©* /
{
mvb_stem = ololoo / * voc_verbs * /
/ * mvb_time_present = oo * /
}
}
}
ãªã©ã©{
åè©{/ * 1.3.1.2.2.2.1.1.100ã * /
mvb_time = V.pr / *çŸåšã®æé* /
pars_orationis = vbã / *åè©* /
{
mvb_stem = olalaa / * voc_verbs * /
/ * mvb_time_present = aa * /
}
}
}
lo {
圢容è©{/ * 1.1.1.1.1.3.1.3.2.1.2.100ã * /
aa_number =A.sgã / *åæ°* /
pars_orationis = adjã / *圢容è©* /
{
ma_stem = lo / * voc_adjectives * /
/ * ma_degree * /
/ * ma_number * /
}
}
}
ol {
圢容è©{/ * 1.1.1.1.1.3.1.3.1.1.2.100ã * /
aa_number =A.sgã / *åæ°* /
pars_orationis = adjã / *圢容è©* /
{
ma_stem = ol / * voc_adjectives * /
/ * ma_degree * /
/ * ma_number * /
}
}
}
ããŒã©{
圢容è©{/ * 1.1.1.1.1.3.1.3.4.1.2.100ã * /
aa_degree = A.no. / *ç¹å¥ãªåŠäœãªã* /
aa_number =A.plã / *è€æ°* *
pars_orationis = adjã / *圢容è©* /
{
ma_stem = lo / * voc_adjectives * /
/ * ma_degree * /
/ * ma_number = la * /
}
}
}
ola {
圢容è©{/ * 1.1.1.1.1.3.1.3.3.1.2.100ã * /
aa_number =A.plã / *è€æ°* *
aa_degree = A.no. / *ç¹å¥ãªåŠäœãªã* /
pars_orationis = adjã / *圢容è©* /
{
ma_stem = ol / * voc_adjectives * /
/ * ma_degree * /
/ * ma_number = a * /
}
}
}
allo {
圢容è©{/ * 1.1.1.1.1.1.1.3.2.1.2.100ã * /
aa_number =A.sgã / *åæ°* /
pars_orationis = adjã / *圢容è©* /
aa_degree = A. / *æäžçŽ* /
{
ma_stem = lo / * voc_adjectives * /
/ * ma_degree = al * /
/ * ma_number * /
}
}
}
alol {
圢容è©{/ * 1.1.1.1.1.1.1.3.1.1.2.100ã * /
aa_number =A.sgã / *åæ°* /
pars_orationis = adjã / *圢容è©* /
aa_degree = A. / *æäžçŽ* /
{
ma_stem = ol / * voc_adjectives * /
/ * ma_degree = al * /
/ * ma_number * /
}
}
}
ulo {
圢容è©{/ * 1.1.1.1.1.2.1.3.2.1.2.100ã * /
aa_number =A.sgã / *åæ°* /
aa_degree = A.cmpã / *æ¯èŒ* /
pars_orationis = adjã / *圢容è©* /
{
ma_stem = lo / * voc_adjectives * /
/ * ma_degree = ul * /
/ * ma_number * /
}
}
}
allololo {
圢容è©{/ * 1.1.1.1.1.1.1.3.5.1.2.100ã * /
aa_number =A.plã / *è€æ°* *
pars_orationis = adjã / *圢容è©* /
aa_degree = A. / *æäžçŽ* /
{
ma_stem = lo / * voc_adjectives * /
/ * ma_degree = al * /
/ * ma_number = lolo * /
}
}
}
ulololo {
圢容è©{/ * 1.1.1.1.1.2.1.3.5.1.2.100ã * /
aa_degree = A.cmpã / *æ¯èŒ* /
aa_number =A.plã / *è€æ°* *
pars_orationis = adjã / *圢容è©* /
{
ma_stem = lo / * voc_adjectives * /
/ * ma_degree = ul * /
/ * ma_number = lolo * /
}
}
}
æ°åã¯äžé£ã®èŠåïŒæ°Žå¹³ããã³åçŽïŒãæå³ããŸãã åæã®ã·ãŒã±ã³ã¹ã远跡ããããšã¯éåžžã«äŸ¿å©ã§ãã
æåã®èŠçŽãæžããŠããŸãã
ã¢ã«ãã¡ããã
ããã§ã¯ãã»ãã¥ãªãã£æ
å ±ã説æããèšèªã¯äœã§ããããïŒ ãŸããOOPã¹ã¿ã€ã«ã®ã¢ã«ãã¡ãããã
äºçŽæžã¿ããŒã¯ã³ã¯æ¬¡ã®ãšããã§ãã
1ïŒ.alphabet-ã¢ã«ãã¡ãããã®èª¬æã®å§ãŸãã瀺ããŸã
2ïŒ.base-芪ã¢ã«ãã¡ãããã瀺ããŸã
3ïŒ= "" {}
etc/al/tpl/etc.tpl.txt .alphabet short_vowel { a = "vowel (a)" o = "vowel (o)" u = "vowel (u)" } .alphabet long_vowel { aa = "long vowel (a)" oo = "long vowel (o)" } .alphabet vowel .base short_vowel long_vowel { } .alphabet consonant { l = "consonant l" } .alphabet phoneme .base vowel consonant { }
èšèªãšã³ãã£ãã£ã®éå±€
第äºã«ããšã³ãã£ãã£ïŒåè©ïŒãšãã®å±æ§ã®èª¬æã
äºçŽæžã¿ããŒã¯ã³ã¯æ¬¡ã®ãšããã§ãã
1ïŒ.attribute-屿§ã®èª¬æã®å§ãŸãã瀺ããŸãã
2ïŒ.class-ãšã³ãã£ãã£ã®èª¬æã®å§ãŸãã瀺ããŸãã
3ïŒ= "" {}
etc/al/tpl/lang.tpl.txt .attribute pars_orationis 0 { n. = "noun" adj. = "adjective" vb. = "verb" p. = "preposition" }
etc/al/tpl/verb.tpl.txt .attribute mvb_time 1 { V.inf. = "infinitive" V.pr. = "present time" Vp = "past time" } .class verb { pars_orationis mvb_time }
etc/al/tpl/noun.tpl.txt .class noun { pars_orationis }
etc/al/tpl/prep.tpl.txt .class preposition { pars_orationis }
etc/al/tpl/adj.tpl.txt .attribute aa_declension 1 .verbose { AD.C = "consonant declension" AD.V = "vovel declension" } .attribute aa_number 2 { A.sg. = "singular number" A.pl. = "plural number" } .attribute aa_degree 3 { A.no. = "no special degree" A.sup. = "superlative" A.cmp. = "comparative" } .class adjective { pars_orationis aa_declension aa_number aa_degree }
屿§åã®åŸã®æ°åã¯ãåºåãã¡ã€ã«ã«åºåããã屿§ã®é åºã瀺ããŸãïŒããããããããããïŒã
èªåœ
èŸæžãå°å
¥ããæãæ¥ãŸããïŒ
etc/al/tpl/voc.tpl.txt .vocabulary voc_adjectives { lo adj. AD.V ol adj. AD.C } .vocabulary voc_nouns { ll n. } .vocabulary voc_prepositions { ao p. oa p. } .vocabulary voc_verbs { ololoo vb. olalaa vb. }
äºçŽæžã¿ããŒã¯ã³ã¯æ¬¡ã®ãšããã§ãã
1ïŒ.vocabulary-èŸæžã®èª¬æã®å§ãŸãã瀺ããŸãã
2ïŒ{}
ããã§ãåãã£ã¯ã·ã§ããªãšã³ããªã¯ããšã³ãã£ãã£ãšäžé£ã®å±æ§ã«ããããããŸãã ç§ãã¡ã®éæ³ã®åŒãèŠããŠããŸããïŒ
ã¯ã€ã«ãã«ãŒã
ãŸããçªç¶å€ç°ããããã³ã°ã«ãŒã«ã§äœ¿çšãããã¯ã€ã«ãã«ãŒãïŒãšã€ãªã¢ã¹ïŒãå
¥åããå¿
èŠããããŸãã
etc/al/tpl/etc.tpl.txt .wildcard . phoneme .wildcard * vowel .wildcard # consonant .wildcard @ short_vowel
ããã§ãäžèšã§èª¬æããã¢ã«ãã¡ãããã®ã¯ã€ã«ãã«ãŒããæå®ããŸãã
次ã«ãåèªã§çºçãã倿ïŒçªç¶å€ç°ïŒãèšè¿°ããå¿
èŠããããŸãã
etc/al/tpl/etc.tpl.txt .mutation longify_vowel .mutation change_vowel_to_o
äºçŽæžã¿ããŒã¯ã³ã¯æ¬¡ã®ãšããã§ãã
1ïŒ.mutation-倿ã®èª¬æã®éå§ã瀺ããŸãã
2ïŒ{}
3ïŒ=
çªç¶å€ç°ã®å·ŠåŽã«ã¯ãã¢ã«ãã¡ãããæåãšã¯ã€ã«ãã«ãŒãã®äž¡æ¹ãæžãããšãã§ããŸãã
ããŠãä»ç§ãã¡ã®çªç¶å€ç°ã®ã¯ã€ã«ãã«ãŒãèªäœïŒ
etc/al/tpl/etc.tpl.txt .wildcard (a>aa,o>oo) longify_vowel .wildcard (*>o) change_vowel_to_o
ãããã³ã°ã«ãŒã«
äžçªé£ããéšåãæ®ã£ãã äžèŽããã«ãŒã«ã ãã®èãæ¹ã¯èŸæžã«äŒŒãŠããŸãããèŸæžåœ¢åŒã®ä»£ããã«ãã¯ã€ã«ãã«ãŒããšã¢ã«ãã¡ãããæåã䜿çšãããã¹ã¯ã䜿çšãããŸãã
åè©ãç
§åããããã®ã«ãŒã«ã
etc/al/tpl/voc.tpl.txt .vocabular .inward mn_stem voc_nouns .match .forward mn_vowel_left { =## =#+* mn_vowel_left } .match .backward mn_vowel_right { =## mn_vowel_right +*=# } .match .inward-void m_noun { mn_vowel_left mn_stem mn_vowel_right | n. noun }
äºçŽæžã¿ããŒã¯ã³ã¯æ¬¡ã®ãšããã§ãã
1ïŒ.match-äžèŽã«ãŒã«ã®èª¬æã®å§ãŸãã瀺ããŸãã
2ïŒ.backward-ãã¹ã¯ã¯åèªã®æ«å°Ÿã§äžèŽãå§ããŸãïŒæ¥å°ŸèŸãšæ«å°Ÿã«äŸ¿å©ã§ãïŒã
2ïŒ.forward-åèªã®å
é ã§ãã¹ã¯ãäžèŽãå§ããŸãïŒãã¬ãã£ãã¯ã¹ã«äŸ¿å©ã§ãïŒã
3ïŒ.inward-void-æåããæåŸãŸã§ãæ¬¡ã«æåã«ããšããããã«èªåœãŸã§ã
4ïŒ| -åçŽããŒã®åŸã«ããã¹ã¯ã«äžèŽããåèªã®å¯Ÿå¿ããç¹æ§ãå§ãŸããŸãã
5ïŒ{}
6ïŒ+-=
å·ŠåŽã¯åèªã®ãã¹ã¯ãå³åŽã¯ãã¹ã¯ã察å¿ãã屿§ãŸãã¯ãšã³ãã£ãã£ã§ãã ãã¹ã¯ã¯äžé£ã®ã«ãŒã«ã§æ§æãããç¬ç«ããã«ãŒã«ããŸãã¯ã¢ã«ãã¡ãããæåãšç¹æ®æåã+ããã-ããã=ããå«ãã¯ã€ã«ãã«ãŒãæåã®çµã¿åããã®ããããã§ãã
ãããã³ã°ã«ãŒã«ã®ä»æ§ãèšè¿°ããŸãã
etc/al/tpl/adj.tpl.txt /* * Match specification is the powerful easy mechanism for words recognision. * Each regular match expression has 3 mode: * * '=' match mode: * only comparation. * '+' rift mode: * comparation and rifting from subword copy, * appending detached part to rule 'value' field that could be * found in the output generated files. * '-' hold mode (comparation and holding) * comparation and holding (not detaching), * appending holded part to rule 'value' field that could be * found in the output generated files. * * Also regular expressions supports negotiation of the single next character * or wildcard (wildcard can has arbitrary name length) through the preceding * reserved symbol '~'. * * Examples: /* meaning */ * =~a /* not 'a' */ * =~ab /* not 'a' followed by 'b' */ * =~a~b /* not 'a' followed by not 'b' */ * =~# /* not any phoneme from wildcard '#' consistent alphabet tree */ */
äžèŽããåè©ã®ã«ãŒã«ãåæããŸã
ããŠãããã¯ã©ã®ããã«æ©èœããŸãã ããšãã°ãåè©ã
.match .inward-void m_noun { mn_vowel_left mn_stem mn_vowel_right | n. noun }
æåã«ãã«ãŒã«ãm_nounããæåŸããèæ
®ãããŸããããã¯ã次ã®ããã«äžèŽããã«ãŒã«ãæåŸããã-ãmn_vowel_rightããããã«èæ
®ããŸãã
.match .backward mn_vowel_right { =## mn_vowel_right +*=# }
æåã®ãã¹ã¯ã= ##ãããã§ãã¯ãããŸãã æåã«ãæåããšã®æ¯èŒ "="ã®éåžžã¢ãŒããžã®ãã€ã³ã¿ããããŸãã ãã®åŸãã«ã¯ãäžèšã®2ã€ã®ã¯ã€ã«ãã«ãŒããïŒããããã2ã€ã®åé³ãæå³ããŸãã ãã®ãããåèªã®æåŸã«2ã€ã®åé³ãããã¯ãã§ãããã®èŠåã¯çµäºããŸãã
ã€ãã³ããmn_vowel_right + * =ïŒãã®ä»£æ¿éçºãæ€èšããŠãã ããã ãã®ã«ãŒã«ã¯ååž°çã§ãã ããã¯åé³ãæåŸã«ããããšãæå³ããŸãã ãã®åŸããã®åé³ã®åã«ã1ã€ã®æ¯é³ãåå²ããŠããã®èŠåã®çµæãšããŠãããé²é³ããå¿
èŠããããŸãã å¯èœãªãªãã·ã§ã³ã= ##ããèŠã€ãããŸã§ãããç¹°ãè¿ããŸãã ã€ãŸã åé€ããã¬ã©ã¹ã¯ãã¹ãŠãmn_vowel_rightãã®çµæã«ãªããåæçµæã«è¡šç€ºãããŸãã
mn_vowel_rightã«ãŒã«ã¯æ®µéçã§ãã ããšãã°ããlooloolããšããåèªãèããŠãã ããã
åèªäŒæ© | ãã¿ãŒã³ãããã³ã° | çµæ |
ã«ãŒããŒã« | ïŒæ¯èŒã¢ãŒã | |
ã«ãã« | *åæã¢ãŒã | o |
ã«ãã« | ïŒæ¯èŒã¢ãŒã | o |
ç¬ã | *åæã¢ãŒã | ãã |
ç¬ã | ##æ¯èŒã¢ãŒã | ãã |
çµããã«åãã£ãŠãç§ãã¡ã¯å€§éšãããŸããã ãmn_vowel_leftãã§ããã«é²ã¿ãŸãã åæ§ã«ãæåŸã«ã¯ãlllããåŸãããŸãã ãmn_stemãã§ããã«é²ã¿ãèŸæžã§æ€çŽ¢ãããŸãã
èŸæžã«ã¯ãã®ãããªåèªããªãããããã®äžé£ã®ã«ãŒã«ã¯äžé©åãšã¿ãªãããŸãã ãããããloooolãã䜿çšãããšãåè©ãllãã®èªåœåœ¢åŒãåŸãããŸãã
åè©ãçè§£ããŸããã ãµã ãŸã ç²ããŠããŸãããïŒ å°ããªã©ãã¯ã¹ããŠãåè©ãåãäžããŸãã
åè©ç
§åã«ãŒã«ãåæããŸã
etc/al/tpl/verb.tpl.txt .vocabulary voc_verbs ; .vocabular .inward mvb_stem voc_verbs .match .backward mvb_time_present { =. | V.inf. -(a>aa,o>oo) | V.pr. } .match .forward mvb_time_past { =. | V.inf. =~o-(*>o) | Vp } .match .inward-void m_verb { mvb_time_past mvb_stem | vb. verb mvb_stem mvb_time_present | vb. verb }
ããã§ã¯ããã«è峿·±ãããšã«ãäžèšã®çªç¶å€ç°ã䜿çšããŠèåã®å¹æãå埩ããŸãã åããŠãã-ãããŒã«ãã¢ãŒãã䜿çšãããŸããããã¯ãã+ããåå²ãã代ããã«ãã·ã³ãã«ãã=ããšããŠä¿æããŸãããã«ãŒã«ã®çµæã«ã+ããšããŠæžã蟌ã¿ãŸãã
æåããè¡ããŸãããã åèªulollooãåããŸãã éå»ãšçŸåšã®æå¶ã®ã«ãŒã«ãåæããŸãã
ã«ãŒã«ã¯ãmvb_time_pastãã§ãã
åèªäŒæ© | ãã¿ãŒã³ãããã³ã° | çµæ |
ãŠãã«ãŒ | | |
ãªãã«ãŒ | ïŒ*> oïŒä¿çäž | ããªã㯠|
ãªãã«ãŒ | æ¯èŒã¢ãŒãã§ã¯ãoãã§ã¯ãããŸãã | ããªã㯠|
ã¢ãã©ã€ã¶ãŒã¯ããã¹ãŠã®çš®é¡ã®ã€ãã³ããã§ãŒã³ãèæ
®ããŸãããV.infãªã©ã®ç«¶åããç¹æ§ãããå Žåã ãããŠãVpã¯åæ§ã®ã·ããªãªãäžå¯èœãšããŠå±éããŸãã
ã«ãŒã«ã¯ãmvb_time_presentãã§ãã ãªãããšããèšèã䜿ã£ãŠãã ããã
åèªäŒæ© | ãã¿ãŒã³ãããã³ã° | çµæ |
ãªãã | | |
ãªãã«ãŒ | ïŒa> aaão> ooïŒä¿çäž | o |
圢容è©ãããã³ã°èŠåãåæããŸã
ç¹æ§ããããåŠå®ããåã«ãã£ã«ãã ããA.no.ã ãã®åŸãå°æ¥çã«A supãŸãã¯A.cmpã®ããããããŸãã¯äœãèš±å¯ãããŸããã
.match .backward ma_number { =# | A.sg. AD.C =* | A.sg. AD.V =#+a | A.pl. AD.C A.no. =*+la | A.pl. AD.V A.no. =*+lolo | A.pl. AD.V ~ A.no. } .match .forward ma_degree { +al | A.sup. +@-# | A.cmp. =. | ~ A.sup. ~ A.cmp. } .match .inward-void m_adjective { ma_degree ma_stem ma_number | adj. adjective }
ã¢ããããšããèšèã
䜿ã£ãŠãã ãã ã ãã倧ããªã¹ãããã§æ€èšããŠãã ããã
åèª | ã«ãŒã« | ãããã³ã°ãã¿ãŒã³ | çµæ | åèªäŒæ© |
ã¢ããã | ma_number | ã= *ããŸãã¯ã= * + loloã | ããããã | allololoãŸãã¯allo |
ã¢ããããã¢ã | ma_degree | ã+ alãã¯ã+ @-ïŒããŸãã¯ã=ãã§ãã | ãAlããŸãã¯ãalããã©ãã | lololoãloãŸãã¯llololoãlloãŸãã¯allololoãallo |
lololoãloãŸãã¯llololoãlloãŸãã¯allololoãallo | ma_stem | èªåœ | ãã | ãã |
loã«ã®ã¿é©åããŸãã ãããã£ãŠãç¹æ§ã®æ¯èŒã®å¯äžã®é©åãªãã§ãŒã³ãåŸãããŸããã AD.VãA.no. Asupã èª¿æŽ åœ¢å®¹è©ãã ãããã£ãŠã
allololoãšããåèªã¯ãè€æ°åœ¢ã®æäžçŽã®åœ¢å®¹è©æ¯é³ã®å€åããæç¢ºã«è¡šããŸãã
è峿·±ãå Žåã¯ãææ³èšè¿°èšèªã«ã€ããŠãå¥ã®ã·ãªãŒãºã®èšäºã«å°å¿µããŸãã ããã§ã¯ãããããªãïŒ
ãŠãããŒãµã«ã°ã©ããŒã¢ãã©ã€ã¶ãŒã¯æ¬¡ã®å Žæããå
¥æã§ããŸã
github.com/ArseniyBorezkiy/arda_compiler_collection次å·ã§ã¯ãã¢ãã©ã€ã¶ãŒã®èšèšãšã³ãŒãã£ã³ã°ã«çŽæ¥é²ã¿ãŸãã