UNPKG

taipa

Version:

Taiwanese morphological parsing library

250 lines 9.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TonalUnmutationPhrasemeMaker = exports.TonalUnmutationPhraseme = exports.TonalMutationPhrasemeMaker = exports.TonalMutationPhraseme = exports.TonalUninfectionPhrasemeMaker = exports.TonalUninfectionPhraseme = exports.TonalInfectionPhrasemeMaker = exports.TonalInfectionPhraseme = exports.TonalUninsertionPhrasemeMaker = exports.TonalUninsertionPhraseme = exports.TonalInsertionPhrasemeMaker = exports.TonalInsertionPhraseme = exports.TonalInflectionPhrasemeMaker = exports.SerialPhraseme = exports.TonalMainParticlePhraseme = exports.TonalCompoundPhraseme = exports.PhrasalVerbVppPhraseme = exports.PhrasalVerbPhraseme = void 0; const unit_1 = require("../unit"); const metaplasm_1 = require("./metaplasm"); const unit_2 = require("../unchange/unit"); /** A phrase of length 2 and its inflected forms. */ class PhrasalVerbPhraseme extends unit_1.Phraseme { /** Verb + particle */ phrase; forms = new Array(); constructor(verb, particle, metaplasm) { super(); this.phrase = new unit_2.TonalPhrase([verb.word, particle.word]); this.forms = metaplasm.apply(verb, particle); } /** Returns proceeding forms or participle forms */ getForms() { return this.forms; } } exports.PhrasalVerbPhraseme = PhrasalVerbPhraseme; /** A phrase of length 3 and its inflected forms. */ class PhrasalVerbVppPhraseme extends unit_1.Phraseme { /** Verb + particle + particle */ phrase; forms = new Array(); constructor(verb, particle, particleTwo, metaplasm) { super(); this.phrase = new unit_2.TonalPhrase([verb.word, particle.word, particleTwo.word]); this.forms = metaplasm.apply(verb, particle, particleTwo); } /** Returns proceeding forms, participle forms, or transitive forms. */ getForms() { return this.forms; } } exports.PhrasalVerbVppPhraseme = PhrasalVerbVppPhraseme; /** A compound. */ class TonalCompoundPhraseme extends unit_1.Phraseme { /** Preceding word is inflected while following word is not. */ phrase; /** Separable phrasal verb. Separate compound verb. Separable verb. Thiapwsux gifchongwguy. Tiapwsux gifsiannzguy. Adverb + verb. Prepositional verb. */ constructor(preceding, following) { super(); this.phrase = new unit_2.TonalPhrase([preceding.getForms()[0], following.word]); } } exports.TonalCompoundPhraseme = TonalCompoundPhraseme; /** A phrase and its inflected forms. */ class TonalMainParticlePhraseme extends unit_1.Phraseme { /** Main word and its particle. */ phrase; forms = new Array(); /** E-adjective. Le form. Terminal form of possesive case. */ constructor(main, particle, metaplasm) { super(); this.phrase = new unit_2.TonalPhrase([main.word, particle.word]); this.forms = metaplasm.apply(main, particle); } /** Returns adnominal forms or conjunctive forms. */ getForms() { return this.forms; } } exports.TonalMainParticlePhraseme = TonalMainParticlePhraseme; /** A phrase and its proceeding forms. */ class SerialPhraseme extends unit_1.Phraseme { /** A series of words that are inflected except for the last one. */ phrase; forms = new Array(); /** A series of lexemes. */ constructor(lexemes) { super(); // the base form is equivalent to a compound when there are only 2 words const words = []; for (let i = 0; i < lexemes.length - 1; i++) { if (lexemes[i].getForms().length > 0 && lexemes[i].getForms()[0]) { words.push(lexemes[i].getForms()[0]); } } if (lexemes[lexemes.length - 1] && lexemes[lexemes.length - 1].word.literal.length > 0) { words.push(lexemes[lexemes.length - 1].word); } this.phrase = new unit_2.TonalPhrase(words); const forms = lexemes .filter(it => it.getForms().length > 0 && it.getForms()[0]) .map(it => it.getForms()[0]); if (forms.length > 0) this.forms = [new unit_2.TonalPhrase(forms)]; else this.forms = []; } /** Returna a series of inflected words. */ getForms() { return this.forms; } } exports.SerialPhraseme = SerialPhraseme; class TonalInflectionPhrasemeMaker { makePhrasalVerbPhraseme(verb, particle) { return new PhrasalVerbPhraseme(verb, particle, new metaplasm_1.ConjugateToProceeding()); } makePhrasalVerbVppPhraseme(verb, particle, particleTwo) { return new PhrasalVerbVppPhraseme(verb, particle, particleTwo, new metaplasm_1.ConjugateVppToProceeding()); } makeTransitiveVppPhraseme(verb, particle, particleTwo) { return new PhrasalVerbVppPhraseme(verb, particle, particleTwo, new metaplasm_1.ConjugateVppToTransitive()); } makeCompoundPhraseme(preceding, following) { return new TonalCompoundPhraseme(preceding, following); } makeAdjectivePhraseme(adjectivalNoun, e) { return new TonalMainParticlePhraseme(adjectivalNoun, e, new metaplasm_1.Adnominal()); } makeConjunctivePhraseme(verb, le) { return new TonalMainParticlePhraseme(verb, le, new metaplasm_1.Conjunctive()); } makePossesivePhraseme(noun, ex) { return new TonalMainParticlePhraseme(noun, ex, new metaplasm_1.Adnominal()); } makeParticiplePhraseme(verb, particle) { return new PhrasalVerbPhraseme(verb, particle, new metaplasm_1.ConjugateToParticiple()); } makeVppParticiplePhraseme(verb, particle, particleTwo) { return new PhrasalVerbVppPhraseme(verb, particle, particleTwo, new metaplasm_1.ConjugateVppToParticiple()); } makeSerialPhraseme(lexemes) { return new SerialPhraseme(lexemes); } } exports.TonalInflectionPhrasemeMaker = TonalInflectionPhrasemeMaker; class TonalInsertionPhraseme { phrase; forms = new Array(); constructor(preceding, following, metaplasm) { this.phrase = new unit_2.TonalPhrase([preceding.word, following.word]); this.forms = metaplasm.apply(preceding, following); } /** Returns inserted forms. */ getForms() { return this.forms; } } exports.TonalInsertionPhraseme = TonalInsertionPhraseme; class TonalInsertionPhrasemeMaker { makePhraseme(preceding, following, metaplasm) { return new TonalInsertionPhraseme(preceding, following, metaplasm); } } exports.TonalInsertionPhrasemeMaker = TonalInsertionPhrasemeMaker; class TonalUninsertionPhraseme { phrase; forms = new Array(); constructor(preceding, following, metaplasm) { this.phrase = new unit_2.TonalPhrase([preceding.word, following.word]); this.forms = metaplasm.apply(preceding, following); } /** Returns uninserted forms. */ getForms() { return this.forms; } } exports.TonalUninsertionPhraseme = TonalUninsertionPhraseme; class TonalUninsertionPhrasemeMaker { makePhraseme(preceding, following, metaplasm) { return new TonalUninsertionPhraseme(preceding, following, metaplasm); } } exports.TonalUninsertionPhrasemeMaker = TonalUninsertionPhrasemeMaker; class TonalInfectionPhraseme { phrase; forms = new Array(); constructor(preceding, following, metaplasm) { this.phrase = new unit_2.TonalPhrase([preceding.word, following.word]); this.forms = metaplasm.apply(preceding, following); } /** Returns infected forms. */ getForms() { return this.forms; } } exports.TonalInfectionPhraseme = TonalInfectionPhraseme; class TonalInfectionPhrasemeMaker { makePhraseme(preceding, following, metaplasm) { return new TonalInfectionPhraseme(preceding, following, metaplasm); } } exports.TonalInfectionPhrasemeMaker = TonalInfectionPhrasemeMaker; class TonalUninfectionPhraseme { phrase; forms = new Array(); constructor(preceding, following, metaplasm) { this.phrase = new unit_2.TonalPhrase([preceding.word, following.word]); this.forms = metaplasm.apply(preceding, following); } /** Returns uninfected forms. */ getForms() { return this.forms; } } exports.TonalUninfectionPhraseme = TonalUninfectionPhraseme; class TonalUninfectionPhrasemeMaker { makePhraseme(preceding, following, metaplasm) { return new TonalUninfectionPhraseme(preceding, following, metaplasm); } } exports.TonalUninfectionPhrasemeMaker = TonalUninfectionPhrasemeMaker; /** A phrase and its mutated form. */ class TonalMutationPhraseme { phrase; forms = new Array(); constructor(preceding, following, metaplasm) { this.phrase = new unit_2.TonalPhrase([preceding.word, following.word]); this.forms = metaplasm.apply(preceding, following); } /** Returns mutated forms. */ getForms() { return this.forms; } } exports.TonalMutationPhraseme = TonalMutationPhraseme; class TonalMutationPhrasemeMaker { makePhraseme(preceding, following, metaplasm) { return new TonalMutationPhraseme(preceding, following, metaplasm); } } exports.TonalMutationPhrasemeMaker = TonalMutationPhrasemeMaker; /** A phrase and its unmutated form. */ class TonalUnmutationPhraseme { phrase; forms = new Array(); constructor(preceding, following, metaplasm) { this.phrase = new unit_2.TonalPhrase([preceding.word, following.word]); this.forms = metaplasm.apply(preceding, following); } /** Returns unmutated forms. */ getForms() { return this.forms; } } exports.TonalUnmutationPhraseme = TonalUnmutationPhraseme; class TonalUnmutationPhrasemeMaker { makePhraseme(preceding, following, metaplasm) { return new TonalUnmutationPhraseme(preceding, following, metaplasm); } } exports.TonalUnmutationPhrasemeMaker = TonalUnmutationPhrasemeMaker; //# sourceMappingURL=phraseme.js.map