diff --git a/examples/phrasebook/SentencesFre.gf b/examples/phrasebook/SentencesFre.gf index cbc6db8c4..84d7b8cf0 100644 --- a/examples/phrasebook/SentencesFre.gf +++ b/examples/phrasebook/SentencesFre.gf @@ -1,7 +1,8 @@ concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [ QProp, IFemale, YouFamFemale, YouPolFemale, - PYesToNo + PYesToNo, + Superlative ] with (Syntax = SyntaxFre), @@ -9,6 +10,8 @@ concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [ (Lexicon = LexiconFre) ** open SyntaxFre, ExtraFre, Prelude in { + lincat + Superlative = {s : Ord ; isPre : Bool} ; lin QProp a = lin QS {s = \\_ => (EstcequeS (mkS a)).s} ; diff --git a/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf index 93b8355ff..d76107579 100644 --- a/examples/phrasebook/SentencesIta.gf +++ b/examples/phrasebook/SentencesIta.gf @@ -1,5 +1,6 @@ concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ - IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale + IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale, + mkPerson, Superlative ] with (Syntax = SyntaxIta), @@ -9,21 +10,21 @@ concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ lincat Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv ; } ; - - + Superlative = {s : A ; isPre : Bool} ; + lin IFemale = - {name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ; + {name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = PossFamQuant i_Pron} ; YouFamFemale = - {name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ; + {name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = PossFamQuant youSg_Pron} ; YouPolFemale = - {name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = mkQuant youPol_Pron}; + {name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = PossFamQuant youPol_Pron}; IMale = - {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = mkQuant i_Pron} ; + {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = PossFamQuant i_Pron} ; YouFamMale = - {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ; + {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = PossFamQuant youSg_Pron} ; YouPolMale = - {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ; + {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = PossFamQuant youPol_Pron} ; oper @@ -42,7 +43,8 @@ concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [ to = mkAdv kind.to name } ; - + mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p -> + {name = mkNP p ; isPron = True ; poss = PossFamQuant p} ; } diff --git a/examples/phrasebook/WordsDan.gf b/examples/phrasebook/WordsDan.gf index 619c1b40e..97d7a6467 100644 --- a/examples/phrasebook/WordsDan.gf +++ b/examples/phrasebook/WordsDan.gf @@ -140,7 +140,7 @@ concrete WordsDan of Words = SentencesDan ** ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDan.mkAdv in_Prep co)) ; ALove p q = mkCl p.name (dirV2 (regV "elske")) q.name ; AMarried p = mkCl p.name (mkA "gift") ; - AReady p = mkCl p.name (mkA "fardig") ; + AReady p = mkCl p.name (mkA "færdig") ; AScared p = mkCl p.name (mkA "bange") ; ASpeak p lang = mkCl p.name (mkV2 (mkV "tale")) lang ; AThirsty p = mkCl p.name (mkA "tørstig") ; diff --git a/examples/phrasebook/WordsFre.gf b/examples/phrasebook/WordsFre.gf index 9b6bbe0bf..7f65bcde6 100644 --- a/examples/phrasebook/WordsFre.gf +++ b/examples/phrasebook/WordsFre.gf @@ -199,15 +199,27 @@ lin -- modifiers of places - TheBest = mkSuperl L.good_A ; - TheClosest = mkSuperl L.near_A ; - TheCheapest = mkSuperl (compADeg {s = \\_ => (M.mkAdj "bon marché" "bon marché" "bon marché" "bon marché").s ; isPre = False ; lock_A = <>}) ; - TheMostExpensive = mkSuperl (mkA "cher") ; - TheMostPopular = mkSuperl (mkA "populair") ; - TheWorst = mkSuperl L.bad_A ; - - SuperlPlace sup p = placeNP sup p ; + TheBest = mkSuperl True L.good_A ; + TheClosest = mkSuperl False L.near_A ; + TheCheapest = mkSuperl False + (compADeg {s = \\_ => (M.mkAdj "bon marché" "bon marché" "bon marché" "bon marché").s ; + isPre = False ; lock_A = <>}) ; ---- + TheMostExpensive = mkSuperl False (mkA "cher") ; + TheMostPopular = mkSuperl False (mkA "populaire") ; + TheWorst = mkSuperl True L.bad_A ; + SuperlPlace sup kind = + let + det : Det = mkDet the_Art sup.s ; + name : NP = case sup.isPre of { + True => mkNP det kind.name ; -- le meilleur bar + False => mkNP the_Art (mkCN kind.name (mkNP det)) -- le bar le plus cher + } + in { + name = name ; + at = SyntaxFre.mkAdv kind.at name ; + to = SyntaxFre.mkAdv kind.to name + } ; -- transports @@ -252,8 +264,9 @@ lin en_Prep = mkPrep "en" ; par_Prep = mkPrep "par" ; - mkSuperl : A -> Det = \a -> SyntaxFre.mkDet the_Art (SyntaxFre.mkOrd a) ; - + mkSuperl : Bool -> A -> {s : Ord ; isPre : Bool} = \b,a -> + {s = SyntaxFre.mkOrd a ; isPre = b} ; + far_IAdv = ss "loin" ; distance_NP : NP = mkNP the_Det (mkN "distance" feminine) ; diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf index 8e5cd75dc..b350642bc 100644 --- a/examples/phrasebook/WordsIta.gf +++ b/examples/phrasebook/WordsIta.gf @@ -219,15 +219,25 @@ lin -- modifiers of places - TheBest = mkSuperl L.good_A ; - TheClosest = mkSuperl L.near_A ; - TheCheapest = mkSuperl (mkA "economico") ; - TheMostExpensive = mkSuperl (mkA "costoso") ; - TheMostPopular = mkSuperl (mkA "alla moda") ; - TheWorst = mkSuperl L.bad_A ; - - SuperlPlace sup p = placeNP sup p ; + TheBest = mkSuperl True L.good_A ; + TheClosest = mkSuperl False L.near_A ; + TheCheapest = mkSuperl False (mkA (mkA "economico") (mkA "meno caro")) ; + TheMostExpensive = mkSuperl False (mkA "costoso") ; + TheMostPopular = mkSuperl False (mkA "alla moda") ; + TheWorst = mkSuperl True L.bad_A ; + SuperlPlace sup kind = + let + det : Det = mkDet the_Art (mkOrd sup.s) ; + name : NP = case sup.isPre of { + True => mkNP det kind.name ; -- il migliore bar + False => mkNP the_Art (mkCN (mkAP (mkOrd sup.s)) kind.name) -- il bar più caro + } + in { + name = name ; + at = SyntaxIta.mkAdv kind.at name ; + to = SyntaxIta.mkAdv kind.to name + } ; -- auxiliaries @@ -249,10 +259,10 @@ lin by = E.PrepCN P.in_Prep n } ; - mkSuperl : A -> Det = \a -> SyntaxIta.mkDet the_Art (SyntaxIta.mkOrd a) ; + mkSuperl : Bool -> A -> {s : A ; isPre : Bool} = \b,a -> + {s = a ; isPre = b} ; open_A = mkA "aperto" ; closed_A = mkA "chiuso" ; - }