mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Added minimally functional Tamil
This commit is contained in:
@@ -50,3 +50,4 @@ Tha,Thai,thai,,to_thai,,,,,,y
|
|||||||
Tur,Turkish,turkish,,,y,,,n,,n
|
Tur,Turkish,turkish,,,y,,,n,,n
|
||||||
Urd,Urdu,urdu,Hindustani,,,,,,,y
|
Urd,Urdu,urdu,Hindustani,,,,,,,y
|
||||||
Som,Somali,somali,,,,,n,n,,n
|
Som,Somali,somali,,,,,n,n,,n
|
||||||
|
Tam,Tamil,tamil,,,,,,,,n
|
||||||
|
|||||||
|
9
src/api/CombinatorsTam.gf
Normal file
9
src/api/CombinatorsTam.gf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
--# -path=.:alltenses:prelude
|
||||||
|
|
||||||
|
resource CombinatorsTam = Combinators - [ appCN, appCNc ] with
|
||||||
|
(Cat = CatTam),
|
||||||
|
(Structural = StructuralTam),
|
||||||
|
(Noun = NounTam),
|
||||||
|
(Constructors = ConstructorsTam) **
|
||||||
|
{}
|
||||||
|
}
|
||||||
5
src/api/ConstructorsTam.gf
Normal file
5
src/api/ConstructorsTam.gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
--# -path=.:alltenses:prelude:../malay
|
||||||
|
|
||||||
|
resource ConstructorsTam = Constructors with (Grammar = GrammarTam) **
|
||||||
|
open MissingTam in {} ;
|
||||||
|
}
|
||||||
6
src/api/SymbolicTam.gf
Normal file
6
src/api/SymbolicTam.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
--# -path=.:../malay:../common:../abstract:../prelude
|
||||||
|
|
||||||
|
resource SymbolicTam = Symbolic with
|
||||||
|
(Symbol = SymbolTam),
|
||||||
|
(Grammar = GrammarTam) ** open MissingTam in {} ;
|
||||||
|
}
|
||||||
6
src/api/SyntaxTam.gf
Normal file
6
src/api/SyntaxTam.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
--# -path=.:alltenses:prelude
|
||||||
|
|
||||||
|
instance SyntaxTam of Syntax =
|
||||||
|
ConstructorsTam, CatTam, StructuralTam, CombinatorsTam ;
|
||||||
|
|
||||||
|
}
|
||||||
4
src/api/TryTam.gf
Normal file
4
src/api/TryTam.gf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
--# -path=.:../malay:../common:../abstract:../prelude
|
||||||
|
|
||||||
|
resource TryTam = SyntaxTam, LexiconTam, ParadigmsTam - [mkAdv,mkAdN,mkOrd,mkNum] ;
|
||||||
|
}
|
||||||
69
src/tamil/AdjectiveTam.gf
Normal file
69
src/tamil/AdjectiveTam.gf
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
concrete AdjectiveTam of Adjective = CatTam ** open ResTam, Prelude in {
|
||||||
|
|
||||||
|
-- flags optimize=all_subs ;
|
||||||
|
|
||||||
|
-- lin
|
||||||
|
|
||||||
|
-- -- : AP -> Adv -> AP ; -- warm by nature
|
||||||
|
-- AdvAP ap adv = ap ** {
|
||||||
|
-- s = ap.s ++ adv.s ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : A -> AP ;
|
||||||
|
-- PositA a = a ** {
|
||||||
|
-- compar = [] ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : A -> NP -> AP ;
|
||||||
|
-- ComparA a np = a ** {
|
||||||
|
-- compar = np.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : A2 -> NP -> AP ; -- married to her
|
||||||
|
-- -- ComplA2 a2 np = a2 ** { } ;
|
||||||
|
|
||||||
|
-- -- : A2 -> AP ; -- married to itself
|
||||||
|
-- -- ReflA2 a2 = a2 ** { } ;
|
||||||
|
|
||||||
|
-- -- : A2 -> AP ; -- married
|
||||||
|
-- UseA2 = PositA ;
|
||||||
|
|
||||||
|
-- -- : A -> AP ; -- warmer
|
||||||
|
-- -- UseComparA a = a ** {
|
||||||
|
-- -- s = \\af => "???" ++ a.s ! af ;
|
||||||
|
-- -- compar = []
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : CAdv -> AP -> NP -> AP ; -- as cool as John
|
||||||
|
-- -- CAdvAP adv ap np = ap ** { } ;
|
||||||
|
|
||||||
|
-- The superlative use is covered in $Ord$.
|
||||||
|
|
||||||
|
-- -- : Ord -> AP ; -- warmest
|
||||||
|
-- -- AdjOrd ord = ord ** {
|
||||||
|
-- -- compar = []
|
||||||
|
-- -- } ;
|
||||||
|
-- -- AdjOrd : Ord -> AP =
|
||||||
|
-- AdjOrd ord = ord ;
|
||||||
|
|
||||||
|
-- Sentence and question complements defined for all adjectival
|
||||||
|
-- phrases, although the semantics is only clear for some adjectives.
|
||||||
|
|
||||||
|
-- -- : AP -> SC -> AP ; -- good that she is here
|
||||||
|
-- -- SentAP ap sc = ap ** {
|
||||||
|
-- -- s = \\af => ap.s ! af ++ sc.s
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
-- An adjectival phrase can be modified by an *adadjective*, such as "very".
|
||||||
|
|
||||||
|
-- -- : AdA -> AP -> AP ;
|
||||||
|
-- -- AdAP ada ap = ap ** { } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- It can also be postmodified by an adverb, typically a prepositional phrase.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
37
src/tamil/AdverbTam.gf
Normal file
37
src/tamil/AdverbTam.gf
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
concrete AdverbTam of Adverb = CatTam ** open ResTam, ParamTam, ParadigmsTam, Prelude in {
|
||||||
|
|
||||||
|
--lin
|
||||||
|
|
||||||
|
-- -- : A -> Adv ;
|
||||||
|
-- --PositAdvAdj adj = { } ;
|
||||||
|
|
||||||
|
-- -- : CAdv -> A -> NP -> Adv ; -- more warmly than John
|
||||||
|
-- -- ComparAdvAdj cadv a np = { } ;
|
||||||
|
|
||||||
|
-- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs
|
||||||
|
|
||||||
|
-- -- : Prep -> NP -> Adv ;
|
||||||
|
-- PrepNP prep np = {s = applyPrep prep np} ;
|
||||||
|
|
||||||
|
-- -- PrepNP to_Prep (UsePron youSg_Pron)
|
||||||
|
|
||||||
|
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||||
|
|
||||||
|
-- --AdAdv : AdA -> Adv -> Adv ; -- very quickly
|
||||||
|
-- -- AdAdv ada adv = adv **
|
||||||
|
-- Like adverbs, adadjectives can be produced by adjectives.
|
||||||
|
|
||||||
|
-- -- : A -> AdA ; -- extremely
|
||||||
|
-- -- PositAdAAdj a = { } ;
|
||||||
|
|
||||||
|
-- -- Subordinate clauses can function as adverbs.
|
||||||
|
|
||||||
|
-- -- : Subj -> S -> Adv ;
|
||||||
|
-- SubjS subj s = {s = subj.s ++ s.s} ;
|
||||||
|
|
||||||
|
-- Comparison adverbs also work as numeral adverbs.
|
||||||
|
|
||||||
|
-- --AdnCAdv : CAdv -> AdN ; -- less (than five)
|
||||||
|
-- --AdnCAdv cadv = {s = } ;
|
||||||
|
--} ;
|
||||||
|
}
|
||||||
9
src/tamil/AllTam.gf
Normal file
9
src/tamil/AllTam.gf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
|
concrete AllTam of AllTamAbs =
|
||||||
|
LangTam,
|
||||||
|
ExtendTam
|
||||||
|
** open ParadigmsTam in {
|
||||||
|
-- lin sing_V2 = mkV2 "nyanyi" ;
|
||||||
|
-- } ;
|
||||||
|
}
|
||||||
9
src/tamil/AllTamAbs.gf
Normal file
9
src/tamil/AllTamAbs.gf
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
|
abstract AllTamAbs =
|
||||||
|
Lang,
|
||||||
|
Extend
|
||||||
|
** {
|
||||||
|
fun sing_V2: V2;
|
||||||
|
} ;
|
||||||
|
}
|
||||||
136
src/tamil/CatTam.gf
Normal file
136
src/tamil/CatTam.gf
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
concrete CatTam of Cat = CommonX - [IAdv] ** open ResTam, Prelude in {
|
||||||
|
|
||||||
|
-- flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
|
||||||
|
--2 Sentences and clauses
|
||||||
|
-- Constructed in SentenceTam, and also in IdiomTam
|
||||||
|
|
||||||
|
-- S = ResTam.Sentence ;
|
||||||
|
-- QS = SS ;
|
||||||
|
-- RS = ResTam.RS ;
|
||||||
|
-- -- relative sentence. Tense and polarity fixed,
|
||||||
|
-- -- but agreement may depend on the CN/NP it modifies.
|
||||||
|
|
||||||
|
-- Cl = ResTam.Clause ;
|
||||||
|
-- ClSlash = ResTam.ClSlash ;
|
||||||
|
-- SSlash = ResTam.Sentence ; -- sentence missing NP; e.g. "she has looked at"
|
||||||
|
-- Imp = {s : Number => Polarity => Str} ; -- imperative e.g. "look at this"
|
||||||
|
|
||||||
|
--2 Questions and interrogatives
|
||||||
|
|
||||||
|
-- Constructed in QuestionTam.
|
||||||
|
|
||||||
|
-- QCl = ResTam.Clause ;
|
||||||
|
-- IComp = {s: Str} ; -- interrogative complement of copula e.g. "where"
|
||||||
|
-- IDet = ResTam.Determiner ; -- interrogative determiner e.g. "how many"
|
||||||
|
-- IQuant = ResTam.IQuant ; -- interrogative quantifier e.g. "which"
|
||||||
|
-- IP = ResTam.IPhrase ; -- interrogative pronoun e.g. "who"
|
||||||
|
-- IAdv = ResTam.IAdv ;
|
||||||
|
|
||||||
|
--2 Subord clauses and pronouns
|
||||||
|
|
||||||
|
-- RCl = ResTam.RClause ;
|
||||||
|
-- RP = SS ;
|
||||||
|
|
||||||
|
--2 Verb phrases
|
||||||
|
|
||||||
|
-- Constructed in VerbTam.
|
||||||
|
|
||||||
|
-- VP = ResTam.VerbPhrase ;
|
||||||
|
-- VPSlash = ResTam.VPSlash ;
|
||||||
|
-- Comp = ResTam.VerbPhrase ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Adjectival phrases
|
||||||
|
|
||||||
|
-- Constructed in AdjectiveTam.
|
||||||
|
|
||||||
|
-- AP = ResTam.AdjPhrase ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Nouns and noun phrases
|
||||||
|
|
||||||
|
-- Constructed in NounTam.
|
||||||
|
-- Many atomic noun phrases e.g. "everybody"
|
||||||
|
-- are constructed in StructuralTam.
|
||||||
|
-- The determiner structure is
|
||||||
|
-- ``` Predet (QuantSg | QuantPl Num) Ord
|
||||||
|
-- as defined in NounTam.
|
||||||
|
|
||||||
|
CN = ResTam.CNoun ;
|
||||||
|
NP = ResTam.NounPhrase ;
|
||||||
|
-- Pron = ResTam.Pronoun ; --Pronouns need enough info to turn it into NP or Quant.
|
||||||
|
Det = ResTam.Determiner ;
|
||||||
|
-- Predet = SS ;
|
||||||
|
-- Quant = ResTam.Quant ;
|
||||||
|
Num = ResTam.Num ;
|
||||||
|
-- Ord = {
|
||||||
|
-- s : Str ; -- AForm => Str ; -- Ord can came from AP and become AP again
|
||||||
|
-- -- n : Number -- Ord can come from Num, which has inherent number
|
||||||
|
-- } ;
|
||||||
|
-- DAP = ResTam.Determiner ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Numerals
|
||||||
|
|
||||||
|
-- Constructed in NumeralTam.
|
||||||
|
|
||||||
|
-- Card = ResTam.CardNum ;
|
||||||
|
-- Numeral = ResTam.CardOrdNum ;
|
||||||
|
-- Digits = ResTam.DigNum ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--2 Structural words
|
||||||
|
|
||||||
|
-- Constructed in StructuralTam.
|
||||||
|
-- Conj = {s2 : Str ; s1 : Str ; n : Number } ;
|
||||||
|
-- Subj = SS ;
|
||||||
|
-- Prep = ResTam.Preposition ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--2 Words of open classes
|
||||||
|
|
||||||
|
-- These are constructed in LexiconTam and in
|
||||||
|
-- additional lexicon modules.
|
||||||
|
|
||||||
|
-- -- TODO: eventually different lincats
|
||||||
|
-- VS, -- sentence-complement verb e.g. "claim"
|
||||||
|
-- VQ, -- question-complement verb e.g. "wonder"
|
||||||
|
-- VA, -- adjective-complement verb e.g. "look"
|
||||||
|
-- V = ResTam.Verb ;
|
||||||
|
|
||||||
|
-- VV -- verb-phrase-complement verb e.g. "want"
|
||||||
|
-- = SS ;
|
||||||
|
|
||||||
|
-- V2A, -- verb with NP and AP complement e.g. "paint"
|
||||||
|
-- V2V, -- verb with NP and V complement e.g. "cause"
|
||||||
|
-- V2S, -- Reverb with NP and S complement e.g. "tell"
|
||||||
|
-- V2Q, -- verb with NP and Q complement e.g. "ask"
|
||||||
|
-- V2 = ResTam.Verb2 ;
|
||||||
|
-- V3 = ResTam.Verb3 ;
|
||||||
|
|
||||||
|
-- A = ResTam.Adjective ;
|
||||||
|
-- A2 = ResTam.Adjective2 ;
|
||||||
|
|
||||||
|
N = ResTam.Noun ;
|
||||||
|
-- N2 = ResTam.Noun2 ;
|
||||||
|
-- N3 = ResTam.Noun3 ;
|
||||||
|
-- PN = ResTam.PNoun ;
|
||||||
|
|
||||||
|
-- linref
|
||||||
|
-- CN = \cn -> cn.s ! NF Sg Bare ++ cn.heavyMod;
|
||||||
|
-- ClSlash = \cl -> cl.subj ++ cl.pred ! Root ! Pos ++ cl.c2.s;
|
||||||
|
-- RCl = \cl -> cl.subj ++ cl.pred ! P1 ! Pos;
|
||||||
|
-- Cl = \cl -> cl.subj ++ cl.pred ! Active ! Pos;
|
||||||
|
-- Det = linDet ;
|
||||||
|
--}
|
||||||
|
|
||||||
|
-- Determiner : Type = Quant ** {
|
||||||
|
-- pr : Str ; -- prefix for numbers
|
||||||
|
-- n : NumType ; -- number as in 5 (noun in singular), Sg or Pl
|
||||||
|
-- } ;
|
||||||
|
}
|
||||||
98
src/tamil/ConjunctionTam.gf
Normal file
98
src/tamil/ConjunctionTam.gf
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
concrete ConjunctionTam of Conjunction =
|
||||||
|
CatTam ** open ResTam, Coordination, Prelude in {
|
||||||
|
|
||||||
|
-- flags optimize=all_subs ;
|
||||||
|
|
||||||
|
-- {- Conjunction for category X needs four things:
|
||||||
|
-- lincat [X]
|
||||||
|
-- lin BaseX
|
||||||
|
-- lin ConsX
|
||||||
|
-- lin ConjX
|
||||||
|
|
||||||
|
-- For example, if X is defined as
|
||||||
|
|
||||||
|
-- lincat X = {s : Number => Str ; g : Gender} ;
|
||||||
|
|
||||||
|
-- then [X] will split its s field into two, and retain its other fields as is:
|
||||||
|
|
||||||
|
-- lincat [X] = {s1,s2 : Number => Str ; g : Gender} ;
|
||||||
|
|
||||||
|
-- Let us look at a simple case: Adv is of type {s : Str}
|
||||||
|
-- Then [Adv] is {s1,s2 : Str}.
|
||||||
|
-- BaseAdv, ConsAdv and ConjAdv can all use functions defined in prelude/Coordination:
|
||||||
|
|
||||||
|
-- BaseAdv = twoSS ;
|
||||||
|
-- ConsAdv = consrSS comma ;
|
||||||
|
-- ConjAdv = conjunctSS ;
|
||||||
|
|
||||||
|
-- --}
|
||||||
|
|
||||||
|
|
||||||
|
-- Adverb and other simple {s : Str} types.
|
||||||
|
--lincat
|
||||||
|
-- [Adv],[AdV],[IAdv] = {s1,s2 : Str} ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseAdv, BaseAdV, BaseIAdv = twoSS ;
|
||||||
|
-- ConsAdv, ConsAdV, ConsIAdv = consrSS comma ;
|
||||||
|
-- ConjAdv, ConjAdV, ConjIAdv = conjunctDistrSS ;
|
||||||
|
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- RS depends on X, Y and Z, otherwise exactly like previous.
|
||||||
|
-- RS can modify CNs, which are open for …, and have inherent …
|
||||||
|
--lincat
|
||||||
|
-- [RS] = {s1,s2 : … => Str} ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseRS = twoTable3 … ;
|
||||||
|
-- ConsRS = consrTable3 … comma ;
|
||||||
|
-- ConjRS = conjunctRSTable ;
|
||||||
|
|
||||||
|
|
||||||
|
--lincat
|
||||||
|
-- [S] = {} ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseS x y = y ** { } ;
|
||||||
|
-- ConsS x xs =
|
||||||
|
-- xs ** { } ;
|
||||||
|
-- ConjS co xs = {} ;
|
||||||
|
|
||||||
|
--lincat
|
||||||
|
-- [AP] = {} ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseAP x y = twoTable … x y ** y ; --choose all the other fields from second argument
|
||||||
|
-- ConsAP as a = consrTable … comma as a ** as ;
|
||||||
|
-- ConjAP co as = conjunctDistrTable … co as ** as ;
|
||||||
|
|
||||||
|
--lincat
|
||||||
|
-- [CN] = { } ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseCN = {} ;
|
||||||
|
-- ConsCN = {} ;
|
||||||
|
-- ConjCN co cs = conjunctDistrTable Agr co cs ** cs ;
|
||||||
|
|
||||||
|
--lincat
|
||||||
|
-- [DAP] =
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseDAP x y = x **
|
||||||
|
-- ConsDAP xs x = xs **
|
||||||
|
-- ConjDet conj xs = xs **
|
||||||
|
|
||||||
|
|
||||||
|
-- Noun phrases
|
||||||
|
--lincat
|
||||||
|
-- [NP] =
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- BaseNP x y =
|
||||||
|
-- ConsNP x xs =
|
||||||
|
-- ConjNP conj xs =
|
||||||
|
|
||||||
|
---}
|
||||||
|
--}
|
||||||
|
}
|
||||||
120
src/tamil/ConstructionTam.gf
Normal file
120
src/tamil/ConstructionTam.gf
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
concrete ConstructionTam of Construction = CatTam ** open ParadigmsTam in {
|
||||||
|
|
||||||
|
--lincat
|
||||||
|
-- Timeunit = N ;
|
||||||
|
-- Weekday = N ;
|
||||||
|
-- Monthday = NP ;
|
||||||
|
-- Month = N ;
|
||||||
|
-- Year = NP ;
|
||||||
|
--{-
|
||||||
|
--lin
|
||||||
|
|
||||||
|
-- timeunitAdv n time =
|
||||||
|
-- let n_card : Card = n ;
|
||||||
|
-- n_hours_NP : NP = mkNP n_card time ;
|
||||||
|
-- in SyntaxTam.mkAdv for_Prep n_hours_NP | mkAdv (n_hours_NP.s ! R.npNom) ;
|
||||||
|
|
||||||
|
-- weekdayPunctualAdv w = ; -- on Sunday
|
||||||
|
-- weekdayHabitualAdv w = ; -- on Sundays
|
||||||
|
-- weekdayNextAdv w = -- next Sunday
|
||||||
|
-- weekdayLastAdv w = -- last Sunday
|
||||||
|
|
||||||
|
-- monthAdv m = mkAdv in_Prep (mkNP m) ;
|
||||||
|
-- yearAdv y = mkAdv in_Prep y ;
|
||||||
|
-- dayMonthAdv d m = ; -- on 17 Tam
|
||||||
|
-- monthYearAdv m y = ; -- in Tam 2012
|
||||||
|
-- dayMonthYearAdv d m y = ; -- on 17 Tam 2013
|
||||||
|
|
||||||
|
-- intYear = symb ;
|
||||||
|
-- intMonthday = symb ;
|
||||||
|
|
||||||
|
--lincat Language = N ;
|
||||||
|
|
||||||
|
--lin InLanguage l = mkAdv ???_Prep (mkNP l) ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- weekdayN w = w ;
|
||||||
|
-- monthN m = m ;
|
||||||
|
|
||||||
|
-- weekdayPN w = mkPN w ;
|
||||||
|
-- monthPN m = mkPN m ;
|
||||||
|
|
||||||
|
-- languageCN l = mkCN l ;
|
||||||
|
-- languageNP l = mkNP l ;
|
||||||
|
|
||||||
|
|
||||||
|
--oper mkLanguage : Str -> N = \s -> mkN s ;
|
||||||
|
|
||||||
|
----------------------------------------------
|
||||||
|
---- lexicon of special names
|
||||||
|
|
||||||
|
--lin second_Timeunit = mkN "second" ;
|
||||||
|
--lin minute_Timeunit = mkN "minute" ;
|
||||||
|
--lin hour_Timeunit = mkN "hour" ;
|
||||||
|
--lin day_Timeunit = mkN "day" ;
|
||||||
|
--lin week_Timeunit = mkN "week" ;
|
||||||
|
--lin month_Timeunit = mkN "month" ;
|
||||||
|
--lin year_Timeunit = mkN "year" ;
|
||||||
|
|
||||||
|
--lin monday_Weekday = mkN "Monday" ;
|
||||||
|
--lin tuesday_Weekday = mkN "Tuesday" ;
|
||||||
|
--lin wednesday_Weekday = mkN "Wednesday" ;
|
||||||
|
--lin thursday_Weekday = mkN "Thursday" ;
|
||||||
|
--lin friday_Weekday = mkN "Friday" ;
|
||||||
|
--lin saturday_Weekday = mkN "Saturday" ;
|
||||||
|
--lin sunday_Weekday = mkN "Sunday" ;
|
||||||
|
|
||||||
|
--lin january_Month = mkN "January" ;
|
||||||
|
--lin february_Month = mkN "February" ;
|
||||||
|
--lin march_Month = mkN "March" ;
|
||||||
|
--lin april_Month = mkN "April" ;
|
||||||
|
--lin may_Month = mkN "May" ;
|
||||||
|
--lin june_Month = mkN "June" ;
|
||||||
|
--lin july_Month = mkN "July" ;
|
||||||
|
--lin august_Month = mkN "August" ;
|
||||||
|
--lin september_Month = mkN "September" ;
|
||||||
|
--lin october_Month = mkN "October" ;
|
||||||
|
--lin november_Month = mkN "November" ;
|
||||||
|
--lin december_Month = mkN "December" ;
|
||||||
|
|
||||||
|
--lin afrikaans_Language = mkLanguage "Afrikaans" ;
|
||||||
|
--lin amharic_Language = mkLanguage "Amharic" ;
|
||||||
|
--lin arabic_Language = mkLanguage "Arabic" ;
|
||||||
|
--lin bulgarian_Language = mkLanguage "Bulgarian" ;
|
||||||
|
--lin catalan_Language = mkLanguage "Catalan" ;
|
||||||
|
--lin chinese_Language = mkLanguage "Chinese" ;
|
||||||
|
--lin danish_Language = mkLanguage "Danish" ;
|
||||||
|
--lin dutch_Language = mkLanguage "Dutch" ;
|
||||||
|
--lin english_Language = mkLanguage "Euslish" ;
|
||||||
|
--lin estonian_Language = mkLanguage "Estonian" ;
|
||||||
|
--lin finnish_Language = mkLanguage "Finnish" ;
|
||||||
|
--lin french_Language = mkLanguage "French" ;
|
||||||
|
--lin german_Language = mkLanguage "German" ;
|
||||||
|
--lin greek_Language = mkLanguage "Greek" ;
|
||||||
|
--lin hebrew_Language = mkLanguage "Hebrew" ;
|
||||||
|
--lin hindi_Language = mkLanguage "Hindi" ;
|
||||||
|
--lin japanese_Language = mkLanguage "Japanese" ;
|
||||||
|
--lin italian_Language = mkLanguage "Italian" ;
|
||||||
|
--lin latin_Language = mkLanguage "Latin" ;
|
||||||
|
--lin latvian_Language = mkLanguage "Latvian" ;
|
||||||
|
--lin maltese_Language = mkLanguage "Maltese" ;
|
||||||
|
--lin nepali_Language = mkLanguage "Nepali" ;
|
||||||
|
--lin norwegian_Language = mkLanguage "Norwegian" ;
|
||||||
|
--lin persian_Language = mkLanguage "Persian" ;
|
||||||
|
--lin polish_Language = mkLanguage "Polish" ;
|
||||||
|
--lin punjabi_Language = mkLanguage "Punjabi" ;
|
||||||
|
--lin romanian_Language = mkLanguage "Romanian" ;
|
||||||
|
--lin russian_Language = mkLanguage "Russian" ;
|
||||||
|
--lin sindhi_Language = mkLanguage "Sindhi" ;
|
||||||
|
--lin spanish_Language = mkLanguage "Spanish" ;
|
||||||
|
--lin swahili_Language = mkLanguage "Swahili" ;
|
||||||
|
--lin swedish_Language = mkLanguage "Swedish" ;
|
||||||
|
--lin thai_Language = mkLanguage "Thai" ;
|
||||||
|
--lin turkish_Language = mkLanguage "Turkish" ;
|
||||||
|
--lin urdu_Language = mkLanguage "Urdu" ;
|
||||||
|
|
||||||
|
--—}
|
||||||
|
--}
|
||||||
|
---}
|
||||||
|
--}
|
||||||
|
}
|
||||||
106
src/tamil/ExtendTam.gf
Normal file
106
src/tamil/ExtendTam.gf
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
--# -path=.:../common:../abstract
|
||||||
|
|
||||||
|
concrete ExtendTam of Extend = CatTam
|
||||||
|
** ExtendFunctor - [
|
||||||
|
VPS -- finite VP's with tense and polarity
|
||||||
|
, ListVPS
|
||||||
|
, VPI
|
||||||
|
, ListVPI -- infinitive VP's (TODO: with anteriority and polarity)
|
||||||
|
, MkVPS
|
||||||
|
, PredVPS
|
||||||
|
|
||||||
|
-- excluded because RGL funs needed for them not implemented yet
|
||||||
|
, SlashBareV2S
|
||||||
|
, PredAPVP
|
||||||
|
, ComplBareVS
|
||||||
|
|
||||||
|
|
||||||
|
,PresPartAP, PastPartAP
|
||||||
|
,GenModNP, GenNP, GenRP
|
||||||
|
,CompoundN
|
||||||
|
,GerundNP
|
||||||
|
|
||||||
|
|
||||||
|
-- VPS2 ; -- have loved (binary version of VPS)
|
||||||
|
-- [VPS2] {2} ; -- has loved, hates"
|
||||||
|
-- VPI2 ; -- to love (binary version of VPI)
|
||||||
|
-- [VPI2] {2} ; -- to love, to hate
|
||||||
|
|
||||||
|
]
|
||||||
|
with (Grammar=GrammarTam)
|
||||||
|
** open Prelude, Coordination, ResTam, NounTam in {
|
||||||
|
-- lincat
|
||||||
|
-- VPS, VPI = SS ;
|
||||||
|
-- ListVPS, ListVPI = ListX ;
|
||||||
|
-- lin
|
||||||
|
-- -- MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept
|
||||||
|
-- MkVPS t p vp = {
|
||||||
|
-- s = t.s ++ p.s ++ vp.s ! Active ! p.p;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- BaseVPS : VPS -> VPS -> ListVPS ;
|
||||||
|
-- BaseVPS vps vps2 = twoSS vps vps2 ;
|
||||||
|
-- -- ConsVPS : VPS -> ListVPS -> ListVPS ;
|
||||||
|
-- ConsVPS str listvps vps = consSS "," listvps vps ;
|
||||||
|
-- -- ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep
|
||||||
|
-- ConjVPS conj listvps = conjunctX conj listvps ;
|
||||||
|
-- -- PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
|
||||||
|
-- PredVPS np vps = {
|
||||||
|
-- s = np.s ! Bare ++ vps.s ;
|
||||||
|
-- } ;
|
||||||
|
-- -- SQuestVPS : NP -> VPS -> QS ; -- has she walked
|
||||||
|
-- -- QuestVPS : IP -> VPS -> QS ; -- who has walked
|
||||||
|
-- -- RelVPS : RP -> VPS -> RS ; -- which won't sleep
|
||||||
|
|
||||||
|
-- -- MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol)
|
||||||
|
-- MkVPI vp = {s = linVP vp} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- BaseVPI : VPI -> VPI -> ListVPI ;
|
||||||
|
-- BaseVPI vpi vpi2 = twoSS vpi vpi2 ;
|
||||||
|
-- -- ConsVPI : VPI -> ListVPI -> ListVPI ;
|
||||||
|
-- ConsVPI str listvpi vpi = consSS "," listvpi vpi ;
|
||||||
|
|
||||||
|
-- -- ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk
|
||||||
|
-- -- ComplVPIVV : VV -> VPI -> VP ; -- must sleep and walk
|
||||||
|
-- ComplVPIVV vv vpi = useV {
|
||||||
|
-- s = \\vf => vv.s ++ vpi.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- PresPartAP : VP -> AP ; -- (the man) looking at Mary
|
||||||
|
-- PresPartAP vp = {
|
||||||
|
-- s = linVP vp
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- PastPartAP vp = {
|
||||||
|
-- s = linVP vp
|
||||||
|
-- } ;
|
||||||
|
-- -- GenModNP : Num -> NP -> CN -> NP ; -- this man's car(s)
|
||||||
|
-- GenModNP n np cn = variants {};
|
||||||
|
|
||||||
|
-- -- GenNP : NP -> Quant ; -- this man's
|
||||||
|
-- GenNP np = variants {};
|
||||||
|
-- -- GenRP : Num -> CN -> RP ; -- whose car
|
||||||
|
-- GenRP n cn = variants {};
|
||||||
|
|
||||||
|
-- -- CompoundN : N -> N -> N ; -- control system / controls system / control-system
|
||||||
|
-- CompoundN n1 n2 = n2 ** {
|
||||||
|
-- s = \\nf => n1.s ! NF Sg Bare ++ n2.s ! nf
|
||||||
|
-- } ;
|
||||||
|
-- -- GerundNP : VP -> NP ; -- publishing the document (by nature definite)
|
||||||
|
-- GerundNP vp = emptyNP ** {
|
||||||
|
-- s = \\_ => linVP vp
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||||
|
-- -- ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
|
||||||
|
-- -- ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person
|
||||||
|
-- -- ReflVPS2 : VPS2 -> RNP -> VPS ; -- have loved and now hate myself and my car
|
||||||
|
|
||||||
|
-- -- MkVPI2 : VPSlash -> VPI2 ; -- to love
|
||||||
|
-- -- ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate
|
||||||
|
-- -- ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person
|
||||||
|
|
||||||
|
--} ;
|
||||||
|
}
|
||||||
25
src/tamil/GrammarTam.gf
Normal file
25
src/tamil/GrammarTam.gf
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
concrete GrammarTam of Grammar =
|
||||||
|
NounTam,
|
||||||
|
VerbTam,
|
||||||
|
AdjectiveTam,
|
||||||
|
AdverbTam,
|
||||||
|
NumeralTam,
|
||||||
|
SentenceTam,
|
||||||
|
QuestionTam,
|
||||||
|
RelativeTam,
|
||||||
|
ConjunctionTam,
|
||||||
|
PhraseTam,
|
||||||
|
TextX - [AAnter, TFut, TCond, IAdv],
|
||||||
|
StructuralTam,
|
||||||
|
IdiomTam,
|
||||||
|
TenseX - [AAnter, TFut, TCond, IAdv]
|
||||||
|
** open ParamX in {
|
||||||
|
|
||||||
|
-- flags startcat = Phr ;
|
||||||
|
|
||||||
|
-- lin AAnter = {s = "sudah" ; a = ParamX.Anter} ; --# notpresent
|
||||||
|
-- TFut = {s = "akan" ; t = ParamX.Fut} ; --# notpresent
|
||||||
|
-- TCond = {s = "akan" ; t = ParamX.Cond} ; --# notpresent
|
||||||
|
|
||||||
|
--} ;
|
||||||
|
}
|
||||||
59
src/tamil/IdiomTam.gf
Normal file
59
src/tamil/IdiomTam.gf
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
--1 Idiom: Idiomatic Expressions
|
||||||
|
|
||||||
|
concrete IdiomTam of Idiom = CatTam ** open Prelude, ResTam, VerbTam, QuestionTam, NounTam, StructuralTam in {
|
||||||
|
|
||||||
|
-- This module defines constructions that are formed in fixed ways,
|
||||||
|
-- often different even in closely related languages.
|
||||||
|
|
||||||
|
-- lin
|
||||||
|
|
||||||
|
|
||||||
|
-- -- ImpersCl : VP -> Cl ; -- it is hot
|
||||||
|
-- ImpersCl vp = {
|
||||||
|
-- subj = [] ;
|
||||||
|
-- pred = \\vf,pol => vp.s ! Root ! pol -- force no prefix -- TODO check if legit?
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : NP -> Cl ; -- there is a house
|
||||||
|
-- ExistNP np = predVP np (useV copula) ;
|
||||||
|
|
||||||
|
-- -- ExistIP : IP -> QCl ; -- which houses are there
|
||||||
|
-- ExistIP ip = QuestVP ip (useV copula) ;
|
||||||
|
|
||||||
|
-- -- GenericCl : VP -> Cl ; -- one sleeps
|
||||||
|
-- GenericCl = \vp -> predVP emptyNP vp ;
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- CleftNP : NP -> RS -> Cl ; -- it is I who did it
|
||||||
|
-- CleftAdv : Adv -> S -> Cl ; -- it is here she slept
|
||||||
|
|
||||||
|
-- -- : NP -> Cl ; -- there is a house
|
||||||
|
-- ExistNP np =
|
||||||
|
|
||||||
|
-- ExistIP : IP -> QCl ; -- which houses are there
|
||||||
|
|
||||||
|
-- 7/12/2012 generalizations of these
|
||||||
|
|
||||||
|
-- ExistNPAdv : NP -> Adv -> Cl ; -- there is a house in Paris
|
||||||
|
-- ExistIPAdv : IP -> Adv -> QCl ; -- which houses are there in Paris
|
||||||
|
|
||||||
|
-- -- : VP -> VP ;
|
||||||
|
-- ProgrVP vp = vp ** {
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : VP -> Utt ; -- let's go
|
||||||
|
-- ImpPl1 vp = { } ;
|
||||||
|
|
||||||
|
-- ImpP3 : NP -> VP -> Utt ; -- let John walk
|
||||||
|
|
||||||
|
-- 3/12/2013 non-reflexive uses of "self"
|
||||||
|
|
||||||
|
-- SelfAdvVP : VP -> VP ; -- is at home himself
|
||||||
|
-- SelfAdVVP : VP -> VP ; -- is himself at home
|
||||||
|
-- SelfNP : NP -> NP ; -- the president himself (is at home)
|
||||||
|
---}
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
6
src/tamil/LangTam.gf
Normal file
6
src/tamil/LangTam.gf
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
--# -path=.:../abstract:../common:../prelude:../api
|
||||||
|
concrete LangTam of Lang =
|
||||||
|
GrammarTam,
|
||||||
|
LexiconTam,
|
||||||
|
ConstructionTam ;
|
||||||
|
|
||||||
431
src/tamil/LexiconTam.gf
Normal file
431
src/tamil/LexiconTam.gf
Normal file
@@ -0,0 +1,431 @@
|
|||||||
|
concrete LexiconTam of Lexicon = CatTam **
|
||||||
|
open ParadigmsTam, ResTam in {
|
||||||
|
|
||||||
|
----
|
||||||
|
-- A
|
||||||
|
|
||||||
|
-- lin add_V3 = mkV3 "" ;
|
||||||
|
--lin airplane_N = mkN "" ;
|
||||||
|
-- lin alas_Interj = mkInterj "" ;
|
||||||
|
--lin already_Adv = mkA "" ;
|
||||||
|
--lin animal_N = mkN "" ;
|
||||||
|
-- lin answer_V2S = mkV2S "" ;
|
||||||
|
--lin apartment_N = mkN "" ;
|
||||||
|
--lin apple_N = mkN "" ;
|
||||||
|
--lin art_N = mkN "" ;
|
||||||
|
--lin ashes_N = mkN "" ;
|
||||||
|
--lin ask_V2Q = mkV2 "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- B
|
||||||
|
|
||||||
|
--lin baby_N = mkN "" ;
|
||||||
|
--lin back_N = mkN "" ;
|
||||||
|
-- lin bad_A = mkA "" ;
|
||||||
|
--lin bank_N = mkN "" ;
|
||||||
|
-- lin bark_N = mkN "" ;
|
||||||
|
--lin beautiful_A = mkA "" ;
|
||||||
|
-- lin become_VA = mkVA "" ;
|
||||||
|
--lin beer_N = mkN "" ;
|
||||||
|
-- lin beg_V2V = mkV2 "" ;
|
||||||
|
-- lin belly_N = mkN "" ;
|
||||||
|
--lin big_A = mkA "" ;
|
||||||
|
--lin bike_N = mkN "" ;
|
||||||
|
--lin bird_N = mkN "" ;
|
||||||
|
-- lin bite_V2 = mkV2 "" ;
|
||||||
|
--lin black_A = mkA "" ;
|
||||||
|
--lin blood_N = mkN "" ;
|
||||||
|
-- lin blow_V = mkV "" ;
|
||||||
|
--lin blue_A = mkA "" ;
|
||||||
|
--lin boat_N = mkN "" ;
|
||||||
|
--lin bone_N = mkN "" ;
|
||||||
|
-- lin boot_N = mkN "" ;
|
||||||
|
-- lin boss_N = mkN "" ;
|
||||||
|
--lin book_N = mkN "" ;
|
||||||
|
-- lin boy_N = mkN "" ;
|
||||||
|
--lin bread_N = mkN "" ;
|
||||||
|
--lin break_V2 = mkV4 "" ;
|
||||||
|
-- lin breast_N = mkN "" ;
|
||||||
|
-- lin breathe_V = mkV "" ;
|
||||||
|
-- lin broad_A = mkA "" ;
|
||||||
|
-- lin brother_N2 = mkN "";
|
||||||
|
-- lin brown_A = mkA "" ;
|
||||||
|
--lin burn_V = mkV "" ;
|
||||||
|
--lin butter_N = mkN "" ;
|
||||||
|
--lin buy_V2 = mkV2 "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- C
|
||||||
|
|
||||||
|
-- lin camera_N = mkN "" ;
|
||||||
|
-- lin cap_N = mkN "" ;
|
||||||
|
--lin car_N = mkN "kereta" ;
|
||||||
|
-- lin carpet_N = mkN "" ;
|
||||||
|
--lin cat_N = mkN "kucing" ;
|
||||||
|
-- lin ceiling_N = mkN "" ;
|
||||||
|
-- lin chair_N = mkN "" ;
|
||||||
|
-- lin cheese_N = mkN "" ;
|
||||||
|
-- lin child_N = mkN "" ;
|
||||||
|
-- lin church_N = mkN "" ;
|
||||||
|
-- lin city_N = mkN "" ;
|
||||||
|
--lin clean_A = mkA "" ;
|
||||||
|
-- lin clever_A = mkA "" ;
|
||||||
|
-- lin close_V2 = mkV2 "" ;
|
||||||
|
--lin cloud_N = mkN "" ;
|
||||||
|
-- lin coat_N = mkN "" ;
|
||||||
|
-- lin cold_A = mkA "" ;
|
||||||
|
--lin come_V = mkV "" ;
|
||||||
|
-- lin computer_N = mkN "" ;
|
||||||
|
-- lin correct_A = mkA "" ;
|
||||||
|
-- lin count_V2 = mkV2 "" ;
|
||||||
|
-- lin country_N = mkN "" ;
|
||||||
|
-- lin cousin_N = mkN "" ;
|
||||||
|
--lin cow_N = mkN "" ;
|
||||||
|
-- lin cut_V2 = mkV2 "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- D
|
||||||
|
|
||||||
|
-- lin day_N = mkN "" ;
|
||||||
|
-- lin die_V = mkV "" ;
|
||||||
|
-- lin dig_V = mkV "" ;
|
||||||
|
-- lin dirty_A = mkA "" ;
|
||||||
|
-- lin distance_N3 = mkN "" ;
|
||||||
|
-- lin do_V2 = lin V2 "" ;
|
||||||
|
-- lin doctor_N = mkN "" ;
|
||||||
|
--lin dog_N = mkN "" ;
|
||||||
|
--lin door_N = mkN "" ;
|
||||||
|
--lin drink_V2 = let drink' : V2 = mkV2 "minum" in drink' ** {
|
||||||
|
-- s = \\_ => "" ;
|
||||||
|
--};
|
||||||
|
-- lin dry_A = mkA "" ;
|
||||||
|
-- lin dull_A = mkA "" ;
|
||||||
|
-- lin dust_N = mkN "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- E
|
||||||
|
|
||||||
|
-- lin ear_N = mkN "" ;
|
||||||
|
-- lin earth_N = mkN "" ;
|
||||||
|
--lin eat_V2 = let eat' : V2 = mkV2 "makan" in eat' ** {
|
||||||
|
-- s = \\_ => "makan" ;
|
||||||
|
--};
|
||||||
|
-- lin egg_N = mkN "" ;
|
||||||
|
-- lin empty_A = mkA "" ;
|
||||||
|
-- lin enemy_N = mkN "" ;
|
||||||
|
-- lin eye_N = mkN "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- F
|
||||||
|
|
||||||
|
-- lin factory_N = mkN "" ;
|
||||||
|
-- lin fall_V = mkV "" ;
|
||||||
|
-- lin far_Adv = mkA "" ;
|
||||||
|
-- lin fat_N = mkN "" ;
|
||||||
|
--lin father_N2 = mkN2 "" ;
|
||||||
|
-- lin fear_V2 = mkV2 "" ;
|
||||||
|
-- lin fear_VS = mkVS "" ;
|
||||||
|
-- lin feather_N = mkN "" ;
|
||||||
|
-- lin fight_V2 = mkV2 "" ;
|
||||||
|
-- lin find_V2 = mkV2 "" ;
|
||||||
|
-- lin fingernail_N = mkN "" ;
|
||||||
|
-- lin fire_N = mkN "" ;
|
||||||
|
-- lin fish_N = mkN "" ;
|
||||||
|
-- lin float_V = mkV "" ;
|
||||||
|
-- lin floor_N = mkN "" ;
|
||||||
|
-- lin flow_V = mkV "" ;
|
||||||
|
-- lin flower_N = mkN "" ;
|
||||||
|
-- lin fly_V = mkV "" ;
|
||||||
|
-- lin fog_N = mkN "" ;
|
||||||
|
-- lin foot_N = mkN "" ;
|
||||||
|
-- lin forest_N = mkN "" ;
|
||||||
|
-- lin forget_V2 = mkV2 "" ;
|
||||||
|
-- lin freeze_V = mkV "" ;
|
||||||
|
-- lin fridge_N = mkN "" ;
|
||||||
|
-- lin friend_N = mkN "" ;
|
||||||
|
-- lin fruit_N = mkN "" ;
|
||||||
|
-- lin full_A = mkA "" ;
|
||||||
|
-- --lin fun_AV
|
||||||
|
|
||||||
|
----
|
||||||
|
-- G
|
||||||
|
|
||||||
|
-- lin garden_N = mkN "" ;
|
||||||
|
-- lin girl_N = mkN "" ;
|
||||||
|
--lin give_V3 = mkV3 "" ;
|
||||||
|
-- lin glove_N = mkN "" ;
|
||||||
|
--lin go_V = mkV "" ;
|
||||||
|
-- lin gold_N = mkN "" ;
|
||||||
|
-- lin good_A = mkA "" ;
|
||||||
|
-- lin grammar_N = mkN "" ;
|
||||||
|
-- lin grass_N = mkN "" ;
|
||||||
|
--lin green_A = mkA "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- H
|
||||||
|
|
||||||
|
-- lin hair_N = mkN "" ;
|
||||||
|
-- lin hand_N = mkN "" ;
|
||||||
|
-- lin harbour_N = mkN "" ;
|
||||||
|
-- lin hat_N = mkN "" ;
|
||||||
|
-- lin hate_V2 = mkV2 "" ;
|
||||||
|
-- lin head_N = mkN "" ;
|
||||||
|
-- lin hear_V2 = mkV2 "" ;
|
||||||
|
-- lin heart_N = mkN "" ;
|
||||||
|
-- lin heavy_A = mkA "" ;
|
||||||
|
-- lin hill_N = mkN "" ;
|
||||||
|
--lin hit_V2 = mkV2 "" ;
|
||||||
|
-- lin hold_V2 = mkV2 "" ;
|
||||||
|
-- lin hope_VS = mkV "" ;
|
||||||
|
-- lin horn_N = mkN "" ;
|
||||||
|
-- lin horse_N = mkN "" ;
|
||||||
|
-- lin hot_A = mkA "" ;
|
||||||
|
lin house_N = mkN "vittu" "vittu" ;
|
||||||
|
-- lin hunt_V2 = mkV2 "" ;
|
||||||
|
-- lin husband_N = mkN "" ;
|
||||||
|
|
||||||
|
--------
|
||||||
|
-- I - K
|
||||||
|
|
||||||
|
-- lin ice_N = mkN "" ;
|
||||||
|
-- lin industry_N = mkN "" ;
|
||||||
|
-- lin iron_N = mkN "" ;
|
||||||
|
--lin john_PN = mkPN "" ;
|
||||||
|
-- lin jump_V = mkV "" ;
|
||||||
|
-- lin kill_V2 = mkV2 "" ;
|
||||||
|
--lin king_N = mkN "" ;
|
||||||
|
-- lin knee_N = mkN "" ;
|
||||||
|
-- lin know_V2 = mkV2 "" ;
|
||||||
|
-- lin know_VQ = mkVQ "" ;
|
||||||
|
-- lin know_VS = mkV "" ;
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
-- L
|
||||||
|
|
||||||
|
-- lin lake_N = mkN "" ;
|
||||||
|
-- lin lamp_N = mkN "" ;
|
||||||
|
-- lin language_N = mkN "" ;
|
||||||
|
-- lin laugh_V = mkV "" ;
|
||||||
|
-- lin leaf_N = mkN "" ;
|
||||||
|
--lin learn_V2 = mkV2 (prefixV (mkV "ajar" Ber)) emptyPrep ;
|
||||||
|
-- lin leather_N = mkN "" ;
|
||||||
|
-- lin leave_V2 = mkV2 "" ;
|
||||||
|
-- lin leg_N = mkN "" ;
|
||||||
|
-- lin lie_V = mkV "" ;
|
||||||
|
--lin like_V2 = let like' : V2 = mkV2 "suka" in like' ** {
|
||||||
|
-- s = \\_ => "suka" ;
|
||||||
|
-- passive = "disukai" ;
|
||||||
|
--} ;
|
||||||
|
-- lin listen_V2 = mkV2 "" ;
|
||||||
|
-- lin live_V = mkV "";
|
||||||
|
-- lin liver_N = mkN "" ;
|
||||||
|
--lin long_A = mkA "" ;
|
||||||
|
-- lin lose_V2 = mkV2 "" ;
|
||||||
|
-- lin louse_N = mkN "" ;
|
||||||
|
-- lin love_N = mkN "" ;
|
||||||
|
-- lin love_V2 = let love' : V2 = mkV2 "cinta" in love' ** {
|
||||||
|
-- s = \\_ => "mencintai" ;
|
||||||
|
-- passive = "dicintai" ;
|
||||||
|
-- } ;
|
||||||
|
--lin love_V2 = mkV4 "" "";
|
||||||
|
|
||||||
|
----
|
||||||
|
-- M
|
||||||
|
|
||||||
|
--lin man_N = mkN "lelaki" ;
|
||||||
|
-- lin married_A2 = mkA "" ;
|
||||||
|
--lin meat_N = mkN "daging" ;
|
||||||
|
--lin milk_N = mkN "susu" ;
|
||||||
|
-- lin moon_N = mkN "" ;
|
||||||
|
--lin mother_N2 = mkN2 "ibu" ;
|
||||||
|
-- lin mountain_N = mkN "" ;
|
||||||
|
-- lin mouth_N = mkN "" ;
|
||||||
|
-- lin music_N = mkN "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- N
|
||||||
|
|
||||||
|
-- lin name_N = mkN "" ;
|
||||||
|
-- lin narrow_A = mkA "" ;
|
||||||
|
-- lin near_A = mkA "" ;
|
||||||
|
-- lin neck_N = mkN "" ;
|
||||||
|
-- lin new_A = mkA "" ;
|
||||||
|
-- lin newspaper_N = mkN "" ;
|
||||||
|
-- lin night_N = mkN "" ;
|
||||||
|
-- lin nose_N = mkN "" ;
|
||||||
|
--lin now_Adv = mkAdv "sekarang" ;
|
||||||
|
-- lin number_N = mkN "" ;
|
||||||
|
|
||||||
|
--------
|
||||||
|
-- O - P
|
||||||
|
|
||||||
|
|
||||||
|
-- lin oil_N = mkN "" ;
|
||||||
|
--lin old_A = mkA "tua" ;
|
||||||
|
--lin open_V2 = mkV2 "buka" ;
|
||||||
|
--lin paint_V2A = mkV2 "cat" ;
|
||||||
|
-- lin paper_N = mkN "" ;
|
||||||
|
-- lin paris_PN = mkPN "Paris" ;
|
||||||
|
-- lin peace_N = mkN "" ;
|
||||||
|
-- lin pen_N = mkN "" ;
|
||||||
|
--lin person_N = mkN "orang" ;
|
||||||
|
-- lin planet_N = mkN "" ;
|
||||||
|
-- lin plastic_N = mkN "" ;
|
||||||
|
-- lin play_V = mkV "" ;
|
||||||
|
-- lin policeman_N = mkN "" ;
|
||||||
|
-- lin priest_N = mkN "" ;
|
||||||
|
-- lin pull_V2 = mkV2 "" ;
|
||||||
|
-- lin push_V2 = mkV2 "" ;
|
||||||
|
-- lin put_V2 = mkV2 "" ;
|
||||||
|
|
||||||
|
--------
|
||||||
|
-- Q - R
|
||||||
|
|
||||||
|
|
||||||
|
--lin queen_N = mkN "ratu" ;
|
||||||
|
-- lin question_N = mkN "" ;
|
||||||
|
-- lin radio_N = mkN "" ;
|
||||||
|
--lin rain_N = mkN "hujan" ;
|
||||||
|
--lin rain_V0 = mkV "hujan" ;
|
||||||
|
--lin read_V2 = mkV2 "baca" ;
|
||||||
|
-- lin ready_A = mkA "" ;
|
||||||
|
-- lin reason_N = mkN "" ;
|
||||||
|
-- lin red_A = mkA "" ;
|
||||||
|
-- lin religion_N = mkN "" ;
|
||||||
|
-- lin restaurant_N = mkN "" ;
|
||||||
|
-- lin river_N = mkN "" ;
|
||||||
|
-- lin road_N = mkN "" ;
|
||||||
|
-- lin rock_N = mkN "" ;
|
||||||
|
-- lin roof_N = mkN "" ;
|
||||||
|
-- lin root_N = mkN "" ;
|
||||||
|
-- lin rope_N = mkN "" ;
|
||||||
|
-- lin rotten_A = mkA "" ;
|
||||||
|
-- lin round_A = mkA "" ;
|
||||||
|
-- lin rub_V2 = mkV2 "" ;
|
||||||
|
-- lin rubber_N = mkN "" ;
|
||||||
|
--lin rule_N = mkN "peraturan" ;
|
||||||
|
-- lin run_V = mkV "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- S
|
||||||
|
|
||||||
|
-- lin salt_N = mkN "" ;
|
||||||
|
-- lin sand_N = mkN "" ;
|
||||||
|
-- lin say_VS = mkVS "" ;
|
||||||
|
--lin school_N = mkN "sekolah" ;
|
||||||
|
--lin science_N = mkN "sains" ;
|
||||||
|
-- lin scratch_V2 = mkV2 "" ;
|
||||||
|
-- lin sea_N = mkN "" ;
|
||||||
|
--lin see_V2 = mkV2 "lihat" ;
|
||||||
|
-- lin seed_N = mkN "" ;
|
||||||
|
-- lin seek_V2 = mkV2 "" ;
|
||||||
|
-- lin sell_V3 = mkV3 (mkV "jual" Meng) emptyPrep emptyPrep ; -- TODO
|
||||||
|
-- lin send_V3 = mkV3 "" ;
|
||||||
|
-- lin sew_V = mkV "" ;
|
||||||
|
-- lin sharp_A = mkA "" ;
|
||||||
|
-- lin sheep_N = mkN "" fem ;
|
||||||
|
-- lin ship_N = mkN "" ;
|
||||||
|
-- lin shirt_N = mkN "" ;
|
||||||
|
-- lin shoe_N = mkN "" ;
|
||||||
|
-- lin shop_N = mkN "" ;
|
||||||
|
-- lin short_A = mkA "" ;
|
||||||
|
-- lin silver_N = mkN "" ;
|
||||||
|
--lin sing_V = mkV "nyanyi" ;
|
||||||
|
-- lin sister_N = mkN "" ;
|
||||||
|
-- lin sit_V = mkV "" ;
|
||||||
|
-- lin skin_N = mkN "" ;
|
||||||
|
-- lin sky_N = mkN "" ;
|
||||||
|
-- lin sleep_V = mkV "" ;
|
||||||
|
--lin small_A = mkA "kecil" ;
|
||||||
|
-- lin smell_V = mkV "" ;
|
||||||
|
-- lin smoke_N = mkN "" ;
|
||||||
|
-- lin smooth_A = mkA "" ;
|
||||||
|
-- lin snake_N = mkN "" ;
|
||||||
|
-- lin snow_N = mkN "" ;
|
||||||
|
-- lin sock_N = mkN "" ;
|
||||||
|
--lin song_N = mkN "lagu" ;
|
||||||
|
-- lin speak_V2 = mkV2 "" ;
|
||||||
|
-- lin spit_V = mkV "" ;
|
||||||
|
-- lin split_V2 = mkV2 "" ;
|
||||||
|
-- lin squeeze_V2 = mkV2 "" ;
|
||||||
|
-- lin stab_V2 = mkV2 "" ;
|
||||||
|
-- lin stand_V = mkV "" ;
|
||||||
|
-- lin star_N = mkN "" ;
|
||||||
|
-- lin steel_N = mkN "" ;
|
||||||
|
-- lin stick_N = mkN "" ;
|
||||||
|
-- lin stone_N = mkN "" ;
|
||||||
|
--lin stop_V = mkV "henti" ;
|
||||||
|
-- lin stove_N = mkN "" ;
|
||||||
|
-- lin straight_A = mkA "" ;
|
||||||
|
-- lin student_N = mkN "" ;
|
||||||
|
-- lin stupid_A = mkA "" ;
|
||||||
|
-- lin suck_V2 = mkV2 "" ;
|
||||||
|
-- lin sun_N = mkN "" ;
|
||||||
|
-- lin swell_V = mkV "" ;
|
||||||
|
-- lin swim_V = mkV "" ;
|
||||||
|
|
||||||
|
----
|
||||||
|
-- T
|
||||||
|
|
||||||
|
|
||||||
|
-- lin table_N = mkN "" ;
|
||||||
|
-- lin tail_N = mkN "" ;
|
||||||
|
--lin talk_V3 = mkV3 (mkV "cakap" Ber) (mkPrep "tentang") (mkPrep "dengan") ;
|
||||||
|
--lin teach_V2 = mkV2 "ajar" ;
|
||||||
|
-- lin teacher_N = mkN "" ;
|
||||||
|
-- lin television_N = mkN "" ;
|
||||||
|
-- lin thick_A = mkA "" ;
|
||||||
|
-- lin thin_A = mkA "" ;
|
||||||
|
-- lin think_V = mkV "" ;
|
||||||
|
-- lin throw_V2 = mkV2 "" ;
|
||||||
|
-- lin tie_V2 = mkV2 "" ;
|
||||||
|
-- lin today_Adv = mkA "" ;
|
||||||
|
-- lin tongue_N = mkN "" ;
|
||||||
|
-- lin tooth_N = mkN "" ;
|
||||||
|
-- lin train_N = mkN "" ;
|
||||||
|
-- lin travel_V = mkV "" ;
|
||||||
|
-- lin tree_N = mkN "" ;
|
||||||
|
-- lin turn_V = mkV "" ;
|
||||||
|
|
||||||
|
--------
|
||||||
|
-- U - V
|
||||||
|
|
||||||
|
--lin ugly_A = mkA "jelek" ;
|
||||||
|
-- lin uncertain_A = mkA "" ;
|
||||||
|
-- lin understand_V2 = mkV2 "" ;
|
||||||
|
-- lin university_N = mkN "" ;
|
||||||
|
-- lin village_N = mkN "" ;
|
||||||
|
-- lin vomit_V = mkV2 "" ;
|
||||||
|
|
||||||
|
--------
|
||||||
|
-- W - Y
|
||||||
|
|
||||||
|
-- lin wait_V2 = mkV2 "" ;
|
||||||
|
--lin walk_V = mkV "jalan" ;
|
||||||
|
-- lin war_N = mkN "" ;
|
||||||
|
-- lin warm_A = mkA "" ;
|
||||||
|
-- lin wash_V2 = mkV2 "" ;
|
||||||
|
-- lin watch_V2 = mkV2 "" ;
|
||||||
|
-- lin water_N = mkNoun "" ;
|
||||||
|
-- lin wet_A = mkA "" ;
|
||||||
|
-- lin white_A = mkA "" ;
|
||||||
|
-- lin wide_A = mkA "" ;
|
||||||
|
-- lin wife_N = mkN "" ;
|
||||||
|
-- lin win_V2 = mkV2 "" ;
|
||||||
|
-- lin wind_N = mkN "" ;
|
||||||
|
-- lin window_N = mkN "" ;
|
||||||
|
-- lin wine_N = mkN "" ;
|
||||||
|
-- lin wing_N = mkN "" ;
|
||||||
|
-- lin wipe_V2 = mkV2 "" ;
|
||||||
|
--lin woman_N = mkN "perempuan" ;
|
||||||
|
-- lin wonder_VQ = mkVQ "" ;
|
||||||
|
-- lin wood_N = mkN "" ;
|
||||||
|
-- lin worm_N = mkN "" ;
|
||||||
|
--lin write_V2 = mkV2 "tulis" ;
|
||||||
|
-- lin year_N = mkN "" ;
|
||||||
|
-- lin yellow_A = mkA "" ;
|
||||||
|
--lin young_A = mkA "muda" ;
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
561
src/tamil/MissingTam.gf
Normal file
561
src/tamil/MissingTam.gf
Normal file
@@ -0,0 +1,561 @@
|
|||||||
|
resource MissingTam = open GrammarTam, Prelude in {
|
||||||
|
--oper AdAP : AdA -> AP -> AP = notYet "AdAP" ;
|
||||||
|
--oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ;
|
||||||
|
--oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||||
|
--oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ;
|
||||||
|
--oper AdVVPSlash : AdV -> VPSlash -> VPSlash = notYet "AdVVPSlash" ;
|
||||||
|
--oper AddAdvQVP : QVP -> IAdv -> QVP = notYet "AddAdvQVP" ;
|
||||||
|
--oper AdjCN : AP -> CN -> CN = notYet "AdjCN" ;
|
||||||
|
--oper AdjDAP : DAP -> AP -> DAP = notYet "AdjDAP" ;
|
||||||
|
--oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
|
||||||
|
--oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
|
||||||
|
--oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||||
|
--oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||||
|
--oper AdvNP : NP -> Adv -> NP = notYet "AdvNP" ;
|
||||||
|
--oper AdvQVP : VP -> IAdv -> QVP = notYet "AdvQVP" ;
|
||||||
|
--oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||||
|
--oper AdvVPSlash : VPSlash -> Adv -> VPSlash = notYet "AdvVPSlash" ;
|
||||||
|
--oper ApposCN : CN -> NP -> CN = notYet "ApposCN" ;
|
||||||
|
--oper BaseAP : AP -> AP -> ListAP = notYet "BaseAP" ;
|
||||||
|
--oper BaseAdV : AdV -> AdV -> ListAdV = notYet "BaseAdV" ;
|
||||||
|
--oper BaseAdv : Adv -> Adv -> ListAdv = notYet "BaseAdv" ;
|
||||||
|
--oper BaseCN : CN -> CN -> ListCN = notYet "BaseCN" ;
|
||||||
|
--oper BaseIAdv : IAdv -> IAdv -> ListIAdv = notYet "BaseIAdv" ;
|
||||||
|
--oper BaseNP : NP -> NP -> ListNP = notYet "BaseNP" ;
|
||||||
|
--oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
|
||||||
|
--oper BaseS : S -> S -> ListS = notYet "BaseS" ;
|
||||||
|
--oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
||||||
|
--oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||||
|
--oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||||
|
--oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
|
||||||
|
--oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||||
|
--oper ComparAdvAdj : CAdv -> A -> NP -> Adv = notYet "ComparAdvAdj" ;
|
||||||
|
--oper ComparAdvAdjS : CAdv -> A -> S -> Adv = notYet "ComparAdvAdjS" ;
|
||||||
|
--oper ComplA2 : A2 -> NP -> AP = notYet "ComplA2" ;
|
||||||
|
--oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
|
||||||
|
--oper ComplSlashIP : VPSlash -> IP -> QVP = notYet "ComplSlashIP" ;
|
||||||
|
--oper ComplVA : VA -> AP -> VP = notYet "ComplVA" ;
|
||||||
|
--oper ComplVQ : VQ -> QS -> VP = notYet "ComplVQ" ;
|
||||||
|
--oper ComplVS : VS -> S -> VP = notYet "ComplVS" ;
|
||||||
|
--oper ConjAP : Conj -> ListAP -> AP = notYet "ConjAP" ;
|
||||||
|
--oper ConjAdV : Conj -> ListAdV -> AdV = notYet "ConjAdV" ;
|
||||||
|
--oper ConjAdv : Conj -> ListAdv -> Adv = notYet "ConjAdv" ;
|
||||||
|
--oper ConjCN : Conj -> ListCN -> CN = notYet "ConjCN" ;
|
||||||
|
--oper ConjDet : Conj -> ListDAP -> Det = notYet "ConjDet" ;
|
||||||
|
--oper ConjIAdv : Conj -> ListIAdv -> IAdv = notYet "ConjIAdv" ;
|
||||||
|
--oper ConjNP : Conj -> ListNP -> NP = notYet "ConjNP" ;
|
||||||
|
--oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
|
||||||
|
--oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
|
||||||
|
--oper ConsAP : AP -> ListAP -> ListAP = notYet "ConsAP" ;
|
||||||
|
--oper ConsAdV : AdV -> ListAdV -> ListAdV = notYet "ConsAdV" ;
|
||||||
|
--oper ConsAdv : Adv -> ListAdv -> ListAdv = notYet "ConsAdv" ;
|
||||||
|
--oper ConsCN : CN -> ListCN -> ListCN = notYet "ConsCN" ;
|
||||||
|
--oper ConsIAdv : IAdv -> ListIAdv -> ListIAdv = notYet "ConsIAdv" ;
|
||||||
|
--oper ConsNP : NP -> ListNP -> ListNP = notYet "ConsNP" ;
|
||||||
|
--oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
|
||||||
|
--oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
|
||||||
|
--oper CountNP : Det -> NP -> NP = notYet "CountNP" ;
|
||||||
|
--oper DetDAP : Det -> DAP = notYet "DetDAP" ;
|
||||||
|
--oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
|
||||||
|
--oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
|
||||||
|
--oper EmbedS : S -> SC = notYet "EmbedS" ;
|
||||||
|
--oper EmbedVP : VP -> SC = notYet "EmbedVP" ;
|
||||||
|
--oper ExistIP : IP -> QCl = notYet "ExistIP" ;
|
||||||
|
--oper ExistIPAdv : IP -> Adv -> QCl = notYet "ExistIPAdv" ;
|
||||||
|
--oper ExistNP : NP -> Cl = notYet "ExistNP" ;
|
||||||
|
--oper ExistNPAdv : NP -> Adv -> Cl = notYet "ExistNPAdv" ;
|
||||||
|
--oper ExtAdvVP : VP -> Adv -> VP = notYet "ExtAdvVP" ;
|
||||||
|
--oper FunRP : Prep -> NP -> RP -> RP = notYet "FunRP" ;
|
||||||
|
--oper GenericCl : VP -> Cl = notYet "GenericCl" ;
|
||||||
|
--oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
|
||||||
|
--oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||||
|
--oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||||
|
--oper ImpP3 : NP -> VP -> Utt = notYet "ImpP3" ;
|
||||||
|
--oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
|
||||||
|
--oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||||
|
--oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||||
|
--oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
|
||||||
|
--oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
|
||||||
|
--oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||||
|
--oper PConjConj : Conj -> PConj = notYet "PConjConj" ;
|
||||||
|
--oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||||
|
--oper PartNP : CN -> NP -> CN = notYet "PartNP" ;
|
||||||
|
--oper PositAdAAdj : A -> AdA = notYet "PositAdAAdj" ;
|
||||||
|
--oper PositAdvAdj : A -> Adv = notYet "PositAdvAdj" ;
|
||||||
|
--oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||||
|
--oper PredetNP : Predet -> NP -> NP = notYet "PredetNP" ;
|
||||||
|
--oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||||
|
--oper ProgrVP : VP -> VP = notYet "ProgrVP" ;
|
||||||
|
--oper QuestCl : Cl -> QCl = notYet "QuestCl" ;
|
||||||
|
--oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||||
|
--oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
|
||||||
|
--oper QuestQVP : IP -> QVP -> QCl = notYet "QuestQVP" ;
|
||||||
|
--oper QuestSlash : IP -> ClSlash -> QCl = notYet "QuestSlash" ;
|
||||||
|
--oper QuestVP : IP -> VP -> QCl = notYet "QuestVP" ;
|
||||||
|
--oper ReflA2 : A2 -> AP = notYet "ReflA2" ;
|
||||||
|
--oper ReflVP : VPSlash -> VP = notYet "ReflVP" ;
|
||||||
|
--oper RelCl : Cl -> RCl = notYet "RelCl" ;
|
||||||
|
--oper RelS : S -> RS -> S = notYet "RelS" ;
|
||||||
|
--oper SSubjS : S -> Subj -> S -> S = notYet "SSubjS" ;
|
||||||
|
--oper SelfAdVVP : VP -> VP = notYet "SelfAdVVP" ;
|
||||||
|
--oper SelfAdvVP : VP -> VP = notYet "SelfAdvVP" ;
|
||||||
|
--oper SelfNP : NP -> NP = notYet "SelfNP" ;
|
||||||
|
--oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
|
||||||
|
--oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||||
|
--oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
|
||||||
|
--oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
|
||||||
|
--oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ;
|
||||||
|
--oper SlashV2V : V2V -> VP -> VPSlash = notYet "SlashV2V" ;
|
||||||
|
--oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
|
||||||
|
--oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
|
||||||
|
--oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||||
|
--oper Use3N3 : N3 -> N2 = notYet "Use3N3" ;
|
||||||
|
--oper UseA2 : A2 -> AP = notYet "UseA2" ;
|
||||||
|
--oper UseComparA : A -> AP = notYet "UseComparA" ;
|
||||||
|
--oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ;
|
||||||
|
--oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
|
||||||
|
--oper UttAP : AP -> Utt = notYet "UttAP" ;
|
||||||
|
--oper UttAdv : Adv -> Utt = notYet "UttAdv" ;
|
||||||
|
--oper UttCN : CN -> Utt = notYet "UttCN" ;
|
||||||
|
--oper UttCard : Card -> Utt = notYet "UttCard" ;
|
||||||
|
--oper UttIAdv : IAdv -> Utt = notYet "UttIAdv" ;
|
||||||
|
--oper UttIP : IP -> Utt = notYet "UttIP" ;
|
||||||
|
--oper UttImpPl : Pol -> Imp -> Utt = notYet "UttImpPl" ;
|
||||||
|
--oper UttImpPol : Pol -> Imp -> Utt = notYet "UttImpPol" ;
|
||||||
|
--oper UttImpSg : Pol -> Imp -> Utt = notYet "UttImpSg" ;
|
||||||
|
--oper UttInterj : Interj -> Utt = notYet "UttInterj" ;
|
||||||
|
--oper UttQS : QS -> Utt = notYet "UttQS" ;
|
||||||
|
--oper UttVP : VP -> Utt = notYet "UttVP" ;
|
||||||
|
--oper VPSlashPrep : VP -> Prep -> VPSlash = notYet "VPSlashPrep" ;
|
||||||
|
--oper VocNP : NP -> Voc = notYet "VocNP" ;
|
||||||
|
--oper above_Prep : Prep = notYet "above_Prep" ;
|
||||||
|
--oper active2passive : Cl -> Cl = notYet "active2passive" ;
|
||||||
|
--oper add_V3 : V3 = notYet "add_V3" ;
|
||||||
|
--oper after_Prep : Prep = notYet "after_Prep" ;
|
||||||
|
--oper airplane_N : N = notYet "airplane_N" ;
|
||||||
|
--oper alas_Interj : Interj = notYet "alas_Interj" ;
|
||||||
|
--oper all_Predet : Predet = notYet "all_Predet" ;
|
||||||
|
--oper almost_AdA : AdA = notYet "almost_AdA" ;
|
||||||
|
--oper almost_AdN : AdN = notYet "almost_AdN" ;
|
||||||
|
--oper already_Adv : Adv = notYet "already_Adv" ;
|
||||||
|
--oper although_Subj : Subj = notYet "although_Subj" ;
|
||||||
|
--oper always_AdV : AdV = notYet "always_AdV" ;
|
||||||
|
--oper animal_N : N = notYet "animal_N" ;
|
||||||
|
--oper answer_V2S : V2S = notYet "answer_V2S" ;
|
||||||
|
--oper apartment_N : N = notYet "apartment_N" ;
|
||||||
|
--oper apple_N : N = notYet "apple_N" ;
|
||||||
|
--oper art_N : N = notYet "art_N" ;
|
||||||
|
--oper as_CAdv : CAdv = notYet "as_CAdv" ;
|
||||||
|
--oper ashes_N : N = notYet "ashes_N" ;
|
||||||
|
--oper ask_V2Q : V2Q = notYet "ask_V2Q" ;
|
||||||
|
--oper at_least_AdN : AdN = notYet "at_least_AdN" ;
|
||||||
|
--oper at_most_AdN : AdN = notYet "at_most_AdN" ;
|
||||||
|
--oper baby_N : N = notYet "baby_N" ;
|
||||||
|
--oper back_N : N = notYet "back_N" ;
|
||||||
|
--oper bad_A : A = notYet "bad_A" ;
|
||||||
|
--oper bank_N : N = notYet "bank_N" ;
|
||||||
|
--oper bark_N : N = notYet "bark_N" ;
|
||||||
|
--oper because_Subj : Subj = notYet "because_Subj" ;
|
||||||
|
--oper become_VA : VA = notYet "become_VA" ;
|
||||||
|
--oper beer_N : N = notYet "beer_N" ;
|
||||||
|
--oper before_Prep : Prep = notYet "before_Prep" ;
|
||||||
|
--oper beg_V2V : V2V = notYet "beg_V2V" ;
|
||||||
|
--oper behind_Prep : Prep = notYet "behind_Prep" ;
|
||||||
|
--oper belly_N : N = notYet "belly_N" ;
|
||||||
|
--oper between_Prep : Prep = notYet "between_Prep" ;
|
||||||
|
--oper big_A : A = notYet "big_A" ;
|
||||||
|
--oper bike_N : N = notYet "bike_N" ;
|
||||||
|
--oper bird_N : N = notYet "bird_N" ;
|
||||||
|
--oper bite_V2 : V2 = notYet "bite_V2" ;
|
||||||
|
--oper black_A : A = notYet "black_A" ;
|
||||||
|
--oper blood_N : N = notYet "blood_N" ;
|
||||||
|
--oper blow_V : V = notYet "blow_V" ;
|
||||||
|
--oper blue_A : A = notYet "blue_A" ;
|
||||||
|
--oper boat_N : N = notYet "boat_N" ;
|
||||||
|
--oper bone_N : N = notYet "bone_N" ;
|
||||||
|
--oper boot_N : N = notYet "boot_N" ;
|
||||||
|
--oper boss_N : N = notYet "boss_N" ;
|
||||||
|
--oper both7and_DConj : Conj = notYet "both7and_DConj" ;
|
||||||
|
--oper boy_N : N = notYet "boy_N" ;
|
||||||
|
--oper bread_N : N = notYet "bread_N" ;
|
||||||
|
--oper break_V2 : V2 = notYet "break_V2" ;
|
||||||
|
--oper breast_N : N = notYet "breast_N" ;
|
||||||
|
--oper breathe_V : V = notYet "breathe_V" ;
|
||||||
|
--oper broad_A : A = notYet "broad_A" ;
|
||||||
|
--oper brother_N2 : N2 = notYet "brother_N2" ;
|
||||||
|
--oper brown_A : A = notYet "brown_A" ;
|
||||||
|
--oper burn_V : V = notYet "burn_V" ;
|
||||||
|
--oper but_PConj : PConj = notYet "but_PConj" ;
|
||||||
|
--oper butter_N : N = notYet "butter_N" ;
|
||||||
|
--oper camera_N : N = notYet "camera_N" ;
|
||||||
|
--oper can8know_VV : VV = notYet "can8know_VV" ;
|
||||||
|
--oper cap_N : N = notYet "cap_N" ;
|
||||||
|
--oper carpet_N : N = notYet "carpet_N" ;
|
||||||
|
--oper ceiling_N : N = notYet "ceiling_N" ;
|
||||||
|
--oper chair_N : N = notYet "chair_N" ;
|
||||||
|
--oper cheese_N : N = notYet "cheese_N" ;
|
||||||
|
--oper child_N : N = notYet "child_N" ;
|
||||||
|
--oper church_N : N = notYet "church_N" ;
|
||||||
|
--oper city_N : N = notYet "city_N" ;
|
||||||
|
--oper clean_A : A = notYet "clean_A" ;
|
||||||
|
--oper clever_A : A = notYet "clever_A" ;
|
||||||
|
--oper close_V2 : V2 = notYet "close_V2" ;
|
||||||
|
--oper cloud_N : N = notYet "cloud_N" ;
|
||||||
|
--oper coat_N : N = notYet "coat_N" ;
|
||||||
|
--oper cold_A : A = notYet "cold_A" ;
|
||||||
|
--oper computer_N : N = notYet "computer_N" ;
|
||||||
|
--oper correct_A : A = notYet "correct_A" ;
|
||||||
|
--oper count_V2 : V2 = notYet "count_V2" ;
|
||||||
|
--oper country_N : N = notYet "country_N" ;
|
||||||
|
--oper cousin_N : N = notYet "cousin_N" ;
|
||||||
|
--oper cow_N : N = notYet "cow_N" ;
|
||||||
|
--oper cut_V2 : V2 = notYet "cut_V2" ;
|
||||||
|
--oper day_N : N = notYet "day_N" ;
|
||||||
|
--oper dconcat : Digits -> Digits -> Digits = notYet "dconcat" ;
|
||||||
|
--oper die_V : V = notYet "die_V" ;
|
||||||
|
--oper dig_V : V = notYet "dig_V" ;
|
||||||
|
--oper digits2num : Digits -> Numeral = notYet "digits2num" ;
|
||||||
|
--oper digits2numeral : Card -> Card = notYet "digits2numeral" ;
|
||||||
|
--oper dirty_A : A = notYet "dirty_A" ;
|
||||||
|
--oper distance_N3 : N3 = notYet "distance_N3" ;
|
||||||
|
--oper dn : Dig -> Digit = notYet "dn" ;
|
||||||
|
--oper dn10 : Dig -> Sub10 = notYet "dn10" ;
|
||||||
|
--oper dn100 : Dig -> Dig -> Sub100 = notYet "dn100" ;
|
||||||
|
--oper dn1000 : Dig -> Dig -> Dig -> Sub1000 = notYet "dn1000" ;
|
||||||
|
--oper dn1000000a : Dig -> Dig -> Dig -> Dig -> Sub1000000 = notYet "dn1000000a" ;
|
||||||
|
--oper dn1000000b : Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 = notYet "dn1000000b" ;
|
||||||
|
--oper dn1000000c : Dig -> Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 = notYet "dn1000000c" ;
|
||||||
|
--oper do_V2 : V2 = notYet "do_V2" ;
|
||||||
|
--oper doctor_N : N = notYet "doctor_N" ;
|
||||||
|
--oper door_N : N = notYet "door_N" ;
|
||||||
|
--oper dry_A : A = notYet "dry_A" ;
|
||||||
|
--oper dull_A : A = notYet "dull_A" ;
|
||||||
|
--oper during_Prep : Prep = notYet "during_Prep" ;
|
||||||
|
--oper dust_N : N = notYet "dust_N" ;
|
||||||
|
--oper ear_N : N = notYet "ear_N" ;
|
||||||
|
--oper earth_N : N = notYet "earth_N" ;
|
||||||
|
--oper easy_A2V : A2 = notYet "easy_A2V" ;
|
||||||
|
--oper egg_N : N = notYet "egg_N" ;
|
||||||
|
--oper either7or_DConj : Conj = notYet "either7or_DConj" ;
|
||||||
|
--oper empty_A : A = notYet "empty_A" ;
|
||||||
|
--oper enemy_N : N = notYet "enemy_N" ;
|
||||||
|
--oper every_Det : Det = notYet "every_Det" ;
|
||||||
|
--oper everybody_NP : NP = notYet "everybody_NP" ;
|
||||||
|
--oper everything_NP : NP = notYet "everything_NP" ;
|
||||||
|
--oper everywhere_Adv : Adv = notYet "everywhere_Adv" ;
|
||||||
|
--oper except_Prep : Prep = notYet "except_Prep" ;
|
||||||
|
--oper eye_N : N = notYet "eye_N" ;
|
||||||
|
--oper factory_N : N = notYet "factory_N" ;
|
||||||
|
--oper fall_V : V = notYet "fall_V" ;
|
||||||
|
--oper far_Adv : Adv = notYet "far_Adv" ;
|
||||||
|
--oper fat_N : N = notYet "fat_N" ;
|
||||||
|
--oper fear_V2 : V2 = notYet "fear_V2" ;
|
||||||
|
--oper fear_VS : VS = notYet "fear_VS" ;
|
||||||
|
--oper feather_N : N = notYet "feather_N" ;
|
||||||
|
--oper few_Det : Det = notYet "few_Det" ;
|
||||||
|
--oper fight_V2 : V2 = notYet "fight_V2" ;
|
||||||
|
--oper find_V2 : V2 = notYet "find_V2" ;
|
||||||
|
--oper fingernail_N : N = notYet "fingernail_N" ;
|
||||||
|
--oper fire_N : N = notYet "fire_N" ;
|
||||||
|
--oper fish_N : N = notYet "fish_N" ;
|
||||||
|
--oper float_V : V = notYet "float_V" ;
|
||||||
|
--oper floor_N : N = notYet "floor_N" ;
|
||||||
|
--oper flow_V : V = notYet "flow_V" ;
|
||||||
|
--oper flower_N : N = notYet "flower_N" ;
|
||||||
|
--oper fly_V : V = notYet "fly_V" ;
|
||||||
|
--oper fog_N : N = notYet "fog_N" ;
|
||||||
|
--oper foot_N : N = notYet "foot_N" ;
|
||||||
|
--oper for_Prep : Prep = notYet "for_Prep" ;
|
||||||
|
--oper forest_N : N = notYet "forest_N" ;
|
||||||
|
--oper forget_V2 : V2 = notYet "forget_V2" ;
|
||||||
|
--oper freeze_V : V = notYet "freeze_V" ;
|
||||||
|
--oper fridge_N : N = notYet "fridge_N" ;
|
||||||
|
--oper friend_N : N = notYet "friend_N" ;
|
||||||
|
--oper from_Prep : Prep = notYet "from_Prep" ;
|
||||||
|
--oper fruit_N : N = notYet "fruit_N" ;
|
||||||
|
--oper full_A : A = notYet "full_A" ;
|
||||||
|
--oper fun_AV : A = notYet "fun_AV" ;
|
||||||
|
--oper garden_N : N = notYet "garden_N" ;
|
||||||
|
--oper girl_N : N = notYet "girl_N" ;
|
||||||
|
--oper glove_N : N = notYet "glove_N" ;
|
||||||
|
--oper gold_N : N = notYet "gold_N" ;
|
||||||
|
--oper good_A : A = notYet "good_A" ;
|
||||||
|
--oper grammar_N : N = notYet "grammar_N" ;
|
||||||
|
--oper grass_N : N = notYet "grass_N" ;
|
||||||
|
--oper guts_N : N = notYet "guts_N" ;
|
||||||
|
--oper hair_N : N = notYet "hair_N" ;
|
||||||
|
--oper hand_N : N = notYet "hand_N" ;
|
||||||
|
--oper harbour_N : N = notYet "harbour_N" ;
|
||||||
|
--oper has_age_VP : Card -> VP = notYet "has_age_VP" ;
|
||||||
|
--oper hat_N : N = notYet "hat_N" ;
|
||||||
|
--oper hate_V2 : V2 = notYet "hate_V2" ;
|
||||||
|
--oper have_V2 : V2 = notYet "have_V2" ;
|
||||||
|
--oper have_name_Cl : NP -> NP -> Cl = notYet "have_name_Cl" ;
|
||||||
|
--oper head_N : N = notYet "head_N" ;
|
||||||
|
--oper hear_V2 : V2 = notYet "hear_V2" ;
|
||||||
|
--oper heart_N : N = notYet "heart_N" ;
|
||||||
|
--oper heavy_A : A = notYet "heavy_A" ;
|
||||||
|
--oper here7from_Adv : Adv = notYet "here7from_Adv" ;
|
||||||
|
--oper here7to_Adv : Adv = notYet "here7to_Adv" ;
|
||||||
|
--oper here_Adv : Adv = notYet "here_Adv" ;
|
||||||
|
--oper hill_N : N = notYet "hill_N" ;
|
||||||
|
--oper hold_V2 : V2 = notYet "hold_V2" ;
|
||||||
|
--oper hope_VS : VS = notYet "hope_VS" ;
|
||||||
|
--oper horn_N : N = notYet "horn_N" ;
|
||||||
|
--oper horse_N : N = notYet "horse_N" ;
|
||||||
|
--oper hot_A : A = notYet "hot_A" ;
|
||||||
|
--oper how8many_IDet : IDet = notYet "how8many_IDet" ;
|
||||||
|
--oper how8much_IAdv : IAdv = notYet "how8much_IAdv" ;
|
||||||
|
--oper how_IAdv : IAdv = notYet "how_IAdv" ;
|
||||||
|
--oper how_far_QCl : NP -> QCl = notYet "how_far_QCl" ;
|
||||||
|
--oper how_old_QCl : NP -> QCl = notYet "how_old_QCl" ;
|
||||||
|
--oper hungry_VP : VP = notYet "hungry_VP" ;
|
||||||
|
--oper hunt_V2 : V2 = notYet "hunt_V2" ;
|
||||||
|
--oper husband_N : N = notYet "husband_N" ;
|
||||||
|
--oper ice_N : N = notYet "ice_N" ;
|
||||||
|
--oper if_then_Conj : Conj = notYet "if_then_Conj" ;
|
||||||
|
--oper ill_VP : VP = notYet "ill_VP" ;
|
||||||
|
--oper important_A : A = notYet "important_A" ;
|
||||||
|
--oper in8front_Prep : Prep = notYet "in8front_Prep" ;
|
||||||
|
--oper industry_N : N = notYet "industry_N" ;
|
||||||
|
--oper iron_N : N = notYet "iron_N" ;
|
||||||
|
--oper is_right_VP : VP = notYet "is_right_VP" ;
|
||||||
|
--oper is_wrong_VP : VP = notYet "is_wrong_VP" ;
|
||||||
|
--oper it_Pron : Pron = notYet "it_Pron" ;
|
||||||
|
--oper john_PN : PN = notYet "john_PN" ;
|
||||||
|
--oper jump_V : V = notYet "jump_V" ;
|
||||||
|
--oper kill_V2 : V2 = notYet "kill_V2" ;
|
||||||
|
--oper king_N : N = notYet "king_N" ;
|
||||||
|
--oper knee_N : N = notYet "knee_N" ;
|
||||||
|
--oper know_V2 : V2 = notYet "know_V2" ;
|
||||||
|
--oper know_VQ : VQ = notYet "know_VQ" ;
|
||||||
|
--oper know_VS : VS = notYet "know_VS" ;
|
||||||
|
--oper lake_N : N = notYet "lake_N" ;
|
||||||
|
--oper lamp_N : N = notYet "lamp_N" ;
|
||||||
|
--oper language_N : N = notYet "language_N" ;
|
||||||
|
--oper laugh_V : V = notYet "laugh_V" ;
|
||||||
|
--oper leaf_N : N = notYet "leaf_N" ;
|
||||||
|
--oper leather_N : N = notYet "leather_N" ;
|
||||||
|
--oper leave_V2 : V2 = notYet "leave_V2" ;
|
||||||
|
--oper left_Ord : Ord = notYet "left_Ord" ;
|
||||||
|
--oper leg_N : N = notYet "leg_N" ;
|
||||||
|
--oper less_CAdv : CAdv = notYet "less_CAdv" ;
|
||||||
|
--oper lie_V : V = notYet "lie_V" ;
|
||||||
|
--oper listen_V2 : V2 = notYet "listen_V2" ;
|
||||||
|
--oper live_V : V = notYet "live_V" ;
|
||||||
|
--oper liver_N : N = notYet "liver_N" ;
|
||||||
|
--oper lose_V2 : V2 = notYet "lose_V2" ;
|
||||||
|
--oper louse_N : N = notYet "louse_N" ;
|
||||||
|
--oper love_N : N = notYet "love_N" ;
|
||||||
|
--oper many_Det : Det = notYet "many_Det" ;
|
||||||
|
--oper married_A2 : A2 = notYet "married_A2" ;
|
||||||
|
--oper married_Cl : NP -> NP -> Cl = notYet "married_Cl" ;
|
||||||
|
--oper meat_N : N = notYet "meat_N" ;
|
||||||
|
--oper moon_N : N = notYet "moon_N" ;
|
||||||
|
--oper more_CAdv : CAdv = notYet "more_CAdv" ;
|
||||||
|
--oper most_Predet : Predet = notYet "most_Predet" ;
|
||||||
|
--oper mother_N2 : N2 = notYet "mother_N2" ;
|
||||||
|
--oper mountain_N : N = notYet "mountain_N" ;
|
||||||
|
--oper mouth_N : N = notYet "mouth_N" ;
|
||||||
|
--oper much_Det : Det = notYet "much_Det" ;
|
||||||
|
--oper music_N : N = notYet "music_N" ;
|
||||||
|
--oper n_unit_CN : Card -> CN -> CN -> CN = notYet "n_unit_CN" ;
|
||||||
|
--oper n_units_AP : Card -> CN -> A -> AP = notYet "n_units_AP" ;
|
||||||
|
--oper n_units_of_NP : Card -> CN -> NP -> NP = notYet "n_units_of_NP" ;
|
||||||
|
--oper name_N : N = notYet "name_N" ;
|
||||||
|
--oper narrow_A : A = notYet "narrow_A" ;
|
||||||
|
--oper nd : Digit -> Dig = notYet "nd" ;
|
||||||
|
--oper nd10 : Sub10 -> Digits = notYet "nd10" ;
|
||||||
|
--oper nd100 : Sub100 -> Digits = notYet "nd100" ;
|
||||||
|
--oper nd1000 : Sub1000 -> Digits = notYet "nd1000" ;
|
||||||
|
--oper nd1000000 : Sub1000000 -> Digits = notYet "nd1000000" ;
|
||||||
|
--oper near_A : A = notYet "near_A" ;
|
||||||
|
--oper neck_N : N = notYet "neck_N" ;
|
||||||
|
--oper new_A : A = notYet "new_A" ;
|
||||||
|
--oper newspaper_N : N = notYet "newspaper_N" ;
|
||||||
|
--oper night_N : N = notYet "night_N" ;
|
||||||
|
--oper no_Quant : Quant = notYet "no_Quant" ;
|
||||||
|
--oper no_Utt : Utt = notYet "no_Utt" ;
|
||||||
|
--oper nobody_NP : NP = notYet "nobody_NP" ;
|
||||||
|
--oper nose_N : N = notYet "nose_N" ;
|
||||||
|
--oper not_Predet : Predet = notYet "not_Predet" ;
|
||||||
|
--oper nothing_NP : NP = notYet "nothing_NP" ;
|
||||||
|
--oper num2digits : Numeral -> Digits = notYet "num2digits" ;
|
||||||
|
--oper number_N : N = notYet "number_N" ;
|
||||||
|
--oper oil_N : N = notYet "oil_N" ;
|
||||||
|
--oper on_Prep : Prep = notYet "on_Prep" ;
|
||||||
|
--oper only_Predet : Predet = notYet "only_Predet" ;
|
||||||
|
--oper open_V2 : V2 = notYet "open_V2" ;
|
||||||
|
--oper or_Conj : Conj = notYet "or_Conj" ;
|
||||||
|
--oper otherwise_PConj : PConj = notYet "otherwise_PConj" ;
|
||||||
|
--oper paint_V2A : V2A = notYet "paint_V2A" ;
|
||||||
|
--oper paper_N : N = notYet "paper_N" ;
|
||||||
|
--oper paris_PN : PN = notYet "paris_PN" ;
|
||||||
|
--oper part_Prep : Prep = notYet "part_Prep" ;
|
||||||
|
--oper peace_N : N = notYet "peace_N" ;
|
||||||
|
--oper pen_N : N = notYet "pen_N" ;
|
||||||
|
--oper planet_N : N = notYet "planet_N" ;
|
||||||
|
--oper plastic_N : N = notYet "plastic_N" ;
|
||||||
|
--oper play_V : V = notYet "play_V" ;
|
||||||
|
--oper play_V2 : V2 = notYet "play_V2" ;
|
||||||
|
--oper please_Voc : Voc = notYet "please_Voc" ;
|
||||||
|
--oper policeman_N : N = notYet "policeman_N" ;
|
||||||
|
--oper priest_N : N = notYet "priest_N" ;
|
||||||
|
--oper probable_AS : A = notYet "probable_AS" ;
|
||||||
|
--oper pull_V2 : V2 = notYet "pull_V2" ;
|
||||||
|
--oper push_V2 : V2 = notYet "push_V2" ;
|
||||||
|
--oper put_V2 : V2 = notYet "put_V2" ;
|
||||||
|
--oper queen_N : N = notYet "queen_N" ;
|
||||||
|
--oper question_N : N = notYet "question_N" ;
|
||||||
|
--oper quite_Adv : AdA = notYet "quite_Adv" ;
|
||||||
|
--oper radio_N : N = notYet "radio_N" ;
|
||||||
|
--oper ready_A : A = notYet "ready_A" ;
|
||||||
|
--oper ready_VP : VP = notYet "ready_VP" ;
|
||||||
|
--oper reason_N : N = notYet "reason_N" ;
|
||||||
|
--oper red_A : A = notYet "red_A" ;
|
||||||
|
--oper religion_N : N = notYet "religion_N" ;
|
||||||
|
--oper restaurant_N : N = notYet "restaurant_N" ;
|
||||||
|
--oper right_Ord : Ord = notYet "right_Ord" ;
|
||||||
|
--oper river_N : N = notYet "river_N" ;
|
||||||
|
--oper road_N : N = notYet "road_N" ;
|
||||||
|
--oper rock_N : N = notYet "rock_N" ;
|
||||||
|
--oper roof_N : N = notYet "roof_N" ;
|
||||||
|
--oper root_N : N = notYet "root_N" ;
|
||||||
|
--oper rope_N : N = notYet "rope_N" ;
|
||||||
|
--oper rotten_A : A = notYet "rotten_A" ;
|
||||||
|
--oper round_A : A = notYet "round_A" ;
|
||||||
|
--oper rub_V2 : V2 = notYet "rub_V2" ;
|
||||||
|
--oper rubber_N : N = notYet "rubber_N" ;
|
||||||
|
--oper rule_N : N = notYet "rule_N" ;
|
||||||
|
--oper run_V : V = notYet "run_V" ;
|
||||||
|
--oper salt_N : N = notYet "salt_N" ;
|
||||||
|
--oper sand_N : N = notYet "sand_N" ;
|
||||||
|
--oper say_VS : VS = notYet "say_VS" ;
|
||||||
|
--oper scared_VP : VP = notYet "scared_VP" ;
|
||||||
|
--oper scratch_V2 : V2 = notYet "scratch_V2" ;
|
||||||
|
--oper sea_N : N = notYet "sea_N" ;
|
||||||
|
--oper see_V2 : V2 = notYet "see_V2" ;
|
||||||
|
--oper seed_N : N = notYet "seed_N" ;
|
||||||
|
--oper seek_V2 : V2 = notYet "seek_V2" ;
|
||||||
|
--oper send_V3 : V3 = notYet "send_V3" ;
|
||||||
|
--oper sew_V : V = notYet "sew_V" ;
|
||||||
|
--oper sharp_A : A = notYet "sharp_A" ;
|
||||||
|
--oper sheep_N : N = notYet "sheep_N" ;
|
||||||
|
--oper ship_N : N = notYet "ship_N" ;
|
||||||
|
--oper shirt_N : N = notYet "shirt_N" ;
|
||||||
|
--oper shoe_N : N = notYet "shoe_N" ;
|
||||||
|
--oper shop_N : N = notYet "shop_N" ;
|
||||||
|
--oper short_A : A = notYet "short_A" ;
|
||||||
|
--oper silver_N : N = notYet "silver_N" ;
|
||||||
|
--oper sing_V : V = notYet "sing_V" ;
|
||||||
|
--oper sister_N : N = notYet "sister_N" ;
|
||||||
|
--oper sit_V : V = notYet "sit_V" ;
|
||||||
|
--oper skin_N : N = notYet "skin_N" ;
|
||||||
|
--oper sky_N : N = notYet "sky_N" ;
|
||||||
|
--oper sleep_V : V = notYet "sleep_V" ;
|
||||||
|
--oper smell_V : V = notYet "smell_V" ;
|
||||||
|
--oper smoke_N : N = notYet "smoke_N" ;
|
||||||
|
--oper smooth_A : A = notYet "smooth_A" ;
|
||||||
|
--oper snake_N : N = notYet "snake_N" ;
|
||||||
|
--oper snow_N : N = notYet "snow_N" ;
|
||||||
|
--oper so_AdA : AdA = notYet "so_AdA" ;
|
||||||
|
--oper sock_N : N = notYet "sock_N" ;
|
||||||
|
--oper somePl_Det : Det = notYet "somePl_Det" ;
|
||||||
|
--oper someSg_Det : Det = notYet "someSg_Det" ;
|
||||||
|
--oper somebody_NP : NP = notYet "somebody_NP" ;
|
||||||
|
--oper something_NP : NP = notYet "something_NP" ;
|
||||||
|
--oper somewhere_Adv : Adv = notYet "somewhere_Adv" ;
|
||||||
|
--oper song_N : N = notYet "song_N" ;
|
||||||
|
--oper speak_V2 : V2 = notYet "speak_V2" ;
|
||||||
|
--oper spit_V : V = notYet "spit_V" ;
|
||||||
|
--oper split_V2 : V2 = notYet "split_V2" ;
|
||||||
|
--oper squeeze_V2 : V2 = notYet "squeeze_V2" ;
|
||||||
|
--oper stab_V2 : V2 = notYet "stab_V2" ;
|
||||||
|
--oper stand_V : V = notYet "stand_V" ;
|
||||||
|
--oper star_N : N = notYet "star_N" ;
|
||||||
|
--oper steel_N : N = notYet "steel_N" ;
|
||||||
|
--oper stick_N : N = notYet "stick_N" ;
|
||||||
|
--oper stone_N : N = notYet "stone_N" ;
|
||||||
|
--oper stop_V : V = notYet "stop_V" ;
|
||||||
|
--oper stove_N : N = notYet "stove_N" ;
|
||||||
|
--oper straight_A : A = notYet "straight_A" ;
|
||||||
|
--oper student_N : N = notYet "student_N" ;
|
||||||
|
--oper stupid_A : A = notYet "stupid_A" ;
|
||||||
|
--oper suck_V2 : V2 = notYet "suck_V2" ;
|
||||||
|
--oper sun_N : N = notYet "sun_N" ;
|
||||||
|
--oper swell_V : V = notYet "swell_V" ;
|
||||||
|
--oper swim_V : V = notYet "swim_V" ;
|
||||||
|
--oper switch8off_V2 : V2 = notYet "switch8off_V2" ;
|
||||||
|
--oper switch8on_V2 : V2 = notYet "switch8on_V2" ;
|
||||||
|
--oper table_N : N = notYet "table_N" ;
|
||||||
|
--oper tail_N : N = notYet "tail_N" ;
|
||||||
|
--oper talk_V3 : V3 = notYet "talk_V3" ;
|
||||||
|
--oper teacher_N : N = notYet "teacher_N" ;
|
||||||
|
--oper television_N : N = notYet "television_N" ;
|
||||||
|
--oper that_Subj : Subj = notYet "that_Subj" ;
|
||||||
|
--oper there7from_Adv : Adv = notYet "there7from_Adv" ;
|
||||||
|
--oper there7to_Adv : Adv = notYet "there7to_Adv" ;
|
||||||
|
--oper there_Adv : Adv = notYet "there_Adv" ;
|
||||||
|
--oper therefore_PConj : PConj = notYet "therefore_PConj" ;
|
||||||
|
--oper thick_A : A = notYet "thick_A" ;
|
||||||
|
--oper thin_A : A = notYet "thin_A" ;
|
||||||
|
--oper think_V : V = notYet "think_V" ;
|
||||||
|
--oper thirsty_VP : VP = notYet "thirsty_VP" ;
|
||||||
|
--oper through_Prep : Prep = notYet "through_Prep" ;
|
||||||
|
--oper throw_V2 : V2 = notYet "throw_V2" ;
|
||||||
|
--oper tie_V2 : V2 = notYet "tie_V2" ;
|
||||||
|
--oper tired_VP : VP = notYet "tired_VP" ;
|
||||||
|
--oper today_Adv : Adv = notYet "today_Adv" ;
|
||||||
|
--oper tongue_N : N = notYet "tongue_N" ;
|
||||||
|
--oper too_AdA : AdA = notYet "too_AdA" ;
|
||||||
|
--oper tooth_N : N = notYet "tooth_N" ;
|
||||||
|
--oper train_N : N = notYet "train_N" ;
|
||||||
|
--oper travel_V : V = notYet "travel_V" ;
|
||||||
|
--oper tree_N : N = notYet "tree_N" ;
|
||||||
|
--oper turn_V : V = notYet "turn_V" ;
|
||||||
|
--oper uncertain_A : A = notYet "uncertain_A" ;
|
||||||
|
--oper under_Prep : Prep = notYet "under_Prep" ;
|
||||||
|
--oper understand_V2 : V2 = notYet "understand_V2" ;
|
||||||
|
--oper university_N : N = notYet "university_N" ;
|
||||||
|
--oper very_AdA : AdA = notYet "very_AdA" ;
|
||||||
|
--oper village_N : N = notYet "village_N" ;
|
||||||
|
--oper vomit_V : V = notYet "vomit_V" ;
|
||||||
|
--oper wait_V2 : V2 = notYet "wait_V2" ;
|
||||||
|
--oper war_N : N = notYet "war_N" ;
|
||||||
|
--oper warm_A : A = notYet "warm_A" ;
|
||||||
|
--oper wash_V2 : V2 = notYet "wash_V2" ;
|
||||||
|
--oper watch_V2 : V2 = notYet "watch_V2" ;
|
||||||
|
--oper water_N : N = notYet "water_N" ;
|
||||||
|
--oper weather_adjCl : AP -> Cl = notYet "weather_adjCl" ;
|
||||||
|
--oper wet_A : A = notYet "wet_A" ;
|
||||||
|
--oper whatPl_IP : IP = notYet "whatPl_IP" ;
|
||||||
|
--oper whatSg_IP : IP = notYet "whatSg_IP" ;
|
||||||
|
--oper what_name_QCl : NP -> QCl = notYet "what_name_QCl" ;
|
||||||
|
--oper when_IAdv : IAdv = notYet "when_IAdv" ;
|
||||||
|
--oper where_IAdv : IAdv = notYet "where_IAdv" ;
|
||||||
|
--oper which_IQuant : IQuant = notYet "which_IQuant" ;
|
||||||
|
--oper white_A : A = notYet "white_A" ;
|
||||||
|
--oper whoPl_IP : IP = notYet "whoPl_IP" ;
|
||||||
|
--oper whoSg_IP : IP = notYet "whoSg_IP" ;
|
||||||
|
--oper why_IAdv : IAdv = notYet "why_IAdv" ;
|
||||||
|
--oper wide_A : A = notYet "wide_A" ;
|
||||||
|
--oper wife_N : N = notYet "wife_N" ;
|
||||||
|
--oper win_V2 : V2 = notYet "win_V2" ;
|
||||||
|
--oper wind_N : N = notYet "wind_N" ;
|
||||||
|
--oper window_N : N = notYet "window_N" ;
|
||||||
|
--oper wine_N : N = notYet "wine_N" ;
|
||||||
|
--oper wing_N : N = notYet "wing_N" ;
|
||||||
|
--oper wipe_V2 : V2 = notYet "wipe_V2" ;
|
||||||
|
--oper without_Prep : Prep = notYet "without_Prep" ;
|
||||||
|
--oper wonder_VQ : VQ = notYet "wonder_VQ" ;
|
||||||
|
--oper wood_N : N = notYet "wood_N" ;
|
||||||
|
--oper worm_N : N = notYet "worm_N" ;
|
||||||
|
--oper write_V2 : V2 = notYet "write_V2" ;
|
||||||
|
--oper year_N : N = notYet "year_N" ;
|
||||||
|
--oper yellow_A : A = notYet "yellow_A" ;
|
||||||
|
--oper yes_Utt : Utt = notYet "yes_Utt" ;
|
||||||
|
--oper youPl_Pron : Pron = notYet "youPl_Pron" ;
|
||||||
|
--oper youPol_Pron : Pron = notYet "youPol_Pron" ;
|
||||||
|
--oper youSg_Pron : Pron = notYet "youSg_Pron" ;
|
||||||
|
--}
|
||||||
|
}
|
||||||
237
src/tamil/NounTam.gf
Normal file
237
src/tamil/NounTam.gf
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
concrete NounTam of Noun = CatTam ** open ResTam, Prelude in {
|
||||||
|
|
||||||
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
|
--2 Noun phrases
|
||||||
|
|
||||||
|
-- : Det -> CN -> NP
|
||||||
|
DetCN det cn = {s = det.s ++ cn.s ! Sg ! Nom} ;
|
||||||
|
|
||||||
|
-- -- : PN -> NP ;
|
||||||
|
-- UsePN pn = MassNP (UseN pn) ;
|
||||||
|
|
||||||
|
-- -- : Pron -> NP ;
|
||||||
|
-- UsePron pron = pron ** {
|
||||||
|
-- s = \\_ => pron.s ;
|
||||||
|
-- a = IsPron pron.p ;
|
||||||
|
-- };
|
||||||
|
|
||||||
|
-- -- : Predet -> NP -> NP ; -- only the man
|
||||||
|
-- -- PredetNP predet np =
|
||||||
|
|
||||||
|
-- A noun phrase can also be postmodified by the past participle of a
|
||||||
|
-- verb, by an adverb, or by a relative clause
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : NP -> V2 -> NP ; -- the man seen
|
||||||
|
-- -- PPartNP np v2 = np ** {
|
||||||
|
-- -- s = \\c => v2.s ! ??? ++ np.s ! c } ; ----
|
||||||
|
|
||||||
|
-- -- : NP -> Adv -> NP ; -- Paris today ; boys, such as ..
|
||||||
|
-- AdvNP,ExtAdvNP = \np,adv -> np ** {
|
||||||
|
-- s = \\pos => np.s ! pos ++ adv.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : NP -> RS -> NP ; -- Paris, which is here
|
||||||
|
-- RelNP np rs = np ** {
|
||||||
|
-- s = \\poss => np.s ! poss ++ rs.s ! agr2p np.a
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- Determiners can form noun phrases directly.
|
||||||
|
|
||||||
|
-- -- : Det -> NP ;
|
||||||
|
-- DetNP det = emptyNP ** {
|
||||||
|
-- s = \\_ => linDet det ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- MassNP : CN -> NP ;
|
||||||
|
-- MassNP cn = emptyNP ** {
|
||||||
|
-- s = \\poss => cn.s ! NF Sg poss ++ cn.heavyMod
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--2 Determiners
|
||||||
|
|
||||||
|
-- The determiner has a fine-grained structure, in which a 'nucleus'
|
||||||
|
-- quantifier and an optional numeral can be discerned.
|
||||||
|
|
||||||
|
-- -- : Quant -> Num -> Det ;
|
||||||
|
DetQuant quant num = quant ** {
|
||||||
|
pr = num.s ; -- if it's not a number or digit, num.s is empty
|
||||||
|
s = quant.s ;
|
||||||
|
n = num.n ;
|
||||||
|
count = "ke" ++ BIND ++ num.s ++ BIND ++ "-" ++ BIND ++ num.s;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- -- : Quant -> Num -> Ord -> Det ;
|
||||||
|
-- DetQuantOrd quant num ord = quant ** {
|
||||||
|
-- pr = num.s ;
|
||||||
|
-- n = num.n ;
|
||||||
|
-- s = ord.s ++ quant.s ;
|
||||||
|
-- count = "" ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- Whether the resulting determiner is singular or plural depends on the
|
||||||
|
-- cardinal.
|
||||||
|
|
||||||
|
-- All parts of the determiner can be empty, except $Quant$, which is
|
||||||
|
-- the "kernel" of a determiner. It is, however, the $Num$ that determines
|
||||||
|
-- the inherent number.
|
||||||
|
|
||||||
|
NumSg = baseNum ;
|
||||||
|
-- NumPl = baseNum ** {n = NoNum Pl} ;
|
||||||
|
|
||||||
|
-- -- : Card -> Num ;
|
||||||
|
-- NumCard card = card ** {
|
||||||
|
-- n = IsNumber -- for the purposes of modifying a noun, this is singular
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Digits -> Card ;
|
||||||
|
-- NumDigits dig = {
|
||||||
|
-- s = dig.s ! NCard
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Numeral -> Card ;
|
||||||
|
-- NumNumeral num = num ;
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- -- : AdN -> Card -> Card ;
|
||||||
|
-- AdNum adn card = card ** { s = adn.s ++ card.s } ;
|
||||||
|
|
||||||
|
-- -- : Digits -> Ord ;
|
||||||
|
-- OrdDigits digs = digs ** { s = digs.s ! NOrd } ;
|
||||||
|
---}
|
||||||
|
-- -- : Numeral -> Ord ;
|
||||||
|
-- OrdNumeral num = {
|
||||||
|
-- s = num.ord
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : A -> Ord ;
|
||||||
|
-- OrdSuperl a = {
|
||||||
|
-- s = "ter" ++ BIND ++ a.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- One can combine a numeral and a superlative.
|
||||||
|
|
||||||
|
-- -- : Numeral -> A -> Ord ; -- third largest
|
||||||
|
-- OrdNumeralSuperl num a = {
|
||||||
|
-- s = num.ord ++ "ter" ++ BIND ++ a.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Quant
|
||||||
|
-- DefArt = mkQuant [] ;
|
||||||
|
|
||||||
|
-- -- : Quant
|
||||||
|
-- IndefArt = mkQuant [] ;
|
||||||
|
|
||||||
|
-- -- : Pron -> Quant
|
||||||
|
-- PossPron pron = mkQuant pron.s ** {
|
||||||
|
-- poss = Bare ; -- this becomes "kucing dia". for "kucingnya", use PossNP.
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Common nouns
|
||||||
|
|
||||||
|
-- -- : N -> CN
|
||||||
|
-- -- : N2 -> CN ;
|
||||||
|
UseN = ResTam.useN ;
|
||||||
|
-- UseN2 = ResTam.useN ;
|
||||||
|
|
||||||
|
-- -- : N2 -> NP -> CN ;
|
||||||
|
-- ComplN2 n2 np = useN n2 ** {
|
||||||
|
-- s = \\nf =>
|
||||||
|
-- case <n2.c2.prepType, np.a, nf> of {
|
||||||
|
-- <DirObj, IsPron p, NF num _>
|
||||||
|
-- => n2.s ! NF num (Poss p) ++ np.empty ; -- DirObj is reused here to mean possession
|
||||||
|
-- _ => n2.s ! nf ++ applyPrep n2.c2 np
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
||||||
|
-- -- ComplN3 n3 np =
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : N3 -> N2 ; -- distance (from this city)
|
||||||
|
-- -- Use2N3 n3 = lin N2 n3 ** { c2 = n3.c3 } ;
|
||||||
|
|
||||||
|
-- -- : N3 -> N2 ; -- distance (to Paris)
|
||||||
|
-- -- Use3N3 n3 = lin N2 n3 ;
|
||||||
|
-- -- : AP -> CN -> CN
|
||||||
|
-- AdjCN ap cn = cn ** {
|
||||||
|
-- s = \\nf => cn.s ! nf ++ ap.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : CN -> RS -> CN ;
|
||||||
|
-- RelCN cn rs = cn ** {
|
||||||
|
-- heavyMod = cn.heavyMod ++ rs.s ! P3
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : CN -> Adv -> CN ;
|
||||||
|
-- AdvCN cn adv = cn ** {
|
||||||
|
-- heavyMod = cn.heavyMod ++ adv.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- -- : CN -> Adv -> CN ;
|
||||||
|
-- AdvCN cn adv = cn ** { } ;
|
||||||
|
|
||||||
|
-- Nouns can also be modified by embedded sentences and questions.
|
||||||
|
-- For some nouns this makes little sense, but we leave this for applications
|
||||||
|
-- to decide. Sentential complements are defined in VerbTam.
|
||||||
|
|
||||||
|
-- -- : CN -> SC -> CN ; -- question where she sleeps
|
||||||
|
-- SentCN cn sc = cn ** { } ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Apposition
|
||||||
|
|
||||||
|
-- This is certainly overgenerating.
|
||||||
|
|
||||||
|
-- -- : CN -> NP -> CN ; -- city Paris (, numbers x and y)
|
||||||
|
-- ApposCN cn np = cn ** { s = } ;
|
||||||
|
---}
|
||||||
|
|
||||||
|
--2 Possessive and partitive constructs
|
||||||
|
|
||||||
|
-- -- : PossNP : CN -> NP -> CN ;
|
||||||
|
-- -- this produces "bukunya".
|
||||||
|
-- PossNP cn np = cn ** {
|
||||||
|
-- s = \\nf => case <np.a, nf> of {
|
||||||
|
-- <IsPron p, NF num _>
|
||||||
|
-- => cn.s ! NF num (Poss p) ++ np.empty ;
|
||||||
|
-- _ => cn.s ! nf ++ np.s ! Bare
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : Det -> NP -> NP ;
|
||||||
|
-- CountNP det np = np **
|
||||||
|
-- {
|
||||||
|
-- s = \\pos => det.count ++ np.s ! pos;
|
||||||
|
-- } ; -- Nonsense for DefArt or IndefArt
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
||||||
|
-- -- PartNP cn np = cn ** {
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
--{-
|
||||||
|
|
||||||
|
-- This is different from the partitive, as shown by many languages.
|
||||||
|
|
||||||
|
-- -- : Det -> NP -> NP ;
|
||||||
|
-- CountNP det np = np **
|
||||||
|
-- { } ; -- Nonsense for DefArt or IndefArt
|
||||||
|
|
||||||
|
--3 Conjoinable determiners and ones with adjectives
|
||||||
|
|
||||||
|
-- -- : DAP -> AP -> DAP ; -- the large (one)
|
||||||
|
-- AdjDAP dap ap = dap ** { } ;
|
||||||
|
|
||||||
|
-- -- : Det -> DAP ; -- this (or that)
|
||||||
|
-- DetDAP det = det ;
|
||||||
|
---}
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
162
src/tamil/NumeralTam.gf
Normal file
162
src/tamil/NumeralTam.gf
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
-- David Wahlstedt 2002 (cardinal numbers)
|
||||||
|
-- Inari Listenmaa 2020 (ordinals + cosmetic changes)
|
||||||
|
concrete NumeralTam of Numeral = CatTam [Numeral,Digits] **
|
||||||
|
open Prelude, ResTam in {
|
||||||
|
|
||||||
|
-- lincat
|
||||||
|
-- Digit = OrdNum ; -- 2..9
|
||||||
|
-- Sub10, -- 1..9
|
||||||
|
-- Sub100, -- 1..99
|
||||||
|
-- Sub1000 = LinNumber ; -- 1..999
|
||||||
|
-- Sub1000000 = OrdNum ; -- 1..999999
|
||||||
|
|
||||||
|
-- oper
|
||||||
|
-- LinNumber : Type = {
|
||||||
|
-- s : DForm => Str ;
|
||||||
|
-- n : Number ; -- This is an internal number that tells which form of digits to choose. When quantifying a noun, the noun is in singular.
|
||||||
|
-- ord : Str ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- OrdNum : Type = CardOrdNum ** {n : Number} ;
|
||||||
|
|
||||||
|
-- lin
|
||||||
|
-- -- : Sub1000000 -> Numeral ; -- 123456 [coercion to top category]
|
||||||
|
-- num x = x ;
|
||||||
|
|
||||||
|
-- -- : Digit ;
|
||||||
|
-- n2 = mkDigit "dua" ;
|
||||||
|
-- n3 = mkDigit "tiga" ;
|
||||||
|
-- n4 = mkDigit "empat" ;
|
||||||
|
-- n5 = mkDigit "lima" ;
|
||||||
|
-- n6 = mkDigit "enam" ;
|
||||||
|
-- n7 = mkDigit "tujuh" ;
|
||||||
|
-- n8 = mkDigit "lapan" ; -- "delapan" for Indonesian
|
||||||
|
-- n9 = mkDigit "sembilan" ;
|
||||||
|
|
||||||
|
-- -- : Sub10 ; -- 1
|
||||||
|
-- pot01 = {
|
||||||
|
-- s = table {
|
||||||
|
-- Attrib => [] ;
|
||||||
|
-- Indep => "satu" } ;
|
||||||
|
-- n = Sg ;
|
||||||
|
-- ord = "pertama"
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Digit -> Sub10 ; -- d * 1
|
||||||
|
-- pot0 d = d ** {s = \\_ => d.s} ;
|
||||||
|
|
||||||
|
-- -- : Sub100 ; -- 10
|
||||||
|
-- pot110 = mkNum "sepuluh" ;
|
||||||
|
|
||||||
|
-- -- : Sub100 ; -- 11
|
||||||
|
-- pot111 = mkNum "sebelas" ;
|
||||||
|
|
||||||
|
-- -- : Digit -> Sub100 ; -- 10 + d
|
||||||
|
-- pot1to19 d = mkNum3 d "belas" [] ;
|
||||||
|
|
||||||
|
-- -- : Sub10 -> Sub100 ; -- coercion of 1..9
|
||||||
|
-- pot0as1 n = n ;
|
||||||
|
|
||||||
|
-- -- : Digit -> Sub100 ; -- d * 10
|
||||||
|
-- pot1 d = mkNum3 d "puluh" [] ;
|
||||||
|
|
||||||
|
-- -- : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
|
||||||
|
-- pot1plus d e = -- 21 = dua puluh satu, so we choose Indep form of 1.
|
||||||
|
-- mkNum3 d "puluh" (e.s ! Indep) ;
|
||||||
|
|
||||||
|
-- -- : Sub100 -> Sub1000 ; -- coercion of 1..99
|
||||||
|
-- pot1as2 n = n ;
|
||||||
|
|
||||||
|
-- -- : Sub10 -> Sub1000 ; -- m * 100
|
||||||
|
-- pot2 d = potNum d ratus [] ;
|
||||||
|
|
||||||
|
-- -- : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
|
||||||
|
-- pot2plus d e = potNum d ratus (e.s ! Indep) ;
|
||||||
|
|
||||||
|
-- -- : Sub1000 -> Sub1000000 ; -- coercion of 1..999
|
||||||
|
-- pot2as3 n = n ** {s = n.s ! Indep} ;
|
||||||
|
|
||||||
|
-- -- : Sub1000 -> Sub1000000 ; -- m * 1000
|
||||||
|
-- pot3 d = pot2as3 (potNum d ribu []) ;
|
||||||
|
|
||||||
|
-- -- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
|
||||||
|
-- pot3plus d e = pot2as3 (potNum d ribu (e.s ! Indep)) ;
|
||||||
|
|
||||||
|
--oper
|
||||||
|
-- ratus : Number*CardOrd => Str = table { -- 100
|
||||||
|
-- <Sg, NCard> => "seratus" ;
|
||||||
|
-- <Sg, NOrd> => "keseratus" ;
|
||||||
|
-- <Pl,_> => "ratus"
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- ribu : Number*CardOrd => Str = table { -- 1000
|
||||||
|
-- <Sg, NCard> => "seribu" ;
|
||||||
|
-- <Sg, NOrd> => "keseribu" ;
|
||||||
|
-- <Pl,_> => "ribu"
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- To make Sub* funs directly from a string.
|
||||||
|
-- -- ordnumeral from here
|
||||||
|
-- mkNum : Str -> LinNumber = \s -> {
|
||||||
|
-- n = Pl ;
|
||||||
|
-- s = \\_ => s ; -- Indep vs. Attrib only matters for number 1
|
||||||
|
-- ord = "ke" + s ; -- Works for all but number 1
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkDigit : Str -> OrdNum = \s -> mkNum s ** {s=s} ;
|
||||||
|
|
||||||
|
-- -- Only for Digit -> Sub*: we won't run into 1 here.
|
||||||
|
-- mkNum3 : (digit : OrdNum) -> (ten,unit : Str) -> LinNumber = \tiga,puluh,dua -> {
|
||||||
|
-- n = Pl ;
|
||||||
|
-- s = \\_ => tiga.s ++ puluh ++ dua ;
|
||||||
|
-- ord = tiga.ord ++ puluh ++ dua
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- The most general oper for making new numbers out of old ones.
|
||||||
|
-- potNum : LinNumber -> (Number*CardOrd => Str) -> Str -> LinNumber = \satu,ribuTbl,dua -> {
|
||||||
|
-- n = Pl ;
|
||||||
|
-- s = \\_ =>
|
||||||
|
-- satu.s ! Attrib ++ -- Attrib form is empty string in 1, and normal for others.
|
||||||
|
-- ribuTbl ! <satu.n, NCard> ++ dua ;
|
||||||
|
-- ord = case satu.n of {
|
||||||
|
-- Sg => satu.s ! Attrib ++ ribuTbl ! <Sg, NOrd> ++ dua ;
|
||||||
|
-- Pl => satu.ord ++ ribuTbl ! <Pl, NCard> ++ dua }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- Numerals as sequences of digits have a separate, simpler grammar
|
||||||
|
-- lincat
|
||||||
|
-- Dig = DigNum ; -- single digit 0..9
|
||||||
|
|
||||||
|
-- lin
|
||||||
|
-- -- : Dig -> Digits ; -- 8
|
||||||
|
-- IDig d = d ;
|
||||||
|
|
||||||
|
-- -- : Dig -> Digits -> Digits ; -- 876
|
||||||
|
-- IIDig d e = {
|
||||||
|
-- s = table {
|
||||||
|
-- NCard => glue (d.s ! NCard) (e.s ! NCard) ;
|
||||||
|
-- NOrd => glue (d.s ! NOrd) (e.s ! NCard)
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Dig ;
|
||||||
|
-- D_0 = mkDig "0" ;
|
||||||
|
-- D_1 = mkDig "1" ;
|
||||||
|
-- D_2 = mkDig "2" ;
|
||||||
|
-- D_3 = mkDig "3" ;
|
||||||
|
-- D_4 = mkDig "4" ;
|
||||||
|
-- D_5 = mkDig "5" ;
|
||||||
|
-- D_6 = mkDig "6" ;
|
||||||
|
-- D_7 = mkDig "7" ;
|
||||||
|
-- D_8 = mkDig "8" ;
|
||||||
|
-- D_9 = mkDig "9" ;
|
||||||
|
|
||||||
|
-- oper
|
||||||
|
-- mkDig : Str -> DigNum = \s -> {
|
||||||
|
-- s = table {
|
||||||
|
-- NCard => s ;
|
||||||
|
-- NOrd => "ke-" + s
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
--}
|
||||||
|
}
|
||||||
166
src/tamil/ParadigmsTam.gf
Normal file
166
src/tamil/ParadigmsTam.gf
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
resource ParadigmsTam = open CatTam, ResTam, ParamTam, NounTam, Prelude in {
|
||||||
|
|
||||||
|
--oper
|
||||||
|
|
||||||
|
--2 Parameters
|
||||||
|
--
|
||||||
|
-- To abstract over number, valency and (some) case names,
|
||||||
|
-- we define the following identifiers. The application programmer
|
||||||
|
-- should always use these constants instead of the constructors
|
||||||
|
-- defined in $ResSom$.
|
||||||
|
|
||||||
|
--noPrep : Prep = mkPrep "" ;
|
||||||
|
|
||||||
|
--2 Nouns
|
||||||
|
|
||||||
|
-- mkN : overload {
|
||||||
|
-- mkN : (noun : Str) -> N ; -- Predictable nouns
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkPN : overload {
|
||||||
|
-- mkPN : Str -> PN ; -- Proper nouns
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--2 Adjectives
|
||||||
|
|
||||||
|
-- mkA : overload {
|
||||||
|
-- mkA : (adj : Str) -> A ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkA2 : overload {
|
||||||
|
-- mkA2 : (adj : Str) -> Prep -> A2 ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--2 Verbs
|
||||||
|
|
||||||
|
-- -- Verbs
|
||||||
|
-- mkV : overload {
|
||||||
|
-- mkV : (root : Str) -> V ; -- Verb that takes meng as a active prefix
|
||||||
|
-- mkV : (root : Str) -> Prefix -> V -- Root and prefix
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- mkV2 : overload {
|
||||||
|
-- mkV2 : (root : Str) -> V2 ; -- The prefix is meng and no preposition
|
||||||
|
-- mkV2 : V -> Prep -> V2 ; -- V and Prep
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkV3 : overload {
|
||||||
|
-- mkV3 : V -> V3 ; -- No prepositions
|
||||||
|
-- mkV3 : V -> Prep -> Prep -> V3 ; -- Prepositions for direct and indirect objects given
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkVV : overload {
|
||||||
|
-- mkVV : Str -> VV ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- --
|
||||||
|
-- -- mkVA : Str -> VA
|
||||||
|
-- -- = \s -> lin VA (regV s) ;
|
||||||
|
-- -- mkVQ : Str -> VQ
|
||||||
|
-- -- = \s -> lin VQ (regV s) ;
|
||||||
|
-- mkVS : overload {
|
||||||
|
-- mkV : (root : Str) -> V ; -- Verb that takes meng as a active prefix
|
||||||
|
-- mkV : (root : Str) -> Prefix -> V -- Root and prefix
|
||||||
|
-- } ;
|
||||||
|
-- --
|
||||||
|
-- -- mkV2A : Str -> V2A
|
||||||
|
-- -- = \s -> lin V2A (regV s ** {c2 = noPrep}) ;
|
||||||
|
-- -- mkV2V : Str -> V2V
|
||||||
|
-- -- = \s -> lin V2V (regV s ** {c2 = noPrep}) ;
|
||||||
|
-- -- mkV2Q : Str -> V2Q
|
||||||
|
-- -- = \s -> lin V2Q (regV s ** {c2 = noPrep}) ;
|
||||||
|
|
||||||
|
-- -----
|
||||||
|
|
||||||
|
--2 Structural categories
|
||||||
|
|
||||||
|
-- -- mkPrep = overload {
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
-- -- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
|
||||||
|
-- -- lin Conj { s = s1 ; s2 = s2 } ;
|
||||||
|
|
||||||
|
-- -- mkSubj : Str -> Bool -> Subj = \s,b ->
|
||||||
|
-- -- lin Subj { } ;
|
||||||
|
|
||||||
|
-- mkAdv : Str -> Adv = \s -> lin Adv {s = s} ;
|
||||||
|
|
||||||
|
-- mkAdV : Str -> AdV = \s -> lin AdV {s = s} ;
|
||||||
|
|
||||||
|
-- mkAdA : Str -> AdA = \s -> lin AdA {s = s} ;
|
||||||
|
|
||||||
|
|
||||||
|
--.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
-- The definitions should not bother the user of the API. So they are
|
||||||
|
-- hidden from the document.
|
||||||
|
|
||||||
|
-- mkN = overload {
|
||||||
|
-- mkN : Str -> N = \s -> lin N (mkNoun s) ;
|
||||||
|
-- mkN : Str -> Animacy -> N = \s,a -> lin N (mkNoun s) ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- mkN2 = overload {
|
||||||
|
-- mkN2 : Str -> N2 = \s -> lin N2 (mkNoun s ** {c2 = dirPrep}) ;
|
||||||
|
-- mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = dirPrep}) ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkN3 = overload {
|
||||||
|
-- mkN3 : Str -> N3 = \s -> lin N3 (mkNoun s ** {c2,c3 = dirPrep}) ;
|
||||||
|
-- mkN3 : N -> N3 = \n -> lin N3 (n ** {c2,c3 = dirPrep}) ;
|
||||||
|
-- mkN3 : N -> Prep -> Prep -> N3 = \n,c2,c3 -> lin N3 (n ** {c2,c3 = dirPrep}) ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkPN = overload {
|
||||||
|
-- mkPN : Str -> PN = \s -> lin PN {s = \\_ => s} ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkA = overload {
|
||||||
|
-- mkA : (adj : Str) -> A = \s -> lin A (mkAdj s) ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkA2 = overload {
|
||||||
|
-- mkA2 : (adj : Str) -> A = \s -> lin A2 (mkAdj s) ;
|
||||||
|
-- mkA2 : A -> Prep -> A = \a,p -> lin A2 (a) ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkV = overload {
|
||||||
|
-- mkV : Str -> V = \v -> lin V (mkVerb v Ber) ;
|
||||||
|
-- mkV : Str -> Prefix -> V = \v,p -> lin V (mkVerb v p)
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- prefixV : V -> V = \v -> v ** {
|
||||||
|
-- s = table {
|
||||||
|
-- Root => v.s ! Active ;
|
||||||
|
-- x => v.s ! x -- TODO: how does it work with passives?
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkV2 = overload {
|
||||||
|
-- mkV2 : Str -> V2 = \v2 -> lin V2 (mkVerb2 (mkVerb v2 Meng) dirPrep) ;
|
||||||
|
-- mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (mkVerb2 v p)
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkV3 = overload {
|
||||||
|
-- mkV3 : V -> V3 = \v ->
|
||||||
|
-- lin V3 (mkVerb3 v dirPrep dirPrep) ;
|
||||||
|
-- mkV3 : V -> (p,q : Prep) -> V3 = \v,p,q ->
|
||||||
|
-- lin V3 (mkVerb3 v p q)
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkV4 = overload {
|
||||||
|
-- mkV4 : Str -> Str -> V2 = \v2,str ->
|
||||||
|
-- lin V2 (mkVerb4 (mkVerb v2 Meng) dirPrep str) ;
|
||||||
|
-- mkV4 : V -> Prep -> Str -> V2 = \v,p,str -> lin V2 (mkVerb4 v p str)
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkVV = overload {
|
||||||
|
-- mkVV : Str -> VV = \vv -> lin VV (ss vv)
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
135
src/tamil/ParamTam.gf
Normal file
135
src/tamil/ParamTam.gf
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
|
||||||
|
resource ParamTam = ParamX ** open Prelude in {
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Phonology
|
||||||
|
|
||||||
|
--oper
|
||||||
|
-- v : pattern Str = #("a"|"e"|"i"|"o"|"u") ;
|
||||||
|
|
||||||
|
-- diphthong : pattern Str = #("ai"|"au"|"oi") ;
|
||||||
|
|
||||||
|
-- c : pattern Str = #("m"|"n"|"ny"|"ng"
|
||||||
|
-- |"p"|"b"|"t"|"d"|"k"|"g"
|
||||||
|
-- |"s"|"z"|"c"|"j"|"sy"
|
||||||
|
-- |"f"|"v"|"kh"|"gh"|"h"
|
||||||
|
-- |"l"|"r"
|
||||||
|
-- |"w"|"y") ;
|
||||||
|
|
||||||
|
-- -- not sure if needed anywhere, this is just my standard helper function.
|
||||||
|
-- voiced : Str -> Str = \s -> case s of {
|
||||||
|
-- "k" => "g" ; "t" => "d" ; "p" => "b" ;
|
||||||
|
-- "s" => "z" ; "c" => "j" ; "kh" => "gh" ;
|
||||||
|
-- _ => s } ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Morphophonology
|
||||||
|
|
||||||
|
-- prefix : Prefix -> Str -> Str = \p -> case p of {
|
||||||
|
-- Meng => prefixMeng ;
|
||||||
|
-- Ber => prefixBer
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- prefixMeng : Str -> Str = \makan -> case makan of {
|
||||||
|
|
||||||
|
-- ? + ? + ? => "menge" + makan ;
|
||||||
|
|
||||||
|
-- (#v|"g"|"h") + _
|
||||||
|
-- => "meng" + makan ; -- prefix meng: e.g. meng+atur
|
||||||
|
-- "k" + enal
|
||||||
|
-- => "meng" + enal ; -- replace k with meng
|
||||||
|
|
||||||
|
-- "b" + _
|
||||||
|
-- => "mem" + makan ; -- prefix mem: e.g. mem+beli
|
||||||
|
-- ("p"|"f") + ikir
|
||||||
|
-- => "mem" + ikir ; -- replace p/f with mem
|
||||||
|
|
||||||
|
-- ("j"|"c"|"z"|"d") + _
|
||||||
|
-- => "men" + makan ; -- prefix men: e.g. men+jadi
|
||||||
|
-- "t" + ipu
|
||||||
|
-- => "men" + ipu ; -- replace t with men
|
||||||
|
|
||||||
|
-- "s" + alak
|
||||||
|
-- => "meny" + alak ; -- replace s with meny
|
||||||
|
|
||||||
|
-- ("r"|"l"|"w"|"y"|"m"|"n"|"ny"|"ng") + _
|
||||||
|
-- => "me" + makan ; -- prefix me
|
||||||
|
|
||||||
|
-- -- We can throw an error
|
||||||
|
-- -- _ => Predef.error "Not a valid verb root" ;
|
||||||
|
|
||||||
|
-- -- or we can let it pass with some default allomorph
|
||||||
|
-- _ => "meng" + makan
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- prefixBer : Str -> Str = \jalan -> case jalan of {
|
||||||
|
-- -- Exception
|
||||||
|
-- "ajar" => "belajar" ;
|
||||||
|
|
||||||
|
-- -- Drop the r
|
||||||
|
-- (#c + "er" + _ -- be+kerja
|
||||||
|
-- |"r" + _ ) -- be+rehat
|
||||||
|
-- => "be" + jalan ;
|
||||||
|
|
||||||
|
-- -- Default allomorph: ber
|
||||||
|
-- _ => "ber" + jalan
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Nouns
|
||||||
|
|
||||||
|
param
|
||||||
|
Case = Nom | Acc | Dat | Soc | Gen | Instr | Loc | Abl ;
|
||||||
|
-- Number = Already available from ParamX.gf under "common" folder
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Numerals
|
||||||
|
|
||||||
|
--param
|
||||||
|
-- DForm = Indep | Attrib ;
|
||||||
|
|
||||||
|
-- CardOrd = NOrd | NCard ;
|
||||||
|
|
||||||
|
NumType = NoNum Number | IsNumber ;
|
||||||
|
|
||||||
|
--oper
|
||||||
|
-- isNum : NumType -> Bool = \nt -> case nt of {
|
||||||
|
-- NoNum _ => False ;
|
||||||
|
-- _ => True
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- toNum : NumType -> Number = \nt -> case nt of {
|
||||||
|
-- NoNum n => n ;
|
||||||
|
-- _ => Sg
|
||||||
|
-- } ;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Adjectives
|
||||||
|
|
||||||
|
--param
|
||||||
|
-- AForm = TODOAdj ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Prepositions
|
||||||
|
--param
|
||||||
|
-- PrepType = DirObj | EmptyPrep | OtherPrep ;
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Adverbs
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Verbs
|
||||||
|
param
|
||||||
|
--Tense = Already available from ParamX.gf under "common" folder
|
||||||
|
Gender = Masc | Fem | Neu | Hon | Hum ; -- Male, Female, Neuter, Honorary, Humble
|
||||||
|
VForm = VF Person Number | VFP3 Number Gender ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Clauses
|
||||||
|
|
||||||
|
--param
|
||||||
|
|
||||||
|
-- ClType = Statement | PolarQuestion | WhQuestion | Subord ;
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
29
src/tamil/PhraseTam.gf
Normal file
29
src/tamil/PhraseTam.gf
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
concrete PhraseTam of Phrase = CatTam ** open Prelude, ResTam in {
|
||||||
|
|
||||||
|
-- lin
|
||||||
|
-- PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
|
-- UttS s = s ;
|
||||||
|
-- UttQS qs = qs ;
|
||||||
|
-- UttIAdv iadv = iadv ;
|
||||||
|
-- UttNP np = {s = np.s ! Bare} ;
|
||||||
|
-- UttIP ip = {s = ip.sp ! NF Sg Bare} ;
|
||||||
|
-- UttImpSg pol imp = { s = pol.s ++ imp.s ! Sg ! pol.p } ;
|
||||||
|
-- UttImpPol pol imp = {s = pol.s ++ imp.s ! Sg ! pol.p} ;
|
||||||
|
-- UttVP vp = {s = linVP vp} ;
|
||||||
|
-- UttAP ap = { s = ap.s } ;
|
||||||
|
--{-
|
||||||
|
-- UttImpPl pol imp =
|
||||||
|
-- UttAdv adv = {s = } ;
|
||||||
|
-- UttCN n = {s = } ;
|
||||||
|
-- UttCard n = {s = } ;
|
||||||
|
-- UttInterj i = i ;
|
||||||
|
---}
|
||||||
|
-- NoPConj = {s = []} ;
|
||||||
|
-- PConjConj conj = {s = conj.s1 ++ conj.s2 ! …} ;
|
||||||
|
|
||||||
|
-- NoVoc = {s = []} ;
|
||||||
|
-- VocNP np = { s = "," ++ np.s ! … } ; -}
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
152
src/tamil/QuestionTam.gf
Normal file
152
src/tamil/QuestionTam.gf
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
concrete QuestionTam of Question = CatTam ** open
|
||||||
|
Prelude, ResTam, ParadigmsTam, (VS=VerbTam), (NM=NounTam), (SS=StructuralTam) in {
|
||||||
|
|
||||||
|
-- A question can be formed from a clause ('yes-no question') or
|
||||||
|
-- with an interrogative.
|
||||||
|
|
||||||
|
-- Interrogative pronouns can be formed with interrogative
|
||||||
|
-- determiners, with or without a noun.
|
||||||
|
--lin
|
||||||
|
-- -- : IDet -> CN -> IP ; -- which five songs
|
||||||
|
-- IdetCN idet cn = NM.DetCN idet cn ** {
|
||||||
|
-- sp = \\nf => idet.sp ! nf ++ cn.s ! nf
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : IDet -> IP ; -- which five
|
||||||
|
-- IdetIP idet = NM.DetNP idet ** {sp = idet.sp};
|
||||||
|
|
||||||
|
-- -- : IQuant -> Num -> IDet ; -- which (five)
|
||||||
|
-- IdetQuant iquant num = iquant ** {
|
||||||
|
-- pr = num.s ++ case iquant.isPre of {True => iquant.s ; False => [] } ;
|
||||||
|
-- -- if isPre is True, then: "berapa kucing"
|
||||||
|
-- s = case iquant.isPre of { False => iquant.s ; True => [] };
|
||||||
|
-- -- if isPre is False, use s: "kucing berapa"
|
||||||
|
-- n = num.n ;
|
||||||
|
-- count = "" ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : IP -> ClSlash -> QCl ; -- whom does John love
|
||||||
|
-- QuestSlash ip cls = cls ** {
|
||||||
|
-- pred = \\vf,pol => cls.pred ! vf ! pol ++ ip.s ! Bare
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Subj -> Pred -> QCl ;
|
||||||
|
-- -- QuestCl cl = cl ** {
|
||||||
|
-- -- pred = \\vf,pol => cl.pred ! vf ! pol
|
||||||
|
-- -- };
|
||||||
|
-- QuestCl cl = cl ** {
|
||||||
|
-- subj = "adakah" ++ cl.subj;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- missing record fields: pred type of vp
|
||||||
|
|
||||||
|
-- -- : IP -> VP -> QCl ;
|
||||||
|
-- -- expected: ParamTam.VForm => ParamX.Polarity => Str
|
||||||
|
-- -- inferred: {s : ParamTam.VForm => ParamX.Polarity => Str}
|
||||||
|
|
||||||
|
-- QuestVP ip cl = cl ** {
|
||||||
|
-- pred = \\vf,pol => cl.s ! vf ! pol;
|
||||||
|
-- subj = ip.s ! Bare ;
|
||||||
|
-- };
|
||||||
|
|
||||||
|
-- -- : IAdv -> Cl -> QCl ; -- why does John walk
|
||||||
|
-- QuestIAdv iadv cls = {
|
||||||
|
-- subj = case iadv.isPre of {
|
||||||
|
-- True => iadv.s ++ cls.subj ; False => cls.subj
|
||||||
|
-- } ;
|
||||||
|
-- pred = \\vf,pol => case iadv.isPre of {
|
||||||
|
-- True => cls.pred ! iadv.vf ! pol ;
|
||||||
|
-- False => cls.pred ! iadv.vf ! pol ++ iadv.s
|
||||||
|
-- } ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : IP -> IComp ;
|
||||||
|
-- CompIP ip = {s = ip.s ! Bare } ; -- who (is it)
|
||||||
|
|
||||||
|
-- -- : IComp -> NP -> QCl ; -- where is John?
|
||||||
|
-- QuestIComp icomp np = {
|
||||||
|
-- pred = \\vf,pol => np.s ! Bare ;
|
||||||
|
-- subj = icomp.s ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- \\vf,pol,posadv =>
|
||||||
|
-- -- {
|
||||||
|
-- -- pred = \\vf,pol => ip.s ++ vp.s ! vf ! pol;
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
--{- ----
|
||||||
|
-- s = \\t,a,p =>
|
||||||
|
-- let
|
||||||
|
-- cl = oldClause slash ;
|
||||||
|
-- cls : Direct -> Str =
|
||||||
|
-- \d -> cl.s ! d ! t ! a ! p ! Indic ;
|
||||||
|
---- \d -> cl.s ! ip.a ! d ! t ! a ! p ! Indic ;
|
||||||
|
-- who = slash.c2.s ++ ip.s ! slash.c2.c
|
||||||
|
-- in table {
|
||||||
|
-- QDir => who ++ cls DInv ;
|
||||||
|
-- QIndir => who ++ cls DDir
|
||||||
|
-- }
|
||||||
|
---}
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- lin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : IComp -> NP -> QCl ; -- where is John?
|
||||||
|
-- QuestIComp icomp np =
|
||||||
|
|
||||||
|
|
||||||
|
-- Interrogative pronouns can be formed with interrogative
|
||||||
|
-- determiners, with or without a noun.
|
||||||
|
|
||||||
|
-- -- : IDet -> CN -> IP ; -- which five songs
|
||||||
|
-- IdetCN idet cn = {contractSTM = False} ** NS.DetCN idet cn ;
|
||||||
|
|
||||||
|
-- -- : IDet -> IP ; -- which five
|
||||||
|
-- IdetIP idet = {contractSTM = False} ** NS.DetNP idet ;
|
||||||
|
|
||||||
|
-- They can be modified with adverbs.
|
||||||
|
-- -- : IP -> Adv -> IP ; -- who in Paris
|
||||||
|
-- --AdvIP = NS.AdvNP ;
|
||||||
|
|
||||||
|
-- Interrogative quantifiers have number forms and can take number modifiers.
|
||||||
|
|
||||||
|
-- -- : IQuant -> Num -> IDet ; -- which (five)
|
||||||
|
-- IdetQuant = NS.DetQuant ;
|
||||||
|
|
||||||
|
-- Interrogative adverbs can be formed prepositionally.
|
||||||
|
-- -- : Prep -> IP -> IAdv ; -- with whom
|
||||||
|
-- PrepIP prep ip = SS.prepIP prep (ip.s ! Abs) False ;
|
||||||
|
|
||||||
|
-- They can be modified with other adverbs.
|
||||||
|
|
||||||
|
-- -- : IAdv -> Adv -> IAdv ; -- where in Paris
|
||||||
|
-- -- AdvIAdv iadv adv =
|
||||||
|
|
||||||
|
-- Interrogative complements to copulas can be both adverbs and
|
||||||
|
-- pronouns.
|
||||||
|
|
||||||
|
-- -- : IAdv -> IComp ;
|
||||||
|
-- CompIAdv iadv = iadv ; -- where (is it)
|
||||||
|
|
||||||
|
|
||||||
|
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
||||||
|
|
||||||
|
-- Wh questions with two or more question words require a new, special category.
|
||||||
|
|
||||||
|
-- cat
|
||||||
|
-- QVP ; -- buy what where
|
||||||
|
-- fun
|
||||||
|
-- ComplSlashIP : VPSlash -> IP -> QVP ; -- buys what
|
||||||
|
-- AdvQVP : VP -> IAdv -> QVP ; -- lives where
|
||||||
|
-- AddAdvQVP : QVP -> IAdv -> QVP ; -- buys what where
|
||||||
|
|
||||||
|
-- QuestQVP : IP -> QVP -> QCl ; -- who buys what where
|
||||||
|
---}
|
||||||
|
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
41
src/tamil/RelativeTam.gf
Normal file
41
src/tamil/RelativeTam.gf
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
concrete RelativeTam of Relative = CatTam ** open
|
||||||
|
ResTam, Prelude in {
|
||||||
|
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- -- : Cl -> RCl ; -- such that John loves her
|
||||||
|
-- -- RelCl cl = cl ** {
|
||||||
|
-- -- subj = cl.subj ;
|
||||||
|
-- -- pred = cl.pred ;
|
||||||
|
-- -- };
|
||||||
|
|
||||||
|
-- -- : RP -> VP -> RCl ;
|
||||||
|
-- RelVP rp vp = {
|
||||||
|
-- subj = rp.s ;
|
||||||
|
-- pred = \\per,pol => vp.s ! Active ! pol;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : RP -> ClSlash -> RCl ; -- who I went with
|
||||||
|
-- RelSlash rp cls = {
|
||||||
|
-- subj = rp.s -- yang
|
||||||
|
-- ++ cls.subj ; -- aku
|
||||||
|
-- pred = \\per,pol =>
|
||||||
|
-- let object : Str = case cls.c2.prepType of {
|
||||||
|
-- OtherPrep
|
||||||
|
-- => cls.c2.obj ! per ; -- depends on the head, not known yet
|
||||||
|
-- _ => [] -- if the preposition is dir.obj or empty, no obj. pronoun
|
||||||
|
-- } ;
|
||||||
|
-- in cls.pred ! Active ! pol -- ikut sama
|
||||||
|
-- ++ object -- dengan+nya
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : RP ;
|
||||||
|
-- IdRP = {s = "yang"} ;
|
||||||
|
|
||||||
|
-- -- Mintz page 49: aku jumpa orang /yang kaki+nya/ patah.
|
||||||
|
-- -- 'I met a man /whose foot/ was broken.'
|
||||||
|
-- -- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
||||||
|
-- -- FunRP prep np rp = {} ;
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
421
src/tamil/ResTam.gf
Normal file
421
src/tamil/ResTam.gf
Normal file
@@ -0,0 +1,421 @@
|
|||||||
|
resource ResTam = ParamTam ** open Prelude, Predef in {
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Nouns
|
||||||
|
oper
|
||||||
|
Noun : Type = {s: ParamX.Number => ParamTam.Case => Str} ;
|
||||||
|
-- Noun2 : Type = Noun ** {c2 : Preposition} ;
|
||||||
|
-- Noun3 : Type = Noun2 ** {c3 : Preposition} ;
|
||||||
|
|
||||||
|
CNoun : Type = Noun ;
|
||||||
|
-- heavyMod : Str ; -- heavy stuff like relative clauses after determiner
|
||||||
|
|
||||||
|
-- PNoun : Type = Noun ;
|
||||||
|
|
||||||
|
mkN : (_,_ : Str) -> Noun = \x,y -> {
|
||||||
|
s = table {
|
||||||
|
Sg => table{
|
||||||
|
Nom => x ;
|
||||||
|
Acc => x + "ai" ;
|
||||||
|
Dat => x + "ukku" ;
|
||||||
|
Soc => x + "otu" ;
|
||||||
|
Gen => x + "utaiya" ;
|
||||||
|
Instr => x + "al" ;
|
||||||
|
Loc => x + "itam" ;
|
||||||
|
Abl => x + "itamiruntu"
|
||||||
|
} ;
|
||||||
|
Pl => table{
|
||||||
|
Nom => y + "kal" ;
|
||||||
|
Acc => y + "kal" + "ai" ;
|
||||||
|
Dat => y + "kal" + "ukku" ;
|
||||||
|
Soc => y + "kal" + "otu" ;
|
||||||
|
Gen => y + "kal" + "utaiya" ;
|
||||||
|
Instr => y + "kal" + "al" ;
|
||||||
|
Loc => y + "kal" + "itam" ;
|
||||||
|
Abl => y + "kal" + "itamiruntu"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
useN : Noun -> CNoun = \n -> n ** {
|
||||||
|
heavyMod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
---------------------------------------------
|
||||||
|
-- Pronoun
|
||||||
|
|
||||||
|
-- Pronoun : Type = {
|
||||||
|
-- s : Str ;
|
||||||
|
-- p : Person ; -- for relative clauses
|
||||||
|
-- empty : Str ; -- need to avoid GF being silly. See https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#metavariables-or-those-question-marks-that-appear-when-parsing
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkPron : Str -> Person -> Pronoun = \str,p -> {
|
||||||
|
-- s = str ;
|
||||||
|
-- p = p ;
|
||||||
|
-- empty = []
|
||||||
|
-- } ;
|
||||||
|
---------------------------------------------
|
||||||
|
-- NP
|
||||||
|
|
||||||
|
NounPhrase : Type = {
|
||||||
|
s : Str ;
|
||||||
|
-- empty : Str ; -- need to avoid GF being silly. See https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#metavariables-or-those-question-marks-that-appear-when-parsing
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- IPhrase : Type = NounPhrase ** {
|
||||||
|
-- sp : NForm => Str ; -- standalone berapa banyak kucing
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- emptyNP : NounPhrase = {
|
||||||
|
-- s = \\_ => [] ;
|
||||||
|
-- a = NotPron ;
|
||||||
|
-- empty = []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
mkNounPhrase : Str -> NounPhrase = \str -> {
|
||||||
|
s = str ;
|
||||||
|
-- a = NotPron ;
|
||||||
|
-- empty = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- mkIP : Str -> IPhrase = \str -> {
|
||||||
|
-- s = \\_ => str ;
|
||||||
|
-- a = NotPron ;
|
||||||
|
-- empty = [] ;
|
||||||
|
-- sp = \\_ => str ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Det, Quant, Card, Ord
|
||||||
|
|
||||||
|
Quant : Type = {
|
||||||
|
s : Str ; -- quantifier in a context, eg. 'berapa (kucing)' (Tamil: I (Nemo) am uncommenting only this part)
|
||||||
|
-- sp : NForm => Str ; -- a standalone, eg. '(kucing) berapa banyak'
|
||||||
|
-- poss : Possession ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- IQuant : Type = Quant ** {
|
||||||
|
-- isPre : Bool ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- linDet : Determiner -> Str = \det -> det.pr ++ det.s ;
|
||||||
|
|
||||||
|
Determiner : Type = Quant ** {
|
||||||
|
pr : Str ; -- prefix for numbers
|
||||||
|
n : NumType ; -- number as in 5 (noun in singular), Sg or Pl
|
||||||
|
count: Str ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
CardNum : Type = {
|
||||||
|
s : Str ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Num : Type = CardNum ** {
|
||||||
|
n : NumType
|
||||||
|
} ; -- (Tamil: Necessary for DetQuant : Quant -> Num -> Det ;)
|
||||||
|
|
||||||
|
baseNum : Num = {
|
||||||
|
s = [] ;
|
||||||
|
n = NoNum Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- CardOrdNum : Type = CardNum ** {
|
||||||
|
-- ord : Str
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- DigNum : Type = {
|
||||||
|
-- s : CardOrd => Str ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
baseQuant : Quant = {
|
||||||
|
s = [] ;
|
||||||
|
sp = \\_ => [] ;
|
||||||
|
-- poss = Bare ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- -- \\vf,pol, =>
|
||||||
|
-- -- let
|
||||||
|
-- -- verb : Str = joinVP vp tense ant pol agr ;
|
||||||
|
-- -- obj : Str = vp.s2 ! agr ;
|
||||||
|
-- -- in case ord of {
|
||||||
|
-- -- ODir => subj ++ verb ++ obj ; -- Ġanni jiekol ħut
|
||||||
|
-- -- OQuest => verb ++ obj ++ subj -- jiekol ħut Ġanni ?
|
||||||
|
-- -- }
|
||||||
|
|
||||||
|
mkQuant : Str -> Quant = \str -> baseQuant ** {
|
||||||
|
s = str ; -- (Tamil: Extra arguments leftover from Malay)
|
||||||
|
sp = \\_ => str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
mkDet : Str -> Str -> Number -> Determiner = \cnt, str, num -> mkQuant str ** {
|
||||||
|
pr = "" ;
|
||||||
|
n = NoNum num ;
|
||||||
|
count = "" ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- mkIdet : Str -> Str -> Str -> Number -> Bool -> Determiner = \cnt, str, standalone, num, isPre -> mkDet cnt str num ** {
|
||||||
|
-- pr = case isPre of {True => str ; False => [] } ;
|
||||||
|
-- -- if isPre is True, then: "berapa kucing"
|
||||||
|
-- s = case isPre of { False => str ; True => [] };
|
||||||
|
-- count = cnt ;
|
||||||
|
-- sp = \\_ => standalone ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
|
||||||
|
-- -- np = vp.topic ++ np ;
|
||||||
|
-- -- vp = insertObj (ss compl) vp ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Prepositions
|
||||||
|
|
||||||
|
-- Preposition : Type = {
|
||||||
|
-- s : Str ; -- dengan
|
||||||
|
-- obj : Person => Str ; -- dengan+nya -- needed in relative clauses to refer to the object
|
||||||
|
-- prepType : PrepType ; -- TODO rename, the name is confusing
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkPrep : Str -> Preposition = \dengan -> {
|
||||||
|
-- s = dengan ;
|
||||||
|
-- obj = \\p => dengan + poss2str (Poss p) ;
|
||||||
|
-- prepType = OtherPrep ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- direct object: "hits him" -> "memukul+nya"
|
||||||
|
-- dirPrep : Preposition = {
|
||||||
|
-- s = [] ;
|
||||||
|
-- obj = table {
|
||||||
|
-- P1 => BIND ++ "ku" ;
|
||||||
|
-- P2 => BIND ++ "mu" ;
|
||||||
|
-- P3 => BIND ++ "nya" } ;
|
||||||
|
-- prepType = DirObj ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- truly empty
|
||||||
|
-- emptyPrep : Preposition = {
|
||||||
|
-- s = [] ;
|
||||||
|
-- obj = \\_ => [] ;
|
||||||
|
-- prepType = EmptyPrep ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- datPrep : Preposition = mkPrep "kepada" ;
|
||||||
|
|
||||||
|
-- applyPrep : Preposition -> NounPhrase -> Str = \prep,np ->
|
||||||
|
-- case <np.a, prep.prepType> of {
|
||||||
|
-- <IsPron p,OtherPrep> => prep.obj ! p ++ np.empty ;
|
||||||
|
-- _ => prep.s ++ np.s ! Bare
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Adjectives
|
||||||
|
|
||||||
|
-- Adjective : Type = SS ;
|
||||||
|
-- Adjective2 : Type = Adjective ;
|
||||||
|
|
||||||
|
-- mkAdj : Str -> Adjective = \str -> {s = str} ;
|
||||||
|
|
||||||
|
-- AdjPhrase : Type = Adjective ; -- ** {compar : Str} ;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Verbs
|
||||||
|
|
||||||
|
Verb : Type = {s: Tense => VForm => Str} ;
|
||||||
|
|
||||||
|
mkVerb : (s : Str) -> Verb = \x -> {
|
||||||
|
s = table {
|
||||||
|
Past => table {
|
||||||
|
VF P1 Sg => x + "nt" + "en" ;
|
||||||
|
VF P2 Sg => x + "nt" + "ay" ;
|
||||||
|
VFP3 Sg Hon => x + "nt" + "ar" ;
|
||||||
|
VFP3 Sg Masc => x + "nt" + "an" ;
|
||||||
|
VFP3 Sg Fem => x + "nt" + "al" ;
|
||||||
|
VFP3 Sg Neu => x + "nt" + "atu" ;
|
||||||
|
VF P1 Pl => x + "nt" + "om" ;
|
||||||
|
VF P2 Pl => x + "nt" + "irkal" ;
|
||||||
|
VFP3 Pl Hum => x + "nt" + "arkal" ;
|
||||||
|
VFP3 Pl Neu => x + "nt" + "ana" ;
|
||||||
|
|
||||||
|
VF _ _ => x ;
|
||||||
|
VFP3 _ _ => x
|
||||||
|
} ;
|
||||||
|
Pres => table{
|
||||||
|
VF P1 Sg => x + "kir" + "en" ;
|
||||||
|
VF P2 Sg => x + "kir" + "ay" ;
|
||||||
|
VFP3 Sg Hon => x + "kir" + "ar" ;
|
||||||
|
VFP3 Sg Masc => x + "kir" + "an" ;
|
||||||
|
VFP3 Sg Fem => x + "kir" + "al" ;
|
||||||
|
VFP3 Sg Neu => x + "kir" + "atu" ;
|
||||||
|
VF P1 Pl => x + "kir" + "om" ;
|
||||||
|
VF P2 Pl => x + "kir" + "irkal" ;
|
||||||
|
VFP3 Pl Hum => x + "kir" + "arkal" ;
|
||||||
|
VFP3 Pl Neu => x + "kir" + "ana" ;
|
||||||
|
|
||||||
|
VF _ _ => x ;
|
||||||
|
VFP3 _ _ => x
|
||||||
|
} ;
|
||||||
|
Fut => table{
|
||||||
|
VF P1 Sg => x + "v" + "en" ;
|
||||||
|
VF P2 Sg => x + "v" + "ay" ;
|
||||||
|
VFP3 Sg Hon => x + "v" + "ar" ;
|
||||||
|
VFP3 Sg Masc => x + "v" + "an" ;
|
||||||
|
VFP3 Sg Fem => x + "v" + "al" ;
|
||||||
|
VFP3 Sg Neu => x + "v" + "atu" ;
|
||||||
|
VF P1 Pl => x + "v" + "om" ;
|
||||||
|
VF P2 Pl => x + "v" + "irkal" ;
|
||||||
|
VFP3 Pl Hum => x + "v" + "arkal" ;
|
||||||
|
VFP3 Pl Neu => x + "v" + "ana" ;
|
||||||
|
|
||||||
|
VF _ _ => x ;
|
||||||
|
VFP3 _ _ => x
|
||||||
|
} ;
|
||||||
|
Cond => table{
|
||||||
|
VF P1 Sg => x + "v" + "en" ;
|
||||||
|
VF P2 Sg => x + "v" + "ay" ;
|
||||||
|
VFP3 Sg Hon => x + "v" + "ar" ;
|
||||||
|
VFP3 Sg Masc => x + "v" + "an" ;
|
||||||
|
VFP3 Sg Fem => x + "v" + "al" ;
|
||||||
|
VFP3 Sg Neu => x + "v" + "atu" ;
|
||||||
|
VF P1 Pl => x + "v" + "om" ;
|
||||||
|
VF P2 Pl => x + "v" + "irkal" ;
|
||||||
|
VFP3 Pl Hum => x + "v" + "arkal" ;
|
||||||
|
VFP3 Pl Neu => x + "v" + "ana" ;
|
||||||
|
|
||||||
|
VF _ _ => x ;
|
||||||
|
VFP3 _ _ => x
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
} ; -- N.B. Cond is just a placeholder, it uses the Future Tamil case
|
||||||
|
|
||||||
|
-- mkVerb2 : Verb -> Preposition -> Verb2 = \v,pr -> v ** {
|
||||||
|
-- c2 = pr ;
|
||||||
|
-- passive = "di" ++ BIND ++ v.s ! Root
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- mkVerb3 : Verb -> (p,q : Preposition) -> Verb3 = \v,p,q ->
|
||||||
|
-- mkVerb2 v p ** {c3 = q} ;
|
||||||
|
|
||||||
|
-- mkVerb4 : Verb -> Preposition -> Str -> Verb4 = \v,pr,str -> v ** {
|
||||||
|
-- s = \\_ => v.s ! Active ++ str;
|
||||||
|
-- c2 = pr ;
|
||||||
|
-- passive = "di" ++ BIND ++ v.s ! Root ++ str
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- copula : Verb = {s = \\_ => "ada"} ; -- TODO
|
||||||
|
------------------
|
||||||
|
-- Adv
|
||||||
|
|
||||||
|
-- Adverb : Type = {
|
||||||
|
-- s : Str;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- IAdv : Type = Adverb ** {
|
||||||
|
-- isPre : Bool ;
|
||||||
|
-- vf : VForm ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
------------------
|
||||||
|
-- VP
|
||||||
|
|
||||||
|
-- VerbPhrase : Type = {
|
||||||
|
-- s : VForm => Polarity => Str ; -- tidak or bukan
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- VPSlash : Type = VerbPhrase ** {
|
||||||
|
-- c2 : Preposition ;
|
||||||
|
-- adjCompl : Str ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- useV : Verb -> VerbPhrase = \v -> v ** {
|
||||||
|
-- s = \\vf,pol => verbneg pol ++ v.s ! vf
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- useComp : Str -> VerbPhrase = \s -> {
|
||||||
|
-- s = \\vf,pol => nounneg pol ++ s ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- linVP : VerbPhrase -> Str = \vp -> vp.s ! Active ! Pos;
|
||||||
|
|
||||||
|
-- https://www.reddit.com/r/indonesian/comments/gsizsv/when_to_use_tidak_bukan_jangan_belum/
|
||||||
|
|
||||||
|
-- verbneg : Polarity -> Str = \pol -> case pol of {
|
||||||
|
-- Neg => "tidak" ; -- or "tak"?
|
||||||
|
-- Pos => []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- nounneg : Polarity -> Str = \pol -> case pol of {
|
||||||
|
-- Neg => "bukan" ;
|
||||||
|
-- Pos => []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- impneg : Polarity -> Str = \pol -> case pol of {
|
||||||
|
-- Neg => "jangan" ;
|
||||||
|
-- Pos => []
|
||||||
|
-- } ;
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Cl, S
|
||||||
|
|
||||||
|
-- Clause : Type = {
|
||||||
|
-- subj : Str ;
|
||||||
|
-- pred : VForm => Polarity => Str -- Cl may become relative clause, need to keep open VForm
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- RClause : Type = {
|
||||||
|
-- subj : Str ;
|
||||||
|
-- pred : Person => Polarity => Str
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- RS : Type = {s : Person => Str} ;
|
||||||
|
|
||||||
|
-- ClSlash : Type = Clause ** {c2 : Preposition} ;
|
||||||
|
|
||||||
|
-- Sentence : Type = {s : Str} ;
|
||||||
|
|
||||||
|
-- predVP : NounPhrase -> VerbPhrase -> Clause = \np,vp -> {
|
||||||
|
-- subj = np.s ! Bare ;
|
||||||
|
-- pred = vp.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- predVPSlash : NounPhrase -> VPSlash -> ClSlash = \np,vps ->
|
||||||
|
-- predVP np <vps : VerbPhrase> ** {c2 = vps.c2} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- mkClause : Str -> NounPhrase -> VPSlash -> Clause = \str,np,vp -> {
|
||||||
|
-- -- subj = str ++ np.s ! Bare;
|
||||||
|
-- -- pred = vp.s
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- mkClause : Str -> IPhrase -> VerbPhrase -> Clause = \str,ip,vp -> {
|
||||||
|
-- -- subj = ip.s ! Bare ;
|
||||||
|
-- -- pred = vp.s ;
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- baseQuant : Quant = {
|
||||||
|
-- -- s = [] ;
|
||||||
|
-- -- sp = \\_ => [] ;
|
||||||
|
-- -- poss = Bare ;
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
-- -- -- \\vf,pol, =>
|
||||||
|
-- -- -- let
|
||||||
|
-- -- -- verb : Str = joinVP vp tense ant pol agr ;
|
||||||
|
-- -- -- obj : Str = vp.s2 ! agr ;
|
||||||
|
-- -- -- in case ord of {
|
||||||
|
-- -- -- ODir => subj ++ verb ++ obj ; -- Ġanni jiekol ħut
|
||||||
|
-- -- -- OQuest => verb ++ obj ++ subj -- jiekol ħut Ġanni ?
|
||||||
|
-- -- -- }
|
||||||
|
|
||||||
|
-- -- mkQuant : Str -> Quant = \str -> baseQuant ** {
|
||||||
|
-- -- s = str ;
|
||||||
|
-- -- sp = \\_ => str
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- linrefs
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
99
src/tamil/SentenceTam.gf
Normal file
99
src/tamil/SentenceTam.gf
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
|
||||||
|
concrete SentenceTam of Sentence = CatTam ** open
|
||||||
|
TenseX, ResTam, (AM=AdverbTam), Prelude in {
|
||||||
|
|
||||||
|
--flags optimize=all_subs ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
|
||||||
|
--2 Clauses
|
||||||
|
|
||||||
|
-- -- : NP -> VP -> Cl
|
||||||
|
-- PredVP = predVP ;
|
||||||
|
|
||||||
|
-- -- : SC -> VP -> Cl ; -- that she goes is good (Saeed p. 94)
|
||||||
|
-- --PredSCVP sc vp = ;
|
||||||
|
|
||||||
|
--2 Clauses missing object noun phrases
|
||||||
|
-- -- : NP -> VPSlash -> ClSlash ;
|
||||||
|
-- SlashVP = predVPSlash ;
|
||||||
|
|
||||||
|
-- -- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||||
|
-- -- AdvSlash cls adv = cls ** insertAdv adv cls ;
|
||||||
|
|
||||||
|
-- -- : Cl -> Prep -> ClSlash ; -- (with whom) he walks
|
||||||
|
-- SlashPrep cl prep = cl ** {c2 = prep} ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Imperatives
|
||||||
|
-- -- : VP -> Imp ;
|
||||||
|
-- ImpVP vp = {
|
||||||
|
-- s = \\num,pol => case pol of {
|
||||||
|
-- Neg => "jangan" ++ vp.s ! Imperative ! Pos;
|
||||||
|
-- Pos => vp.s ! Imperative ! Pos
|
||||||
|
-- }
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : VP -> SC ;
|
||||||
|
-- EmbedVP vp = {s = vp.s ! Root ! Pos} ;
|
||||||
|
|
||||||
|
-- {-
|
||||||
|
-- -- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
||||||
|
-- SlashVS np vs ss = {} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : Temp -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
|
||||||
|
-- UseSlash t p cls = {} ;
|
||||||
|
|
||||||
|
--2 Imperatives
|
||||||
|
-- -- : VP -> Imp ;
|
||||||
|
-- -- ImpVP vp = {s = \\num,pol => linVP (VImp num pol) Statement vp} ;
|
||||||
|
|
||||||
|
--2 Embedded sentences
|
||||||
|
|
||||||
|
-- -- : S -> SC ;
|
||||||
|
-- EmbedS s = {s = s.s ! True} ; -- choose subordinate
|
||||||
|
|
||||||
|
-- -- : QS -> SC ;
|
||||||
|
-- -- EmbedQS qs = { } ;
|
||||||
|
|
||||||
|
-- -- : VP -> SC ;
|
||||||
|
-- EmbedVP vp = {s = infVP vp} ;
|
||||||
|
---}
|
||||||
|
--2 Sentences
|
||||||
|
|
||||||
|
-- -- : Temp -> Pol -> Cl -> S ;
|
||||||
|
-- UseCl t p cl = {
|
||||||
|
-- s = cl.subj ++ t.s ++ p.s ++ cl.pred ! Active ! p.p;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Temp -> Pol -> QCl -> QS ;
|
||||||
|
-- UseQCl t p cl = {
|
||||||
|
-- s = t.s ++ p.s ++ cl.subj ++ cl.pred ! Active ! p.p ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : Temp -> Pol -> RCl -> RS ;
|
||||||
|
-- UseRCl t p cl = {
|
||||||
|
-- s = \\per => cl.subj ++ t.s ++ p.s ++ cl.pred ! per ! p.p ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- AdvS : Adv -> S -> S ; -- then I will go home
|
||||||
|
-- AdvS = advS "" ;
|
||||||
|
|
||||||
|
-- -- ExtAdvS : Adv -> S -> S ; -- next week, I will go home
|
||||||
|
-- ExtAdvS = advS (SOFT_BIND ++ ",");
|
||||||
|
|
||||||
|
-- -- : S -> Subj -> S -> S ;
|
||||||
|
-- -- SSubjS s1 subj s2 = AdvS (AM.SubjS subj s2) s1 ;
|
||||||
|
|
||||||
|
-- -- : S -> RS -> S ; -- she sleeps, which is good
|
||||||
|
-- -- RelS sent rs = advS {s = rs.s ! Sg3 Masc ++ SOFT_BIND ++ ","} sent ;
|
||||||
|
|
||||||
|
--oper
|
||||||
|
|
||||||
|
-- advS : (comma : Str) -> Adverb -> S -> S = \comma,a,sent -> sent ** {
|
||||||
|
-- s = a.s ++ comma ++ sent.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
190
src/tamil/StructuralTam.gf
Normal file
190
src/tamil/StructuralTam.gf
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
concrete StructuralTam of Structural = CatTam **
|
||||||
|
open Prelude, ResTam, (N=NounTam), ParadigmsTam in {
|
||||||
|
|
||||||
|
-------
|
||||||
|
-- Ad*
|
||||||
|
{-
|
||||||
|
--lin almost_AdA = mkAdA "" ;
|
||||||
|
--lin almost_AdN = ss "" ;
|
||||||
|
--lin at_least_AdN = ss "" ;
|
||||||
|
--lin at_most_AdN = ss "" ;
|
||||||
|
--lin so_AdA = ss "" ;
|
||||||
|
--lin too_AdA = ss "" ;
|
||||||
|
--lin very_AdA = mkAdA "" ;
|
||||||
|
|
||||||
|
--lin as_CAdv = { s = "" ; p = [] } ;
|
||||||
|
--lin less_CAdv = { s = "" ; p = [] } ;
|
||||||
|
--lin more_CAdv = { s = "" ; p = [] } ;
|
||||||
|
|
||||||
|
--lin how8much_IAdv = ss "" ;
|
||||||
|
--lin when_IAdv = ss "" ;
|
||||||
|
---}
|
||||||
|
--lin how_IAdv = { s = "bagaimana"; isPre = True ; vf = Active } ;
|
||||||
|
--lin where_IAdv = { s = "mana"; isPre = False ; vf = Root } ;
|
||||||
|
--lin why_IAdv = {s = "mengapa"; isPre = True ; vf = Root } ;
|
||||||
|
--{-
|
||||||
|
|
||||||
|
|
||||||
|
--lin always_AdV = ss "" ;
|
||||||
|
|
||||||
|
--lin everywhere_Adv = ss "" ;
|
||||||
|
--lin here7from_Adv = ss "" ;
|
||||||
|
--lin here7to_Adv = ss "" ;
|
||||||
|
--lin here_Adv = ss "" ;
|
||||||
|
--lin quite_Adv = ss "" ;
|
||||||
|
--lin somewhere_Adv = ss "" ;
|
||||||
|
--lin there7from_Adv = ss "" ;
|
||||||
|
--lin there7to_Adv = ss "" ;
|
||||||
|
--lin there_Adv = ss "" ;
|
||||||
|
|
||||||
|
---}
|
||||||
|
-------
|
||||||
|
-- Conj
|
||||||
|
|
||||||
|
--lin and_Conj = {s2 = "dan" ; s1 = [] ; n = Pl} ;
|
||||||
|
-- lin or_Conj = {s2 = \\_ => "" ; s1 = [] ; n = Sg} ;
|
||||||
|
-- lin if_then_Conj = mkConj
|
||||||
|
-- lin both7and_DConj = mkConj "" "" pl ;
|
||||||
|
-- lin either7or_DConj = {s2 = \\_ => "" ; s1 = "" ; n = Sg} ;
|
||||||
|
--
|
||||||
|
-- lin but_PConj = ss "" ;
|
||||||
|
-- lin otherwise_PConj = ss "" ;
|
||||||
|
-- lin therefore_PConj = ss "" ;
|
||||||
|
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
-- *Det and Quant
|
||||||
|
|
||||||
|
--lin how8many_IDet = mkIdet "berapa" "berapa banyak" "" Sg True;
|
||||||
|
--lin every_Det = mkDet "semua" "semua" Sg ; -- to check
|
||||||
|
--{-}
|
||||||
|
--lin all_Predet = {s = ""} ;
|
||||||
|
--lin not_Predet = { s = "" } ;
|
||||||
|
--lin only_Predet = { s = "" } ;
|
||||||
|
--lin most_Predet = {s = ""} ;
|
||||||
|
|
||||||
|
--lin few_Det = R.indefDet "" pl ;
|
||||||
|
--lin many_Det = R.indefDet "" pl ;
|
||||||
|
--lin much_Det = R.indefDet "" sg ;
|
||||||
|
|
||||||
|
--lin somePl_Det =
|
||||||
|
--lin someSg_Det =
|
||||||
|
|
||||||
|
--lin no_Quant = -}
|
||||||
|
--lin that_Quant = mkQuant "itu" ;
|
||||||
|
lin this_Quant = mkQuant "idhu" ;
|
||||||
|
--lin which_IQuant = mkQuant "yang mana" ** {isPre = False} ;
|
||||||
|
|
||||||
|
-----
|
||||||
|
-- NP
|
||||||
|
|
||||||
|
--lin somebody_NP = mkNounPhrase "seorang" ; --todo
|
||||||
|
|
||||||
|
--{-
|
||||||
|
--lin everybody_NP = defNP "" N.NumPl ;
|
||||||
|
--lin everything_NP = defNP "" N.NumSg ;
|
||||||
|
--lin nobody_NP = mkVerb; ""
|
||||||
|
--lin nothing_NP = defNP "" N.NumSg ;
|
||||||
|
--lin somebody_NP = defNP "" N.NumSg ;
|
||||||
|
--lin something_NP = defNP "" N.NumSg ;
|
||||||
|
|
||||||
|
--oper
|
||||||
|
-- defNP : Str -> Num -> NP = {} ;
|
||||||
|
---}
|
||||||
|
|
||||||
|
-------
|
||||||
|
-- Prep
|
||||||
|
|
||||||
|
-- lin above_Prep = mkPrep ""
|
||||||
|
-- lin after_Prep = mkPrep ""
|
||||||
|
-- lin before_Prep = mkPrep "" ;
|
||||||
|
-- lin behind_Prep = mkPrep "" ;
|
||||||
|
-- lin between_Prep = = mkPrep "" ;
|
||||||
|
--lin by8agent_Prep = mkPrep "oleh" ; -- for pronoun agent, see Mintz p. 170, 5.4.1
|
||||||
|
--lin by8means_Prep = mkPrep "dengan" ;
|
||||||
|
-- lin during_Prep = mkPrep ;
|
||||||
|
-- lin except_Prep = mkPrep ;
|
||||||
|
-- lin for_Prep = mkPrep ;
|
||||||
|
-- lin from_Prep = mkPrep "" ;
|
||||||
|
-- lin in8front_Prep = mkPrep "" ;
|
||||||
|
--lin in_Prep = mkPrep "di" ;
|
||||||
|
-- lin on_Prep = mkPrep "" ;
|
||||||
|
-- lin part_Prep = mkPrep ;
|
||||||
|
--lin possess_Prep = mkPrep [] ; -- TODO check Mintz p. 39-40, 2.2.1.2
|
||||||
|
-- lin through_Prep = mkPrep ;
|
||||||
|
-- lin to_Prep = mkPrep "ke" ;
|
||||||
|
--lin to_Prep =
|
||||||
|
-- let ke : Preposition = mkPrep "ke";
|
||||||
|
-- kepada : Preposition = mkPrep "kepada" ;
|
||||||
|
-- in ke ** {
|
||||||
|
-- obj = kepada.obj
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- lin have_V2 = let have' : V2 = mkV2 "ada" in have' ** {
|
||||||
|
-- s = \\_ => "ada" ;
|
||||||
|
-- passive = "diadakan" ;
|
||||||
|
-- } ;
|
||||||
|
-- lin under_Prep = mkPrep "" ;
|
||||||
|
--lin with_Prep = mkPrep "dengan" ;
|
||||||
|
-- lin without_Prep = mkPrep "" ;
|
||||||
|
|
||||||
|
-------
|
||||||
|
-- Pron
|
||||||
|
|
||||||
|
-- Pronouns are closed class, no constructor in ParadigmsTam.
|
||||||
|
--lin it_Pron = mkPron "dia" P3 ;
|
||||||
|
--lin i_Pron = mkPron "aku" P1 ;
|
||||||
|
--lin youPol_Pron = mkPron "kamu" P2 ;
|
||||||
|
--lin youSg_Pron = mkPron "kamu" P2 ;
|
||||||
|
--lin he_Pron = mkPron "dia" P3 ;
|
||||||
|
--lin she_Pron = mkPron "dia" P3 ;
|
||||||
|
-- inclusive we
|
||||||
|
--lin we_Pron = mkPron "kita" P1 ;
|
||||||
|
--lin youPl_Pron = mkPron "kamu" P2;
|
||||||
|
--lin they_Pron = mkPron "mereka" P3 ;
|
||||||
|
|
||||||
|
--lin whatPl_IP = ;
|
||||||
|
--lin whatSg_IP = mkIP "apa";
|
||||||
|
--lin whoPl_IP = ;
|
||||||
|
--lin whoSg_IP = mkIP "siapa";
|
||||||
|
|
||||||
|
-- expected: {s : ParamTam.Possession => Str; a : ParamTam.NPAgr;
|
||||||
|
-- empty : Str; sp : ParamTam.NForm => Str}
|
||||||
|
-------
|
||||||
|
-- Subj
|
||||||
|
|
||||||
|
-- lin although_Subj =
|
||||||
|
-- lin because_Subj =
|
||||||
|
--lin if_Subj = ss "sekiranya" ;
|
||||||
|
--lin that_Subj = ss "yang" ;
|
||||||
|
--lin when_Subj = ss "kalau" ;
|
||||||
|
|
||||||
|
|
||||||
|
------
|
||||||
|
-- Utt
|
||||||
|
|
||||||
|
--lin language_title_Utt = ss "bahasa Melayu" ;
|
||||||
|
-- lin no_Utt = ss "" ;
|
||||||
|
-- lin yes_Utt = ss "" ;
|
||||||
|
|
||||||
|
|
||||||
|
-------
|
||||||
|
-- Verb
|
||||||
|
|
||||||
|
--lin have_V2 = let have' : V2 = mkV2 "ada" in have' ** {
|
||||||
|
-- s = \\_ => "ada" ;
|
||||||
|
-- passive = "diadakan" ;
|
||||||
|
--} ;
|
||||||
|
-- lin can8know_VV = can_VV ; -- can (capacity)
|
||||||
|
--lin can_VV = mkVV "boleh" ; -- can (possibility)
|
||||||
|
--lin must_VV = mkVV "perlu" ;
|
||||||
|
--lin want_VV = mkVV "mahu" ;
|
||||||
|
|
||||||
|
------
|
||||||
|
-- Voc
|
||||||
|
--{-
|
||||||
|
--lin please_Voc = ss "" ;
|
||||||
|
---}
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
51
src/tamil/SymbolTam.gf
Normal file
51
src/tamil/SymbolTam.gf
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
|
concrete SymbolTam of Symbol = CatTam **
|
||||||
|
open Prelude, ParadigmsTam, ResTam, (NM=NounTam) in {
|
||||||
|
|
||||||
|
--lin
|
||||||
|
|
||||||
|
-- -- : Symb -> PN ; -- x
|
||||||
|
-- SymbPN i = mkPN i.s ;
|
||||||
|
|
||||||
|
-- -- : Int -> PN ; -- 27
|
||||||
|
-- IntPN i = mkPN i.s ;
|
||||||
|
|
||||||
|
-- -- : Float -> PN ; -- 3.14159
|
||||||
|
-- FloatPN i = mkPN i.s ;
|
||||||
|
|
||||||
|
-- -- : Card -> PN ; -- twelve [as proper name]
|
||||||
|
-- NumPN i = mkPN i.s ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- CNIntNP cn i = {} ;
|
||||||
|
|
||||||
|
-- -- : Det -> CN -> [Symb] -> NP ; -- (the) (2) numbers x and y
|
||||||
|
-- CNSymbNP det cn xs =
|
||||||
|
-- let cnSymb = cn ** {heavyMod = cn.heavyMod ++ xs.s}
|
||||||
|
-- in NM.DetCN det cnSymb ;
|
||||||
|
|
||||||
|
-- -- : CN -> Card -> NP ; -- level five ; level 5
|
||||||
|
-- CNNumNP cn i = NM.MassNP (cn ** {heavyMod = cn.heavyMod ++ i.s}) ;
|
||||||
|
|
||||||
|
-- -- : Symb -> S ;
|
||||||
|
-- SymbS sy = sy ;
|
||||||
|
|
||||||
|
-- -- : Symb -> Card ;
|
||||||
|
-- SymbNum sy = sy ;
|
||||||
|
|
||||||
|
-- -- : Symb -> Ord ;
|
||||||
|
-- SymbOrd sy = sy ;
|
||||||
|
|
||||||
|
--lincat
|
||||||
|
-- Symb, [Symb] = SS ;
|
||||||
|
|
||||||
|
--lin
|
||||||
|
-- MkSymb s = s ;
|
||||||
|
|
||||||
|
-- BaseSymb = infixSS "dan" ; -- TODO check
|
||||||
|
-- ConsSymb = infixSS "," ;
|
||||||
|
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
163
src/tamil/VerbTam.gf
Normal file
163
src/tamil/VerbTam.gf
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
concrete VerbTam of Verb = CatTam ** open ResTam, AdverbTam, Prelude in {
|
||||||
|
|
||||||
|
|
||||||
|
--lin
|
||||||
|
|
||||||
|
-----
|
||||||
|
-- VP
|
||||||
|
-- -- : V -> VP
|
||||||
|
-- UseV = ResTam.useV ;
|
||||||
|
|
||||||
|
-- -- : V2 -> VP ; -- be loved
|
||||||
|
-- PassV2 v2 = useV {s = \\_ => v2.passive} ;
|
||||||
|
|
||||||
|
-- -- : VPSlash -> VP ;
|
||||||
|
-- -- ReflVP = ResTam.insertRefl ;
|
||||||
|
|
||||||
|
-- -- : VV -> VP -> VP ;
|
||||||
|
-- ComplVV vv vp = vp ** useV {
|
||||||
|
-- s = \\vf => vv.s ++ linVP vp
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : VS -> S -> VP ;
|
||||||
|
-- -- ComplVS vs s =
|
||||||
|
-- -- let vps = useV vs ;
|
||||||
|
-- -- subord = SubjS {s=""} s ;
|
||||||
|
-- -- in vps ** {} ;
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- -- : VQ -> QS -> VP ;
|
||||||
|
-- ComplVQ vq qs = ;
|
||||||
|
|
||||||
|
-- -- : VA -> AP -> VP ; -- they become red
|
||||||
|
-- ComplVA va ap = ResTam.insertComp (CompAP ap).s (useV va) ;
|
||||||
|
|
||||||
|
---}
|
||||||
|
--------
|
||||||
|
-- Slash
|
||||||
|
|
||||||
|
-- -- : V2 -> VPSlash
|
||||||
|
-- SlashV2a v2 = useV v2 ** {
|
||||||
|
-- c2 = v2.c2 ;
|
||||||
|
-- adjCompl = []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : V3 -> NP -> VPSlash ; -- give it (to her)
|
||||||
|
-- Slash2V3 v3 dobj = useV {
|
||||||
|
-- s = \\vf => v3.s ! vf ++ applyPrep v3.c2 dobj
|
||||||
|
|
||||||
|
-- } ** {
|
||||||
|
-- c2 = v3.c3; -- Now the VPSlash is missing only the indirect object
|
||||||
|
-- adjCompl = []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : V3 -> NP -> VPSlash ; -- give (it) to her
|
||||||
|
-- Slash3V3 v3 iobj = useV {
|
||||||
|
-- s = \\vf => v3.s ! vf ++ applyPrep v3.c3 emptyNP ++ iobj.s ! Bare;
|
||||||
|
-- --iobj.s ! Bare -- applyPrep v3.c3 iobj -- TODO check if this works for all -- probably not
|
||||||
|
-- } ** {
|
||||||
|
-- c2 = v3.c2 ;-- Now the VPSlash is missing only the direct object
|
||||||
|
-- adjCompl = []
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- insertObjc : (Agr => Str) -> SlashVP -> SlashVP = \obj,vp ->
|
||||||
|
-- -- insertObj obj vp ** {c2 = vp.c2 ; gapInMiddle = vp.gapInMiddle ; missingAdv = vp.missingAdv } ;
|
||||||
|
|
||||||
|
-- SlashV2A v2 adj = useV {
|
||||||
|
-- s = \\vf => v2.s ! vf;
|
||||||
|
-- } ** {
|
||||||
|
-- c2 = v2.c2;
|
||||||
|
-- adjCompl = adj.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- {-
|
||||||
|
-- -- : V2S -> S -> VPSlash ; -- answer (to him) that it is good
|
||||||
|
-- SlashV2S v2s s =
|
||||||
|
|
||||||
|
-- -- : V2V -> VP -> VPSlash ; -- beg (her) to go
|
||||||
|
-- SlashV2V v2v vp = ;
|
||||||
|
|
||||||
|
-- -- : V2Q -> QS -> VPSlash ; -- ask (him) who came
|
||||||
|
-- SlashV2Q v2q qs = ;
|
||||||
|
|
||||||
|
-- -- : V2A -> AP -> VPSlash ; -- paint (it) red
|
||||||
|
-- SlashV2A v2a ap = ;
|
||||||
|
---}
|
||||||
|
-- -- : VPSlash -> NP -> VP
|
||||||
|
-- ComplSlash vps np = vps ** {
|
||||||
|
-- s = \\vf,pol =>
|
||||||
|
-- vps.s ! vf ! pol
|
||||||
|
-- ++ applyPrep vps.c2 np ++ vps.adjCompl
|
||||||
|
-- -- s = \\vf,pol => vps.s ! vf ! pol ++ applyPrep vps.c2 np
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
|
||||||
|
-- -- : VV -> VPSlash -> VPSlash ;
|
||||||
|
-- SlashVV vv vps = ComplVV vv vps ** {
|
||||||
|
-- c2 = vps.c2 ; -- like ComplVV except missing object
|
||||||
|
-- passive = vv.s ++ vps.passive;
|
||||||
|
-- adjCompl = vps.adjCompl ;
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- SlashVV vv vp = vp ** useV {
|
||||||
|
-- -- s = \\vf => vv.s ++ linVP vp ;
|
||||||
|
-- -- c2 = vp.c2 ;
|
||||||
|
-- -- passive = vv.s ++ vp.passive;
|
||||||
|
-- -- adjCompl = vp.adjCompl ;
|
||||||
|
-- -- } ;
|
||||||
|
|
||||||
|
-- -- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
|
||||||
|
-- -- SlashV2VNP v2v np vps =
|
||||||
|
|
||||||
|
-- -- : Comp -> VP ;
|
||||||
|
-- UseComp comp = comp ;
|
||||||
|
|
||||||
|
-- -- : VP -> Adv -> VP ; -- sleep here
|
||||||
|
-- AdvVP vp adv = vp ** {
|
||||||
|
-- s = \\vf,pol => vp.s ! vf ! pol ++ adv.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
-- -- : AdV -> VP -> VP ; -- always sleep
|
||||||
|
-- AdVVP adv vp = vp ** {
|
||||||
|
-- s = \\vf,pol => vp.s ! vf ! pol ++ adv.s
|
||||||
|
-- } ;
|
||||||
|
|
||||||
|
--{-
|
||||||
|
-- -- : VPSlash -> Adv -> VPSlash ; -- use (it) here
|
||||||
|
-- AdvVPSlash = insertAdv ;
|
||||||
|
|
||||||
|
-- -- : VP -> Adv -> VP ; -- sleep , even though ...
|
||||||
|
-- ExtAdvVP vp adv = ;
|
||||||
|
|
||||||
|
-- -- : AdV -> VPSlash -> VPSlash ; -- always use (it)
|
||||||
|
-- AdVVPSlash adv vps = vps ** { adv = adv.s ++ vps.adv } ;
|
||||||
|
---}
|
||||||
|
-- -- : VP -> Prep -> VPSlash ; -- live in (it)
|
||||||
|
-- -- VPSlashPrep vp prep = vp ** {c2 = prep} ;
|
||||||
|
|
||||||
|
|
||||||
|
--2 Complements to copula
|
||||||
|
|
||||||
|
-- Adjectival phrases, noun phrases, and adverbs can be used.
|
||||||
|
|
||||||
|
-- -- : AP -> Comp ;
|
||||||
|
-- CompAP ap = useComp ap.s ;
|
||||||
|
|
||||||
|
-- -- : CN -> Comp ;
|
||||||
|
-- CompCN cn = useComp (cn.s ! NF Sg Bare) ;
|
||||||
|
|
||||||
|
-- -- NP -> Comp ;
|
||||||
|
-- CompNP np = useComp (np.s ! Bare) ;
|
||||||
|
|
||||||
|
-- -- : Adv -> Comp ;
|
||||||
|
-- --"Both bukan and tidak may negate prepositional phrases. The choice of either
|
||||||
|
-- --depends on whether it is the noun within the phrase that is being negated
|
||||||
|
-- --or the implied verb associated with the phrase." Mintz p. 281 (10.1.4)
|
||||||
|
-- CompAdv adv = useV {s = \\_ => adv.s} ;
|
||||||
|
|
||||||
|
-- -- : VP -- Copula alone;
|
||||||
|
-- UseCopula = useV copula ;
|
||||||
|
|
||||||
|
--}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user