forked from GitHub/gf-core
working set of 8 Lang
This commit is contained in:
@@ -90,8 +90,12 @@ lincat
|
||||
|
||||
RP = {s : RelForm => Str ; g : RelGen} ;
|
||||
RS = {s : Mode => Gender => Number => Person => Str} ;
|
||||
RCl = {s : Bool => ClForm => Gender => Number => Person => Str} ;
|
||||
|
||||
---- RCl = {s : Bool => ClForm => Gender => Number => Person => Str} ;
|
||||
RCl = {
|
||||
s1 : Gender => Number => Person => Str ;
|
||||
s2 : Bool => ClForm => Gender => Number => Person => Str ;
|
||||
s3 : Bool => Str
|
||||
} ;
|
||||
IP = {s : CaseA => Str ; g : Gender ; n : Number} ;
|
||||
IDet = {s : Gender => Str ; n : Number} ;
|
||||
QS = {s : QuestForm => Str} ;
|
||||
|
||||
@@ -166,13 +166,14 @@ incomplete concrete ClauseRomance of Clause = CategoriesRomance **
|
||||
RPredV2 np v y =
|
||||
sats2rel
|
||||
(\g,n,p -> mkSatsObject (relNounPhrase np g n p) v y) ;
|
||||
|
||||
RPredV3 subj verb obj1 obj2 =
|
||||
sats2rel
|
||||
(\g,n,p ->
|
||||
insertObject (mkSatsObject (relNounPhrase subj g n p) verb
|
||||
obj1) verb.c3 verb.s3 obj2
|
||||
) ;
|
||||
---- bracket these just because they are so expensive (25% of gfc)
|
||||
{- ----
|
||||
RPredReflV2 subj verb =
|
||||
sats2rel (\g,n,p ->
|
||||
mkSatsObject (relNounPhrase subj g n p)
|
||||
@@ -218,7 +219,8 @@ incomplete concrete ClauseRomance of Clause = CategoriesRomance **
|
||||
(mkSatsObject (relNounPhrase subj g n p) verb obj)
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p)
|
||||
) ;
|
||||
{- ----
|
||||
-}
|
||||
{- ---- some type error/bug here
|
||||
RPredSubjV2V subj verb obj vp =
|
||||
sats2rel (\g,n,p ->
|
||||
insertExtrapos
|
||||
|
||||
@@ -69,9 +69,15 @@ lin
|
||||
UseCl tp cl =
|
||||
{s = \\m => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a m} ;
|
||||
UseRCl tp cl =
|
||||
{s = \\m,g,n,p => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a m ! g ! n ! p} ;
|
||||
{s = \\m,g,n,p => tp.s ++
|
||||
cl.s1 ! g ! n ! p ++
|
||||
cl.s2 ! tp.b ! useClForm tp.t tp.a m ! g ! n ! p ++
|
||||
cl.s3 ! tp.b
|
||||
} ;
|
||||
UseQCl tp cl =
|
||||
{s = \\q => tp.s ++ cl.s ! tp.b ! useClForm tp.t tp.a Ind ! q} ;
|
||||
UseVCl po a cl =
|
||||
{s = \\v,g,n,p => po.s ++ a.s ++ cl.s ! po.p ! a.a ! v ! g ! n ! p} ;
|
||||
|
||||
PosTP t a = {s = t.s ++ a.s ; b = True ; t = t.t ; a = a.a} ;
|
||||
NegTP t a = {s = t.s ++ a.s ; b = False ; t = t.t ; a = a.a} ;
|
||||
|
||||
@@ -725,7 +725,7 @@ oper
|
||||
--
|
||||
-- Relative pronouns are inflected in
|
||||
-- gender, number, and case. They can also have an inherent case,
|
||||
-- but this case if 'variable' in the sense that it
|
||||
-- but this case is 'variable' in the sense that it
|
||||
-- is sometimes just mediated from the correlate
|
||||
-- ("homme qui est bon"), sometimes inherent to the
|
||||
-- pronominal phrase itself ("homme dont la mère est bonne").
|
||||
@@ -734,7 +734,13 @@ oper
|
||||
|
||||
RelPron : Type = {s : RelFormA => Str ; g : RelGen} ;
|
||||
|
||||
RelClause : Type = {s : Bool => ClForm => Gender => Number => Person => Str} ;
|
||||
---- RelClause : Type = {s : Bool => ClForm => Gender => Number => Person => Str} ;
|
||||
RelClause : Type = {
|
||||
s1 : Gender => Number => Person => Str ;
|
||||
s2 : Bool => ClForm => Gender => Number => Person => Str ;
|
||||
s3 : Bool => Str
|
||||
} ;
|
||||
|
||||
RelSentence : Type = {s : Mode => Gender => Number => Person => Str} ;
|
||||
|
||||
mkGenRel : RelGen -> Gender -> Gender = \rg,g -> case rg of {
|
||||
@@ -762,15 +768,18 @@ oper
|
||||
-- slash expressions ("que je vois", "dont je parle").
|
||||
|
||||
relSlash : RelPron -> ClauseSlashNounPhrase -> RelClause = \dont,jeparle ->
|
||||
{s = \\b,cl,g,n,p =>
|
||||
jeparle.s2 ++ allRelForms dont g n jeparle.c ++ jeparle.s ! b ! cl
|
||||
{s1 = \\g,n,p => jeparle.s2 ++ allRelForms dont g n jeparle.c ;
|
||||
s2 = \\b,cl,g,n,p => jeparle.s ! b ! cl ;
|
||||
s3 = \\_ => [] ---- should be parts of jeparle
|
||||
} ;
|
||||
|
||||
-- A 'degenerate' relative clause is the one often used in mathematics, e.g.
|
||||
-- "nombre x tel que x soit pair".
|
||||
|
||||
relSuch : Clause -> RelClause = \A ->
|
||||
{s = \\b,cl,g,n,p => suchPron g n ++ embedConj ++ A.s ! b ! cl
|
||||
{s1 = \\g,n,p => suchPron g n ;
|
||||
s2 = \\b,cl,g,n,p => embedConj ++ A.s ! b ! cl ;
|
||||
s3 = \\_ => [] ---- should be parts of A
|
||||
} ;
|
||||
|
||||
suchPron : Gender -> Number -> Str ;
|
||||
@@ -1307,17 +1316,46 @@ oper
|
||||
|
||||
negNe, negPas : Str ;
|
||||
|
||||
|
||||
sats2quest : Sats -> Question = \x ->
|
||||
let cl = sats2clause x
|
||||
in
|
||||
{s = \\b,f,_ => cl.s ! b ! f} ;
|
||||
|
||||
sats2rel : (Gender -> Number -> Person -> Sats) -> RelClause = \s ->
|
||||
{s1 = \\g,n,p =>
|
||||
let
|
||||
sats = s g n p ;
|
||||
in
|
||||
sats.s1 ;
|
||||
s2 = \\b,cf,g,n,p =>
|
||||
let
|
||||
sats = s g n p ;
|
||||
|
||||
lui = sats.s3 ;
|
||||
dire = verbClForm {s = sats.s4 ; aux = sats.aux}
|
||||
cf sats.g sats.n sats.p sats.g2 sats.n2 ;
|
||||
ai = dire.p1 ;
|
||||
toujours = sats.s5 ;
|
||||
dit = dire.p2 ;
|
||||
ne = if_then_Str b [] negNe ;
|
||||
pas = if_then_Str b [] negPas ;
|
||||
in
|
||||
ne ++ lui ++ ai ++ toujours ++ pas ++ dit ;
|
||||
s3 = \\b =>
|
||||
let
|
||||
sats = s Masc Sg P3 ;
|
||||
directement = sats.s6 ;
|
||||
oui = sats.s7 ! b
|
||||
in
|
||||
directement ++ oui
|
||||
} ;
|
||||
|
||||
{-
|
||||
sats2rel : (Gender -> Number -> Person -> Sats) -> RelClause = \sats ->
|
||||
{s = \\b,f,g,n,p =>
|
||||
(sats2clause (sats g n p)).s ! b ! f
|
||||
} ;
|
||||
|
||||
-}
|
||||
relNounPhrase : RelPron -> Gender -> Number -> Person -> NounPhrase =
|
||||
\r,g,n,p -> {
|
||||
s = \\np => r.s ! npRelForm np ;
|
||||
|
||||
Reference in New Issue
Block a user