1
0
forked from GitHub/gf-core

Attempto complete up to spec

This commit is contained in:
aarne
2008-11-15 20:08:09 +00:00
parent 373b4d6828
commit f30560efcc
14 changed files with 71 additions and 13 deletions

View File

@@ -62,7 +62,6 @@ fun ten_Card : Card ;
fun pnNP : PN -> NP ; fun pnNP : PN -> NP ;
fun intNP : Int -> NP ; fun intNP : Int -> NP ;
fun intNegNP : Int -> NP ;
fun floatNP : Float -> NP ; fun floatNP : Float -> NP ;
@@ -112,7 +111,7 @@ fun unit_ofNP : Card -> Unit -> CN -> NP ; -- 3 kg of apples
fun unit_ofMassNP : Card -> Unit -> MCN -> NP ; -- 3 l of water fun unit_ofMassNP : Card -> Unit -> MCN -> NP ; -- 3 l of water
fun apposVarCN : CN -> Var -> CN ; -- a man X fun apposVarCN : CN -> Var -> CN ; -- a man X
fun varNP : Var -> NP ; fun termNP : Term -> NP ;
fun conjNP : NP -> NP -> NP ; fun conjNP : NP -> NP -> NP ;
@@ -189,7 +188,8 @@ fun modVP : VP -> Adv -> VP ;
fun thereNP : NP -> S ; -- there is/are fun thereNP : NP -> S ; -- there is/are
-- 3.3 -- 3.3
-- Boolean formulas = \= < > <= >=
fun formulaS : Formula -> S ;
-- 3.4.1 -- 3.4.1

View File

@@ -1,6 +1,7 @@
incomplete concrete AttemptoI of Attempto = SymbolsC ** open incomplete concrete AttemptoI of Attempto = SymbolsC ** open
Syntax, Syntax,
Symbolic, Symbolic,
Prelude,
LexAttempto LexAttempto
in { in {
@@ -64,7 +65,6 @@ lin ten_Card = mkCard n10_Numeral ;
lin pnNP = mkNP ; lin pnNP = mkNP ;
lin intNP = symb ; lin intNP = symb ;
lin floatNP = symb ; lin floatNP = symb ;
--lin intNegNP : Int -> NP ;
lin it_NP = mkNP it_Pron ; lin it_NP = mkNP it_Pron ;
lin he_NP = mkNP he_Pron ; lin he_NP = mkNP he_Pron ;
@@ -105,7 +105,7 @@ lin unit_ofMassNP ca u cn = mkNP (mkNP ca u) (mkAdv part_Prep (mkNP cn)) ;
lin apposVarCN cn v = mkCN cn (symb v) ; lin apposVarCN cn v = mkCN cn (symb v) ;
lin varNP x = symb x ; lin termNP x = symb (ss x.s) ;
-- 2.2.1 -- 2.2.1
@@ -186,8 +186,8 @@ lin thereNP np = mkS (mkCl np) ;
-- 3.3 -- 3.3
-- Boolean formulas = \= < > <= >=
lin formulaS f = symb (ss f.s) ;
-- 3.4.1 -- 3.4.1
@@ -233,9 +233,8 @@ lin when_IAdv = Syntax.when_IAdv ;
lin whoSg_IP = Syntax.whoSg_IP ; lin whoSg_IP = Syntax.whoSg_IP ;
lin whoPl_IP = Syntax.whoPl_IP ; lin whoPl_IP = Syntax.whoPl_IP ;
lin there_ipQS ip = mkQS (mkQCl ip) ; ---- who is there, not there is who
--lin there_ipQS : IP -> QS ; -- there is who lin whoseIP = mkIP whose_IDet ;
--lin whoseIP : CN -> IP ; -- whose dog
-- 3.6 -- 3.6

View File

@@ -22,4 +22,5 @@ oper
comma_and_Conj : Conj ; comma_and_Conj : Conj ;
comma_or_Conj : Conj ; comma_or_Conj : Conj ;
whose_IDet : IDet ;
} }

View File

@@ -29,5 +29,6 @@ oper
comma_or_Conj = M.mkConj [] ", or" singular ; comma_or_Conj = M.mkConj [] ", or" singular ;
slash_Conj = M.mkConj [] "/" singular ; slash_Conj = M.mkConj [] "/" singular ;
whose_IDet = M.mkIDet "whose" singular ;
} }

View File

@@ -23,5 +23,6 @@ oper
comma_or_Conj = mkConj [] ", ou" singular ; comma_or_Conj = mkConj [] ", ou" singular ;
slash_Conj = mkConj [] "/" singular ; slash_Conj = mkConj [] "/" singular ;
whose_IDet = mkIDet (mkIQuant "de qui") ; ----
} }

View File

@@ -23,5 +23,6 @@ oper
comma_or_Conj = mkConj [] ", oder" singular ; comma_or_Conj = mkConj [] ", oder" singular ;
slash_Conj = mkConj [] "/" singular ; slash_Conj = mkConj [] "/" singular ;
whose_IDet = mkIDet (mkIQuant "wessen") ;
} }

View File

@@ -21,6 +21,7 @@ oper
comma_and_Conj = mkConj [] ", och" plural ; comma_and_Conj = mkConj [] ", och" plural ;
comma_or_Conj = mkConj [] ", eller" singular ; comma_or_Conj = mkConj [] ", eller" singular ;
slash_Conj = mkConj [] "/" singular ; slash_Conj = mkConj [] "/" singular ;
whose_IDet = mkIDet (mkIQuant "vems" "vems" "vems" dDefIndef) ;
} }

