1
0
forked from GitHub/gf-core

working towards tram in 4 langs

This commit is contained in:
aarne
2006-01-20 23:03:50 +00:00
parent 6f89da4591
commit 29a4ef3172
25 changed files with 142 additions and 93 deletions

View File

@@ -1,4 +1,4 @@
--# -path=.:resource/abstract:resource/french:resource/romance:prelude --# -path=.:resource-1.0/abstract:resource-1.0/french:resource-1.0/common:resource-1.0/multimodal:resource-1.0/romance:prelude
concrete TramFre of Tram = TramI with concrete TramFre of Tram = TramI with
(Multimodal = MultimodalFre), (Multimodal = MultimodalFre),

5
examples/tram/TramGer.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:resource-1.0/abstract:resource-1.0/common:resource-1.0/multimodal:resource-1.0/german:prelude
concrete TramGer of Tram = TramI with
(Multimodal = MultimodalGer),
(Math = MathGer) ;

View File

@@ -7,11 +7,11 @@ concrete LangFre of Lang =
AdverbFre, AdverbFre,
-- NumeralFre, -- NumeralFre,
SentenceFre, SentenceFre,
-- QuestionFre, QuestionFre,
-- RelativeFre, -- RelativeFre,
-- ConjunctionFre, -- ConjunctionFre,
-- PhraseFre, PhraseFre,
-- TensedFre, TensedFre,
StructuralFre, StructuralFre,
BasicFre BasicFre
** { ** {

View File

@@ -1,2 +1,2 @@
concrete MathFre of Math = CatFre ** MathRomance with concrete MathFre of Math = CatFre ** MathRomance with
(DiffRomance = DiffFre) ; (ResRomance = ResFre) ;

View File

@@ -1,2 +1,2 @@
concrete PhraseFre of Phrase = CatFre, TenseX ** PhraseRomance with concrete PhraseFre of Phrase = CatFre, TenseX ** PhraseRomance with
(DiffRomance = DiffFre) ; (ResRomance = ResFre) ;

View File

@@ -1,2 +1,2 @@
concrete QuestionFre of Question = CatFre ** QuestionRomance with concrete QuestionFre of Question = CatFre ** QuestionRomance with
(DiffRomance = DiffFre) ; (ResRomance = ResFre) ;

View File

@@ -76,17 +76,17 @@ lin
-- some_NDet = mkDeterminerNum "quelques" "quelques" ; -- some_NDet = mkDeterminerNum "quelques" "quelques" ;
-- something_NP = mkNameNounPhrase ["quelque chose"] Masc ; -- something_NP = mkNameNounPhrase ["quelque chose"] Masc ;
somewhere_Adv = ss ["quelque part"] ; --- ne - pas somewhere_Adv = ss ["quelque part"] ; --- ne - pas
-- that_Det = mkDeterminer singular (pre {"ce" ; "cet" / voyelle}) "cette" ; --- that_Quant = {s = \\g,c => prepCase c ++ genForms "ce" "cette" ! g} ; ---- cet
-- that_NP = mkNameNounPhrase ["ça"] Masc ; that_NP = pn2np (mkPN ["ceci"] Masc) ;
there7from_Adv = ss "de là" ; there7from_Adv = ss ["de là"] ;
there7to_Adv = ss "là" ; --- y there7to_Adv = ss "là" ; --- y
there_Adv = ss "là" ; there_Adv = ss "là" ;
therefore_PConj = ss "donc" ; therefore_PConj = ss "donc" ;
-- these_NDet = mkDeterminerNum "ces" "ces" ; --- ci -- these_NDet = mkDeterminerNum "ces" "ces" ; --- ci
-- they_Pron = pronNounPhrase pronIls ; -- they_Pron = pronNounPhrase pronIls ;
-- they8fem_Pron = pronNounPhrase pronElles ; -- they8fem_Pron = pronNounPhrase pronElles ;
-- this_Det = mkDeterminer singular (pre {"ce" ; "cet" / voyelle}) "cette" ; --- ci this_Quant = {s = \\g,c => prepCase c ++ genForms "ce" "cette" ! g} ; ---- cet
-- this_NP = mkNameNounPhrase ["ceci"] Masc ; this_NP = pn2np (mkPN ["ceci"] Masc) ;
-- those_NDet = mkDeterminerNum "ces" "ces" ; --- là -- those_NDet = mkDeterminerNum "ces" "ces" ; --- là
thou_Pron = mkPronoun thou_Pron = mkPronoun
"tu" (elision "t") (elision "t") "toi" "ton" (elisPoss "t") "tes" "tu" (elision "t") (elision "t") "toi" "ton" (elisPoss "t") "tes"

View File

@@ -1,2 +1,2 @@
concrete TensedFre of Tensed = CatFre, TenseX ** TensedRomance with concrete TensedFre of Tensed = CatFre, TenseX ** TensedRomance with
(DiffRomance = DiffFre) ; (ResRomance = ResFre) ;

View File

@@ -1,26 +1,28 @@
--concrete MathGer of Math = CatGer ** open Prelude, ResGer in { concrete MathGer of Math = CatGer ** open Prelude, ResGer in {
--
--lin lin
-- SymbPN i = {s = \\c => i.s ; a = agrP3 Sg} ; --- c SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c
-- IntPN i = {s = \\c => i.s ; a = agrP3 Sg} ; --- c IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c
-- CNIntNP cn i = { {-
-- s = \\c => (cn.s ! Sg ! Nom ++ i.s) ; CNIntNP cn i = {
-- a = agrP3 Sg s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s) ;
-- } ; a = agrP3 cn.g Sg
-- CNSymbNP det cn xs = { } ;
-- s = \\c => det.s ++ cn.s ! det.n ! c ++ xs.s ; CNSymbNP det cn xs = let g = cn.g in {
-- a = agrP3 det.n s = \\c => det.s ! cn.isMod ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ;
-- } ; a = agrP3 g det.n
-- } ;
--lincat -}
-- lincat
-- Symb, SymbList = SS ;
-- Symb, SymbList = SS ;
--lin
-- lin
-- MkSymb s = s ;
-- MkSymb s = s ;
-- BaseSymb = infixSS "and" ;
-- ConsSymb = infixSS "," ; BaseSymb = infixSS "und" ;
-- ConsSymb = infixSS "," ;
--}
}

View File

@@ -1,6 +1,4 @@
--# -path=.:../english/:../abstract:../common:prelude --# -path=.:../english/:../abstract:../common:prelude
concrete DemonstrativeEng of Demonstrative = CatEng, TenseX ** DemonstrativeI with concrete DemonstrativeEng of Demonstrative = CatEng, TenseX ** DemonstrativeI with
(Test = TestEng), (Lang = LangEng) ;
(Structural = StructuralEng) ;

View File

@@ -0,0 +1,2 @@
concrete DemonstrativeFre of Demonstrative = CatFre, TenseX ** DemonstrativeI with
(Lang = LangFre) ;

View File

@@ -0,0 +1,4 @@
--# -path=.:../german/:../abstract:../common:prelude
concrete DemonstrativeGer of Demonstrative = CatGer, TenseX ** DemonstrativeI with
(Lang = LangGer) ;

View File

@@ -1,5 +1,5 @@
incomplete concrete DemonstrativeI of Demonstrative = Cat, TenseX ** incomplete concrete DemonstrativeI of Demonstrative = Cat, TenseX **
open Prelude, Test, Structural, ParamX, DemRes in { open Prelude, Lang, ParamX, DemRes in {
lincat lincat
@@ -24,8 +24,8 @@ incomplete concrete DemonstrativeI of Demonstrative = Cat, TenseX **
mkDem mkDem
{s : Polarity => Str} {s : Polarity => Str}
(polCases (polCases
(UttS (PosCl cl)) (UttS (UseCl TPres ASimul PPos cl))
(UttS (NegCl cl))) (UttS (UseCl TPres ASimul PNeg cl)))
(concatPoint np vp) ; (concatPoint np vp) ;
MQPredVP np vp = MQPredVP np vp =
@@ -34,8 +34,8 @@ incomplete concrete DemonstrativeI of Demonstrative = Cat, TenseX **
mkDem mkDem
{s : Polarity => Str} {s : Polarity => Str}
(polCases (polCases
(UttQS (PosQCl cl)) (UttQS (UseQCl TPres ASimul PPos cl))
(UttQS (NegQCl cl))) (UttQS (UseQCl TPres ASimul PNeg cl)))
(concatPoint np vp) ; (concatPoint np vp) ;
MQuestVP np vp = MQuestVP np vp =
@@ -44,8 +44,8 @@ incomplete concrete DemonstrativeI of Demonstrative = Cat, TenseX **
mkDem mkDem
{s : Polarity => Str} {s : Polarity => Str}
(polCases (polCases
(UttQS (PosQCl cl)) (UttQS (UseQCl TPres ASimul PPos cl))
(UttQS (NegQCl cl))) (UttQS (UseQCl TPres ASimul PNeg cl)))
vp ; vp ;
MImpVP vp = MImpVP vp =
@@ -80,9 +80,9 @@ incomplete concrete DemonstrativeI of Demonstrative = Cat, TenseX **
that_MNP = mkDem NP that_NP ; that_MNP = mkDem NP that_NP ;
thisDet_MNP cn = thisDet_MNP cn =
mkDem NP (DetCN (MkDet NoPredet this_Quant NoNum NoOrd) cn) ; mkDem NP (DetCN (DetSg this_Quant NoOrd) cn) ;
thatDet_MNP cn = thatDet_MNP cn =
mkDem NP (DetCN (MkDet NoPredet that_Quant NoNum NoOrd) cn) ; mkDem NP (DetCN (DetSg that_Quant NoOrd) cn) ;
here_MAdv = mkDem Adv here_Adv ; here_MAdv = mkDem Adv here_Adv ;
here7from_MAdv = mkDem Adv here7from_Adv ; here7from_MAdv = mkDem Adv here7from_Adv ;

View File

@@ -1,4 +1,4 @@
concrete DemonstrativeSwe of Demonstrative = CatSwe, TenseX ** DemonstrativeI with concrete DemonstrativeSwe of Demonstrative = CatSwe, TenseX ** DemonstrativeI with
(Test = TestSwe), (Lang = LangSwe) ;
(Structural = StructuralSwe) ;

View File

@@ -0,0 +1,19 @@
--# -path=.:../french/:../romancs:../abstract:../common:prelude
concrete MultimodalFre of Multimodal =
NounFre,
-- Verb,
AdjectiveFre,
AdverbFre,
-- NumeralFre,
-- Sentence,
-- Question,
-- Relative,
-- Conjunction,
-- Phrase,
-- Tensed,
StructuralFre,
DemonstrativeFre,
BasicFre
** {} ;

View File

@@ -0,0 +1,18 @@
--# -path=.:../german/:../abstract:../common:prelude
concrete MultimodalGer of Multimodal =
NounGer,
-- Verb,
AdjectiveGer,
AdverbGer,
NumeralGer,
-- Sentence,
-- Question,
-- Relative,
-- Conjunction,
-- Phrase,
-- Tensed,
StructuralGer,
DemonstrativeGer,
BasicGer
** {} ;

View File

@@ -1,9 +1,11 @@
incomplete concrete MathRomance of Math = incomplete concrete MathRomance of Math =
CatRomance ** open Prelude, ResRomance, DiffRomance in { CatRomance ** open Prelude, CommonRomance, ResRomance in {
lin lin
SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c SymbPN i = {s = i.s ; g = Masc} ;
IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c IntPN i = {s = i.s ; g = Masc} ;
{-
CNIntNP cn i = { CNIntNP cn i = {
s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s) ; s = \\c => (cn.s ! Sg ! DIndef ! Nom ++ i.s) ;
a = agrP3 cn.g Sg a = agrP3 cn.g Sg
@@ -12,6 +14,7 @@ lin
s = \\c => det.s ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ; s = \\c => det.s ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ;
a = agrP3 g det.n a = agrP3 g det.n
} ; } ;
-}
lincat lincat
@@ -21,7 +24,7 @@ lin
MkSymb s = s ; MkSymb s = s ;
BaseSymb = infixSS conjAnd ; BaseSymb = infixSS "et" ; ----
ConsSymb = infixSS "," ; ConsSymb = infixSS "," ;
} }

View File

@@ -14,11 +14,7 @@ incomplete concrete NounRomance of Noun =
c = Clit0 c = Clit0
} ; } ;
UsePN pn = { UsePN = pn2np ;
s = \\c => prepCase (npform2case c) ++ pn.s ;
a = agrP3 pn.g Sg ;
c = Clit0
} ;
UsePron p = p ; UsePron p = p ;

