mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-22 19:22:50 -06:00
198 lines
5.0 KiB
Plaintext
198 lines
5.0 KiB
Plaintext
--# -path=.:../abstract:../common:../../prelude
|
|
--
|
|
--1 Hindustaniu auxiliary operations.
|
|
--
|
|
-- This module contains operations that are needed to make the
|
|
-- resource syntax work.
|
|
resource CommonHindustani = ParamX ** open Prelude, Predef in {
|
|
--interface CommonHindustani = ParamX ** open Prelude,Predef,StringsHindustani1 in {
|
|
flags coding = utf8 ;
|
|
|
|
oper
|
|
|
|
VPH = {
|
|
s : VPHForm => {fin, inf : Str} ;
|
|
obj : {s : Str ; a : Agr} ;
|
|
subj : VType ;
|
|
comp : Agr => Str;
|
|
inf : Str;
|
|
ad : Str;
|
|
embComp : Str ;
|
|
prog : Bool ;
|
|
} ;
|
|
NP : Type = {s : NPCase => Str ; a : Agr} ;
|
|
param
|
|
VPHForm =
|
|
VPTense VPPTense Agr -- 9 * 12
|
|
| VPReq
|
|
| VPImp
|
|
| VPReqFut
|
|
| VPInf
|
|
| VPStem
|
|
;
|
|
VPPTense =
|
|
VPPres
|
|
|VPPast
|
|
|VPFutr
|
|
|VPPerf;
|
|
|
|
VPHTense =
|
|
VPGenPres -- impf hum nahim "I go"
|
|
| VPImpPast -- impf Ta nahim "I went"
|
|
| VPFut -- fut na/nahim "I shall go"
|
|
| VPContPres -- stem raha hum nahim "I am going"
|
|
| VPContPast -- stem raha Ta nahim "I was going"
|
|
| VPContFut
|
|
| VPPerfPres -- perf hum na/nahim "I have gone"
|
|
| VPPerfPast -- perf Ta na/nahim "I had gone"
|
|
| VPPerfFut
|
|
| VPPerfPresCont
|
|
| VPPerfPastCont
|
|
| VPPerfFutCont
|
|
| VPSubj -- subj na "I may go"
|
|
;
|
|
Agr = Ag Gender Number UPerson ;
|
|
Gender = Masc | Fem ;
|
|
Case = Dir | Obl | Voc ;
|
|
UPerson = Pers1
|
|
| Pers2_Casual
|
|
| Pers2_Familiar
|
|
| Pers2_Respect
|
|
| Pers3_Near
|
|
| Pers3_Distant;
|
|
VType = VIntrans | VTrans | VTransPost ;
|
|
VerbForm = VF VTense UPerson Number Gender
|
|
| Inf
|
|
| Root
|
|
| Inf_Obl
|
|
| Inf_Fem;
|
|
VTense = Subj | Perf | Imperf;
|
|
CTense = CPresent | CPast | CFuture ;
|
|
NPCase = NPC Case | NPObj | NPErg ;
|
|
Order = ODir | OQuest ;
|
|
|
|
|
|
oper
|
|
|
|
mkAdjective : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x20,x21,x22,x23,x24,x25,x26,x27,x28,x29,x30,x31,x32,x33,x34,x35,x36:Str) -> Adjective =
|
|
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,y31,y32,y33,y34,y35,y36 -> {
|
|
s = table {
|
|
Sg => table {
|
|
Masc => table {
|
|
Dir => table {
|
|
Posit => y1 ;
|
|
Compar => y2 ;
|
|
Superl => y3
|
|
};
|
|
Obl => table {
|
|
Posit => y4 ;
|
|
Compar => y5 ;
|
|
Superl => y6
|
|
};
|
|
Voc => table {
|
|
Posit => y7 ;
|
|
Compar => y8 ;
|
|
Superl => y9
|
|
}
|
|
};
|
|
Fem => table {
|
|
Dir => table {
|
|
Posit => y10 ;
|
|
Compar => y11 ;
|
|
Superl => y12
|
|
};
|
|
Obl => table {
|
|
Posit => y13 ;
|
|
Compar => y14 ;
|
|
Superl => y15
|
|
};
|
|
Voc => table {
|
|
Posit => y16 ;
|
|
Compar => y17 ;
|
|
Superl => y18
|
|
}
|
|
}
|
|
};
|
|
Pl => table {
|
|
Masc => table {
|
|
Dir => table {
|
|
Posit => y19 ;
|
|
Compar => y20 ;
|
|
Superl => y21
|
|
};
|
|
Obl => table {
|
|
Posit => y22 ;
|
|
Compar => y23 ;
|
|
Superl => y24
|
|
};
|
|
Voc => table {
|
|
Posit => y25 ;
|
|
Compar => y26 ;
|
|
Superl => y27
|
|
}
|
|
};
|
|
Fem => table {
|
|
Dir => table {
|
|
Posit => y28 ;
|
|
Compar => y29 ;
|
|
Superl => y30
|
|
};
|
|
Obl => table {
|
|
Posit => y31 ;
|
|
Compar => y32 ;
|
|
Superl => y33
|
|
};
|
|
Voc => table {
|
|
Posit => y34 ;
|
|
Compar => y35 ;
|
|
Superl => y36
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
Adjective = { s: Number => Gender => Case => Degree => Str };
|
|
|
|
|
|
Verb : Type = {s : VerbForm => Str} ;
|
|
defaultAgr : Agr = agrP3 Masc Sg ;
|
|
agrP3 : Gender -> Number -> Agr = \g,n -> Ag g n Pers3_Distant ;
|
|
toAgr : Number -> UPerson -> Gender -> Agr = \n,p,g ->
|
|
Ag g n p;
|
|
|
|
|
|
fromAgr : Agr -> {n : Number ; p : UPerson ; g : Gender} = \a -> case a of {
|
|
Ag g n p => {n = n ; p = p ; g = g}
|
|
} ;
|
|
|
|
conjAgr : Agr -> Agr -> Agr = \a0,b0 ->
|
|
let a = fromAgr a0 ; b = fromAgr b0
|
|
in
|
|
toAgr
|
|
(conjNumber a.n b.n)
|
|
b.p a.g;
|
|
|
|
giveNumber : Agr -> Number =\a -> case a of {
|
|
Ag _ n _ => n
|
|
};
|
|
giveGender : Agr -> Gender =\a -> case a of {
|
|
Ag g _ _ => g
|
|
};
|
|
|
|
-- insertSubj : UPerson -> Str -> Str = \p,s ->
|
|
-- case p of { Pers1 => s ++ "wN" ; _ => s ++ "E"};
|
|
|
|
mkOrd : Str -> Str =
|
|
\s -> case s of {
|
|
"ayk" => "phla";
|
|
"dw" => "dwsra";
|
|
"tyN" => "tesra";
|
|
"car" => "cwth'a";
|
|
"ch'" => "ch'Ta";
|
|
_ => s ++ "waN"
|
|
};
|
|
|
|
}
|
|
|