aboutsummaryrefslogtreecommitdiff
path: root/language/parser.ts
diff options
context:
space:
mode:
Diffstat (limited to 'language/parser.ts')
-rw-r--r--language/parser.ts14
1 files changed, 12 insertions, 2 deletions
diff --git a/language/parser.ts b/language/parser.ts
index bb4ac1e..40bdd81 100644
--- a/language/parser.ts
+++ b/language/parser.ts
@@ -5,6 +5,11 @@ import "../util/array.ts";
import "../util/set.ts";
import { DeepPartial } from "../util/types.ts";
+const CONJUGABLE_TAGS = [
+ ...Object.values(Tag.Class.Verb),
+ ...Object.values(Tag.Class.Adjective),
+];
+
// TODO: rename Parser to Search
/** @summary main Parser class */
export default class Parser {
@@ -20,6 +25,7 @@ export default class Parser {
});
}
+ // Search.sentence()
async parse(sentence: string, optional?: DeepPartial<InputSentenceProps>): Promise<ParseResult> {
await this.ready;
@@ -64,8 +70,8 @@ export default class Parser {
// deconjugated words
if (result.depth > 0) {
- // can't be conjugated at all
- if (!result.tags.anyOf(Object.values(Tag.Class.Verb))) return false;
+ // check if this word can be conjugated at all
+ if (!result.tags.anyOf(CONJUGABLE_TAGS)) return false;
// ignore other wrong deconjugations
if (result.tags.includes(Tag.Class.Verb.U) &&
@@ -74,6 +80,10 @@ export default class Parser {
!result.tags.includes(Tag.Inflection.Reason.Ru)) return false;
if (result.tags.includes(Tag.Class.Verb.Suru) &&
!result.tags.includes(Tag.Inflection.Reason.Suru)) return false;
+ if (result.tags.includes(Tag.Class.Adjective.I) &&
+ !result.tags.includes(Tag.Inflection.Reason.Adjective.I)) return false;
+ if (result.tags.includes(Tag.Class.Adjective.Na) &&
+ !result.tags.includes(Tag.Inflection.Reason.Adjective.Na)) return false;
}
// all other results should be valid grammatically