View File

@@ -1,24 +1,24 @@
incomplete concrete PhraseRomance of Phrase = incomplete concrete PhraseRomance of Phrase =
CatRomance, TenseX ** open DiffRomance, ResRomance, Prelude in { CatRomance, TenseX ** open CommonRomance, ResRomance, Prelude in {
lin lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = {s = s.s ! Main} ; UttS s = {s = s.s ! Indic} ;
UttQS qs = {s = qs.s ! QDir} ; UttQS qs = {s = qs.s ! QDir} ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ; UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! aagr Fem Sg} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ; UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! aagr Fem Pl} ;
UttIP ip = {s = ip.s ! nominative} ; --- Acc also UttIP ip = {s = ip.s ! Nom} ; --- Acc also
UttIAdv iadv = iadv ; UttIAdv iadv = iadv ;
UttNP np = {s = np.s ! accusative} ; UttNP np = {s = np.s ! Ton Nom} ;
UttVP vp = {s = infMark ++ infVP vp (agrP3 Utr Sg)} ; ---- UttVP vp = {s = infVP vp (agrP3 Utr Sg)} ;
UttAdv adv = adv ; UttAdv adv = adv ;
NoPConj = {s = []} ; NoPConj = {s = []} ;
PConjConj conj = conj ; PConjConj conj = conj ;
NoVoc = {s = []} ; NoVoc = {s = []} ;
VocNP np = {s = "," ++ np.s ! nominative} ; VocNP np = {s = "," ++ np.s ! Ton Nom} ;
} }

