Mi lernas Esperanton kaj latinan lingvon.
O-vorto en latino havas genroj, numeroj kaj kazoj. Mi volas esprimi la flekson per JavaScript.
O-vorto de singulara nominativo kaj gentivo determinas la alia kazoj.
Se oni volas montri kazon de lation, kiel oni pensas de la strukturo pri o-vorto en JavaScript? Klaso "Nomen" estas konstruita de singrara kaj gentiva nominativoj.
function Nomen(nom, gen) {
// sigularo
this.sg.n = nom; // nominativo
this.sg.ac = ... // akuzativo
this.sg.g = f(nom, gen) // genitivo
this.sg.d = ... // dativo
this.sg.ab = ... // ablativo
// pluraro
this.pl.n = ... // nominativo
...
this.pl.ab = ... // ablativo
}
La kazoj normale ordigas kiel nominativo, vokativo, gentivo, dativo, akuzativo kaj ablativo. Tamen mi ordigas kiel nominativo, akuzativo, gentivo, dativo kaj ablativo. Kelkaj nomo havas samaj formoj en nominativo kaj vokatio, aŭ akuzativo kaj ablativo.
Oni latinaj o-vortoj klasas kvinan grupon de la radikala karaktero.
O-vorto en unua fleksio havas du karakteron.
function Nomen(nom, gen) {
if (nom.match(/a$/) && gen.match(/ae$/)) { //
// singlaro
this.sg.n = nom; // nominativo
this.sg.ac = nom.replace(/a$/, "am") // akuzativo
this.sg.g = nom.replace(/a$/, "ae") // genitivo
this.sg.d = nom.replace(/a$/, "ae") // dativo
this.sg.ab = nom.replace(/a$/, "ā") // ablativo
// pluraro
this.pl.n = nom.replace(/a$/, "ae") // nominativo
this.pl.ac = nom.replace(/a$/, "ās") // akuzativo
this.pl.g = nom.replace(/a$/, "ārum") // genitivo
this.pl.d = nom.replace(/a$/, "īs") // dativo
this.pl.ab = nom.replace(/a$/, "īs") // ablativo
}
}
Dua fleksio havas tri tipoj.
function Nomen(nom, gen) {
if (nom.match(/us$/) && gen.match(/ī$/)) { // Dua fleksio
// singlaro
this.sg.n = nom; // nominativo
this.sg.ac = nom.replace(/us$/, "um") // akuzativo
this.sg.g = nom.replace(/us$/, "ī") // genitivo
this.sg.d = nom.replace(/us$/, "ō") // dativo
this.sg.ab = nom.replace(/us$/, "ō") // ablativo
// pluraro
this.pl.n = nom.replace(/us$/, "ī") // nominativo
this.pl.ac = nom.replace(/us$/, "ōs") // akuzativo
this.pl.g = nom.replace(/us$/, "ōrum") // genitivo
this.pl.d = nom.replace(/us$/, "īs") // dativo
this.pl.ab = nom.replace(/us$/, "īs") // ablativo
}
}
function Nomen(nom, gen) {
if (nom.match(/er$/) && gen.match(/rī$/)) { // Dua fleksio
// singlaro
this.sg.n = nom; // nominativo
this.sg.ac = nom.replace(/us$/, "um") // akuzativo
this.sg.g = nom.replace(/us$/, "ī") // genitivo
this.sg.d = nom.replace(/us$/, "ō") // dativo
this.sg.ab = nom.replace(/us$/, "ō") // ablativo
// pluraro
this.pl.n = nom.replace(/us$/, "ī") // nominativo
this.pl.ac = nom.replace(/us$/, "ōs") // akuzativo
this.pl.g = nom.replace(/us$/, "ōrum") // genitivo
this.pl.d = nom.replace(/us$/, "īs") // dativo
this.pl.ab = nom.replace(/us$/, "īs") // ablativo
}
}
function Nomen(nom, gen) {
if (nom.match(/um$/) && gen.match(/ī$/)) { // Dua fleksio (-us)
// singlaro
this.sg.n = nom; // nominativo
this.sg.ac = nom.replace(/us$/, "um") // akuzativo
this.sg.g = nom.replace(/us$/, "ī") // genitivo
this.sg.d = nom.replace(/us$/, "ō") // dativo
this.sg.ab = nom.replace(/us$/, "ō") // ablativo
// pluraro
this.pl.n = nom.replace(/us$/, "ī") // nominativo
this.pl.ac = nom.replace(/us$/, "ōs") // akuzativo
this.pl.g = nom.replace(/us$/, "ōrum") // genitivo
this.pl.d = nom.replace(/us$/, "īs") // dativo
this.pl.ab = nom.replace(/us$/, "īs") // ablativo
}
}
Tria flekso havas multaj paternoj.
Kliku [Montru!], kaj vorto, contento kaj fleksoj montras.
Lernejo de Marinkjo > JavaScript > lerni latinon