;;; -*- Mode: TDL; Coding: utf-8 -*- ;;; HAG (Hausa Grammar) ;;; Author: Berthold Crysmann ;;; 2009 syn-label := label & [INFLECTED +]. lex-label := label & [INFLECTED na-or--]. word-label := syn-label & word. sign := basic-sign & [ STEM orthog, ROBUST luk, SYNSEM synsem, ARGS list, INFLECTED luk ]. orthog := cons & [ FORM string, FROM string, TO string ]. relation :+ [CFROM string, CTO string]. head :+ [CASE case]. verbal := +vo & +vm & +vd & +vc & +vp & +vr & +vj & +nv & [VFORM vform]. nominal := +no & +nm & +nd & +nc & +np & +nr & +nj & +nv. noun := nominal. verb := verbal. gerund := nominal & verbal & [VFORM non-fin]. free-det := det. bound-det := det & [CASE str]. synsem :+ [MODIFIABLE luk]. individual :+ [--BND bool, --GAP bool]. ref-ind := index & event-or-ref-index & [ --BND +, PNG p-n-g ]. unbound-ind := individual & [--BND -]. index :+ [PNG p-n-g, --BND bool]. event :+ [_REL bool, --XTR bool]. ;;; VFORM sorts ;;; ;;; Lexical V and VPs are non-fin, ;;; Full TAM are indep, split off second part is dep vform := avm. non-fin := vform. fin := vform. indep := fin. dep := fin. gender := avm. non-anon := gender. m := non-anon. f := non-anon. anon := gender. ;;; TAM values tam := avm. no_tam := tam. non-cont-tam := tam . continuative := non-compl-tam & non-sbj-tam. non-compl-tam := tam. perfective := non-cont-tam & non-sbj-tam. completive := perfective. preterite := perfective. non-sbj-tam := tam. sbj := non-compl-tam & non-cont-tam . fut := non-compl-tam & non-cont-tam & non-sbj-tam. pot := non-compl-tam & non-cont-tam & non-sbj-tam. hab := non-compl-tam & non-cont-tam & non-sbj-tam. ;;; Quantifier relations quant_or_wh_rel := predsort. quant_rel := quant_or_wh_rel. wh_q_rel := quant_or_wh_rel. def-or-indef_q_rel := quant_rel. def_q_rel := def-or-indef_q_rel. indef_q_rel := def-or-indef_q_rel. dem_q_rel := def_q_rel. dem_q_proximate_rel := dem_q_rel. dem_q_remote_rel := dem_q_rel. dem_q_nan_rel := dem_q_rel. dem_q_can_rel := dem_q_rel. _dem_q_speaker_rel := dem_q_proximate_rel & dem_q_nan_rel. _dem_q_hearer_rel := dem_q_remote_rel & dem_q_nan_rel. _dem_q_there_rel := dem_q_proximate_rel & dem_q_can_rel. _dem_q_distant_rel := dem_q_remote_rel & dem_q_can_rel. proper_q_rel := def_q_rel. _some_q_rel := indef_q_rel. ;;; Case types case := sort. nocase := case. bare := case. marked := case. str := case. do := str & bare. gen := str. io := non-str & marked. obl := non-str & bare. npro-or-spro-case := case. spro-or-pro-case := case. npro-or-pro-case := case. npro-case := npro-or-spro-case & npro-or-pro-case. pro-case := npro-or-pro-case & spro-or-pro-case. non-str := case. npro-or-spro-str := str & npro-or-spro-case. npro-or-pro-str := str & npro-or-pro-case. spro-or-pro-str := str & spro-or-pro-case. npro-str := npro-or-spro-str & npro-or-pro-str & npro-case. spro-str := npro-or-spro-str & spro-or-pro-str & npro-case. pro-str := spro-or-pro-str & npro-or-pro-str & pro-case. npro-or-spro-non-str := non-str & npro-or-spro-case. npro-or-pro-non-str := non-str & npro-or-pro-case. spro-or-pro-non-str := non-str & spro-or-pro-case. npro-non-str := npro-or-spro-non-str & npro-or-pro-non-str & npro-case. spro-non-str := npro-or-spro-non-str & spro-or-pro-non-str & npro-case. pro-non-str := spro-or-pro-non-str & npro-or-pro-non-str & pro-case. npro-or-spro-do := npro-or-spro-str & do. spro-or-pro-do := spro-or-pro-str & do. npro-or-pro-do := npro-or-pro-str & do. spro-do := spro-str & npro-or-spro-do & spro-or-pro-do. npro-do := npro-str & npro-or-spro-do & npro-or-pro-do. ;;; Selection of polar tone pro-do := pro-str & npro-or-pro-do & spro-or-pro-do. ; & supra_min. npro-or-spro-io := npro-or-spro-non-str & io. spro-or-pro-io := spro-or-pro-non-str & io. npro-or-pro-io := npro-or-pro-non-str & io. spro-io := spro-non-str & npro-or-spro-io & spro-or-pro-io. npro-io := npro-non-str & npro-or-spro-io & npro-or-pro-io. pro-io := pro-non-str & npro-or-pro-io & spro-or-pro-io. npro-gen := npro-str & gen. pro-gen := pro-str & gen. ;;; Valency list types val-list := list. val-cons := val-list & cons & [REST val-list]. val-null := val-list & onull. canon-list := val-list. canon-cons := canon-list & val-cons & [FIRST canonical-synsem & [NON-LOCAL [SLASH 0-dlist, REL 0-dlist, QUE 0-dlist]], REST canon-list]. canon-null := val-null & canon-list. frame-A-C-val-list := val-list. frame-A-val-list := frame-A-C-val-list. frame-A-val-null := val-null & frame-A-val-list. frame-A-val-cons := frame-A-val-list & cons & [FIRST [LOCAL.CAT.HEAD.CASE non-str]]. frame-A-canon-list := frame-A-val-list & canon-list. frame-A-canon-cons := frame-A-val-cons & canon-cons. frame-A-canon-null := frame-A-val-null & canon-null. frame-B-C-val-cons := val-cons & [FIRST [OPT -, LOCAL.CAT.HEAD.CASE npro-or-pro-str]]. frame-B-C-canon-cons := frame-B-C-val-cons & canon-cons. frame-B-val-cons := frame-B-C-val-cons & [FIRST [OPT -, LOCAL [CAT.HEAD.CASE pro-do, CONT.HOOK.INDEX.--GAP -]]]. frame-B-canon-cons := frame-B-val-cons & frame-B-C-canon-cons. frame-C-val-cons := frame-B-C-val-cons & frame-A-C-val-list & [FIRST [OPT -, LOCAL.CAT.HEAD.CASE npro-do]]. frame-C-canon-cons := frame-C-val-cons & frame-B-C-canon-cons. unify-list := list & [--UNIF avm]. unify-cons := unify-list & cons & [--UNIF #unif, FIRST #unif, REST unify-list & [--UNIF #unif]]. unify-null := unify-list & null. #| direct-mode := word & [ARG-ST <[LOCAL.CONT.HOOK.INDEX.DIR.OBJ #1 ],[LOCAL.CONT.HOOK.INDEX.DIR #1 ]>]. inverse-mode := word & [ARG-ST <[LOCAL.CONT.HOOK.INDEX.DIR #1 ],[LOCAL.CONT.HOOK.INDEX.DIR idirinv & [OBJ #1] ]>]. ref-ind :+ [DIR dirinv]. dirinv := *top* & [OBJ *top*]. idirinv := dirinv. one := dirinv & [OBJ dirinv]. ione := one & idirinv & [OBJ 2-or-less]. 2-or-less := dirinv. two := 2-or-less & [OBJ 2-or-less]. itwo := two & idirinv & [OBJ 3-or-less]. 3-or-less := 2-or-less. three := 3-or-less & [OBJ 3-or-less]. ithree := three & idirinv & [OBJ four]. four := 3-or-less. |#