View File

@@ -1,5 +1,5 @@
incomplete concrete QuestionRomance of Question = incomplete concrete QuestionRomance of Question =
CatRomance ** open DiffRomance, ResRomance in { CatRomance ** open CommonRomance, ResRomance in {
flags optimize=all_subs ; flags optimize=all_subs ;
@@ -9,23 +9,19 @@ incomplete concrete QuestionRomance of Question =
s = \\t,a,p => s = \\t,a,p =>
let cls = cl.s ! t ! a ! p let cls = cl.s ! t ! a ! p
in table { in table {
QDir => cls ! Inv ; QDir => cls ! Indic ;
QIndir => subjIf ++ cls ! Sub QIndir => "si" ++ cls ! Indic ---- subjIf
} }
} ; } ;
QuestVP qp vp = { QuestVP qp vp = {
s = \\t,a,b,q => s = \\t,a,b,_ =>
let let
somo = case q of { cl = mkClause (qp.s ! Nom) (agrP3 qp.a.g qp.a.n) vp
QIndir => <"som",Sub> ;
_ => <[], Main>
} ;
cl = mkClause (qp.s ! nominative ++ somo.p1) {gn = qp.gn ; p = P3} vp
in in
cl.s ! t ! a ! b ! somo.p2 cl.s ! t ! a ! b ! Indic
} ; } ;
{-
QuestSlash ip slash = { QuestSlash ip slash = {
s = \\t,a,p => s = \\t,a,p =>
let let
@@ -62,5 +58,5 @@ incomplete concrete QuestionRomance of Question =
idet.s ! g ++ num.s ! g ++ ord.s ++ cn.s ! idet.n ! idet.det ! caseNP c ; idet.s ! g ++ num.s ! g ++ ord.s ++ cn.s ! idet.n ! idet.det ! caseNP c ;
gn = gennum g idet.n gn = gennum g idet.n
} ; } ;
-}
} }