View File

@@ -1,6 +1,21 @@
abstract Symbols = { abstract Symbols = {
cat Var ; cat Var ; Formula ; Term ;
fun plus_Term : Term -> Term -> Term ;
fun minus_Term : Term -> Term -> Term ;
fun div_Term : Term -> Term -> Term ;
fun times_Term : Term -> Term -> Term ;
fun neg_Term : Term -> Term ;
fun int_Term : Int -> Term ;
fun var_Term : Var -> Term ;
fun eq_Formula : Term -> Term -> Formula ;
fun lt_Formula : Term -> Term -> Formula ;
fun gt_Formula : Term -> Term -> Formula ;
fun le_Formula : Term -> Term -> Formula ;
fun ge_Formula : Term -> Term -> Formula ;
fun ne_Formula : Term -> Term -> Formula ;
fun X_Var : Var ; fun X_Var : Var ;
fun Y_Var : Var ; fun Y_Var : Var ;

View File

@@ -1,7 +1,24 @@
concrete SymbolsC of Symbols = open Prelude in { concrete SymbolsC of Symbols = open Precedence, Prelude in {
lincat Term = TermWithPrec ;
lincat Formula = SS ;
lincat Var = SS ; lincat Var = SS ;
lin plus_Term = mkpInfixL "+" p1 ;
lin minus_Term = mkpInfixL "-" p1 ;
lin div_Term = mkpInfixL "/" p2 ;
lin times_Term = mkpInfixL "*" p2 ;
lin neg_Term = mkpFun1 "-" ;
lin int_Term i = mkpConst i.s ;
lin var_Term i = mkpConst i.s ;
lin eq_Formula = infixSS "=" ;
lin lt_Formula = infixSS "<" ;
lin gt_Formula = infixSS ">" ;
lin le_Formula = infixSS "=<" ;
lin ge_Formula = infixSS ">=" ;
lin ne_Formula = infixSS "\\=" ;
lin X_Var = ss "X" ; lin X_Var = ss "X" ;
lin Y_Var = ss "Y" ; lin Y_Var = ss "Y" ;

View File

@@ -1378,6 +1378,13 @@ incomplete resource Constructors = open Grammar in {
= AdvIP = AdvIP
} ; } ;
mkIDet = overload {
mkIDet : IQuant -> Num -> IDet -- which (songs)
= \i,nu -> IdetQuant i nu ;
mkIDet : IQuant -> IDet -- which (song)
= \i -> IdetQuant i NumSg ;
} ;
whichSg_IDet : IDet = IdetQuant which_IQuant NumSg ; whichSg_IDet : IDet = IdetQuant which_IQuant NumSg ;
whichPl_IDet : IDet = IdetQuant which_IQuant NumPl ; whichPl_IDet : IDet = IdetQuant which_IQuant NumPl ;

View File

@@ -9,5 +9,7 @@ oper
{s = x ; lock_Subj = <>} ; {s = x ; lock_Subj = <>} ;
mkNP : Str -> Number -> NP = \s,n -> mkNP : Str -> Number -> NP = \s,n ->
regNP s n ** {lock_NP = <>} ; regNP s n ** {lock_NP = <>} ;
mkIDet : Str -> Number -> IDet = \s,n ->
{s = s ; n = n ; lock_IDet = <>} ;
} }

View File

@@ -10,4 +10,7 @@ oper
mkSubjSubj : Str -> Subj = \x -> mkSubjSubj : Str -> Subj = \x ->
{s = x ; m = Conjunct ; lock_Subj = <>} ; {s = x ; m = Conjunct ; lock_Subj = <>} ;
mkIQuant : Str -> IQuant = \s ->
{s = \\_,_,c => prepCase c ++ s ; lock_IQuant = <>} ;
} }

View File

@@ -7,5 +7,7 @@ oper
{s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ;
mkSubj : Str -> Subj = \x -> mkSubj : Str -> Subj = \x ->
{s = x ; lock_Subj = <>} ; {s = x ; lock_Subj = <>} ;
mkIQuant : Str -> IQuant = \s ->
{s = \\_,_,_ => s ; lock_IQuant = <>} ;
} }

View File

@@ -1,11 +1,19 @@
--# -path=.:../scandinavian:../common:../abstract --# -path=.:../scandinavian:../common:../abstract
resource MakeStructuralSwe = open CatSwe, ParadigmsSwe, MorphoSwe, Prelude in { resource MakeStructuralSwe = open CatSwe, ParadigmsSwe,
(P=ParadigmsSwe), MorphoSwe, Prelude in {
oper oper
mkConj : Str -> Str -> Number -> Conj = \x,y,n -> mkConj : Str -> Str -> P.Number -> Conj = \x,y,n ->
{s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ;
mkSubj : Str -> Subj = \x -> mkSubj : Str -> Subj = \x ->
{s = x ; lock_Subj = <>} ; {s = x ; lock_Subj = <>} ;
mkIQuant : Str -> Str -> Str -> DetSpecies -> IQuant = \vilken,vilket,vilka,d ->
{s = table (P.Number)
[table (P.Gender) [vilken;vilket] ; table (P.Gender) [vilka;vilka]] ;
det = d ; lock_IQuant = <>} ;
dDefIndef : DetSpecies = DDef Indef ;
---- other DetSpecies
} }