taipa
Version:
Taiwanese morphological parsing library
250 lines • 9.95 kB
JavaScript
"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