View File

@@ -26,6 +26,12 @@ oper
complGen : Compl = {s = [] ; c = genitive ; isDir = False} ; complGen : Compl = {s = [] ; c = genitive ; isDir = False} ;
complDat : Compl = {s = [] ; c = dative ; isDir = True} ; complDat : Compl = {s = [] ; c = dative ; isDir = True} ;
pn2np : {s : Str ; g : Gender} -> Pronoun = \pn -> {
s = \\c => prepCase (npform2case c) ++ pn.s ;
a = agrP3 pn.g Sg ;
c = Clit0
} ;
npform2case : NPForm -> Case = \p -> case p of { npform2case : NPForm -> Case = \p -> case p of {
Ton x => x ; Ton x => x ;
Aton x => x ; Aton x => x ;

View File

@@ -5,18 +5,18 @@ incomplete concrete SentenceRomance of Sentence =
lin lin
PredVP np vp = mkClause (np.s ! Aton Nom) np.a vp ; PredVP np vp = mkClause (np.s ! Aton Nom) np.a vp ;
{-
PredSCVP sc vp = mkClause sc.s (agrP3 neutrum Sg) vp ; -- PredSCVP sc vp = mkClause sc.s (agrP3 neutrum Sg) vp ;
ImpVP vp = { ImpVP vp = {
s = \\pol,n => s = \\pol,aag =>
let let
agr = {gn = gennum utrum n ; p = P2} ; agr = aag ** {p = P2} ;
verb = vp.s ! VPImperat ; verb = (vp.s ! VPImperat).fin ! agr
in in
verb.fin ++ vp.a1 ! pol ++ verb.inf ++ vp.n2 ! agr ++ vp.a2 ++ vp.ext verb ++ vp.comp ! agr ++ vp.ext --- neg,clit
} ; } ;
{-
SlashV2 np v2 = SlashV2 np v2 =
mkClause mkClause
(np.s ! nominative) np.a (np.s ! nominative) np.a

View File

@@ -6,6 +6,6 @@ incomplete concrete TensedRomance of Tensed = CatRomance, TenseX **
lin lin
UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ; UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ;
UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ;
UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; -- UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ;
} }

View File

@@ -9,7 +9,7 @@ lin
a = agrP3 cn.g Sg a = agrP3 cn.g Sg
} ; } ;
CNSymbNP det cn xs = let g = cn.g in { CNSymbNP det cn xs = let g = cn.g in {
s = \\c => det.s ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ; s = \\c => det.s ! cn.isMod ! g ++ cn.s ! det.n ! det.det ! caseNP c ++ xs.s ;
a = agrP3 g det.n a = agrP3 g det.n
} ; } ;

View File

@@ -1,2 +1,2 @@
concrete MathSwe of Math = CatSwe ** MathScand with concrete MathSwe of Math = CatSwe ** MathScand with
(DiffScand = DiffSwe) ; (ResScand = ResSwe) ;