forked from GitHub/gf-core
regenerated clones with complete abstract and ready-maked Lexicon-based words in Phrasebook
This commit is contained in:
@@ -2,6 +2,7 @@ module Main where
|
|||||||
|
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
|
import Data.Char
|
||||||
import System.Cmd
|
import System.Cmd
|
||||||
import System.Directory
|
import System.Directory
|
||||||
import System.Environment
|
import System.Environment
|
||||||
@@ -10,17 +11,21 @@ import System.Exit
|
|||||||
|
|
||||||
-- To clone a project from one language to another:
|
-- To clone a project from one language to another:
|
||||||
--
|
--
|
||||||
-- 1. for each Module in modules, copy ModuleFROM to ModuleTO
|
-- 1. for each Module in 'modules', copy ModuleFROM to ModuleTO
|
||||||
-- 2. in each ModuleTO, replace substrings FROM by TO, if not prefixes of an Ident
|
-- 2. in each ModuleTO, replace substrings FROM by TO, if not prefixes of an Ident
|
||||||
-- 3. in each ModuleTO in specifics, comment out every line in the body
|
-- 3. in each ModuleTO in 'specifics', comment out every line in the body, except
|
||||||
|
-- those whose first word is in 'commons'.
|
||||||
--
|
--
|
||||||
-- Syntax: runghc Clone FROM TO
|
-- Syntax: runghc Clone FROM TO
|
||||||
-- Example: runhugs Clone Swe Nor
|
-- Example: runhugs Clone Swe Nor
|
||||||
|
|
||||||
-- The following lines are for the phrasebook project, but can be modified to other projects.
|
-- The following lines are for the phrasebook project, and can be changed
|
||||||
|
-- to fit other projects.
|
||||||
|
|
||||||
modules = "Phrasebook":"Sentences":specifics
|
modules = "Phrasebook":"Sentences":specifics
|
||||||
specifics = ["Words","Greetings"]
|
specifics = ["Words","Greetings"]
|
||||||
|
commons = ["Apple","Beer","Bread","Fish","Milk","Salt","Water","Wine",
|
||||||
|
"Bad","Cold","Good","Warm","AHasChildren"]
|
||||||
|
|
||||||
|
|
||||||
main = do
|
main = do
|
||||||
@@ -42,7 +47,9 @@ replaceLang s1 s2 = repl where
|
|||||||
lgs = 3 -- length s1
|
lgs = 3 -- length s1
|
||||||
|
|
||||||
-- the file name has the form p....pLLL.gf, i.e. 3-letter lang name, suffix .gf
|
-- the file name has the form p....pLLL.gf, i.e. 3-letter lang name, suffix .gf
|
||||||
getLangName fi = let (nal,ferp) = splitAt 3 (drop 3 (reverse fi)) in (reverse ferp,reverse nal)
|
getLangName fi =
|
||||||
|
let (nal,ferp) = splitAt 3 (drop 3 (reverse fi)) in
|
||||||
|
(reverse ferp,reverse nal)
|
||||||
|
|
||||||
commentIf c = if c then (unlines . commentBody . lines) else id
|
commentIf c = if c then (unlines . commentBody . lines) else id
|
||||||
|
|
||||||
@@ -51,4 +58,8 @@ commentBody ss = header ++ map comment body ++ ["}"] where
|
|||||||
isJment ws = case ws of
|
isJment ws = case ws of
|
||||||
k:_ | elem k ["flags","lin","lincat","oper","param"] -> True
|
k:_ | elem k ["flags","lin","lincat","oper","param"] -> True
|
||||||
_ -> False
|
_ -> False
|
||||||
comment l = if take 2 l == "--" then l else "-- " ++ l
|
comment l = case l of
|
||||||
|
_ | take 2 l == "--" -> l -- already commented
|
||||||
|
_ | all isSpace l -> l -- empty line
|
||||||
|
_ | elem (head (words l)) commons -> l -- in 'commons'
|
||||||
|
_ -> "--" ++ l
|
||||||
|
|||||||
@@ -8,7 +8,8 @@ concrete DisambPhrasebookEng of Phrasebook = PhrasebookEng -
|
|||||||
LangNat, -- CitiNat,
|
LangNat, -- CitiNat,
|
||||||
GExcuse, GExcusePol,
|
GExcuse, GExcusePol,
|
||||||
GSorry, GSorryPol,
|
GSorry, GSorryPol,
|
||||||
GPleaseGive, GPleaseGivePol
|
GPleaseGive, GPleaseGivePol,
|
||||||
|
GNiceToMeetYou, GNiceToMeetYouPol
|
||||||
]
|
]
|
||||||
** open SyntaxEng, ParadigmsEng, Prelude in {
|
** open SyntaxEng, ParadigmsEng, Prelude in {
|
||||||
lin
|
lin
|
||||||
@@ -28,14 +29,16 @@ lin
|
|||||||
GSorryPol = pol "sorry" ;
|
GSorryPol = pol "sorry" ;
|
||||||
GPleaseGive = fam "please" ;
|
GPleaseGive = fam "please" ;
|
||||||
GPleaseGivePol = pol "please" ;
|
GPleaseGivePol = pol "please" ;
|
||||||
|
GNiceToMeetYou = fam "nice to meet you" ;
|
||||||
|
GNiceToMeetYouPol = pol "nice to meet you" ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
fam : Str -> SS = \s -> postfixSS "(familiar)" (ss s) ;
|
fam : Str -> SS = \s -> postfixSS "(familiar)" (ss s) ;
|
||||||
pol : Str -> SS = \s -> postfixSS "(polite)" (ss s) ;
|
pol : Str -> SS = \s -> postfixSS "(polite)" (ss s) ;
|
||||||
|
|
||||||
mkP : Pron -> Str -> {name : NP ; isPron : Bool ; poss : Det} = \p,s ->
|
mkP : Pron -> Str -> {name : NP ; isPron : Bool ; poss : Quant} = \p,s ->
|
||||||
{name = mkNP (mkNP p) (ParadigmsEng.mkAdv s) ;
|
{name = mkNP (mkNP p) (ParadigmsEng.mkAdv s) ;
|
||||||
isPron = False ; -- to show the disambiguation
|
isPron = False ; -- to show the disambiguation
|
||||||
poss = mkDet youSg_Pron
|
poss = SyntaxEng.mkQuant youSg_Pron
|
||||||
} ;
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
concrete GreetingsBul of Greetings = open Prelude in {
|
concrete GreetingsBul of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "hej då" ;
|
-- GBye = ss "bye" ;
|
||||||
-- GCheers = ss "skål" ;
|
-- GCheers = ss "cheers" ;
|
||||||
-- GDamn = ss "fan" ;
|
-- GDamn = ss "damn" ;
|
||||||
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
-- GExcuse, GExcusePol = ss "excuse me" ;
|
||||||
-- GGoodDay = ss "god dag" ;
|
-- GGoodDay = ss "good afternoon" ; ----
|
||||||
-- GGoodEvening = ss "god afton" ;
|
-- GGoodEvening = ss "good evening" ;
|
||||||
-- GGoodMorning = ss "god morgon" ;
|
-- GGoodMorning = ss "good morning" ;
|
||||||
-- GGoodNight = ss "god natt" ;
|
-- GGoodNight = ss "good night" ;
|
||||||
-- GGoodbye = ss "hej då" ;
|
-- GGoodbye = ss "goodbye" ;
|
||||||
-- GHello = ss "hej" ;
|
-- GHello = ss "hello" ;
|
||||||
-- GHelp = ss "hjälp" ;
|
-- GHelp = ss "help" ;
|
||||||
-- GHowAreYou = ss "hur står det till" ;
|
-- GHowAreYou = ss "how are you" ;
|
||||||
-- GLookOut = ss "se upp" ;
|
-- GLookOut = ss "look out" ;
|
||||||
-- GNiceToMeetYou = ss "trevligt att träffas" ;
|
-- GNiceToMeetYou, GNiceToMeetYouPol = ss "nice to meet you" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
-- GPleaseGive, GPleaseGivePol = ss "please" ;
|
||||||
-- GSeeYouSoon = ss "vi ses snart" ;
|
-- GSeeYouSoon = ss "see you soon" ;
|
||||||
-- GSorry, GSorryPol = ss "förlåt" ;
|
-- GSorry, GSorryPol = ss "sorry" ;
|
||||||
-- GThanks = ss "tack" ;
|
-- GThanks = ss "thank you" ;
|
||||||
-- GTheCheck = ss "notan" ;
|
-- GTheCheck = ss "the bill" ;
|
||||||
--
|
|
||||||
-- }
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,31 @@
|
|||||||
concrete GreetingsCat of Greetings = open Prelude in {
|
concrete GreetingsCat of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "ciao" ;
|
-- GBye = ss "ciao" ;
|
||||||
-- GCheers = ss "cincin" ;
|
-- GCheers = ss "cincin" ;
|
||||||
-- GDamn = ss "maledizione" ;
|
-- GDamn = ss "maledizione" ;
|
||||||
-- GExcuse = ss "scusa" ;
|
-- GExcuse = ss "scusa" ;
|
||||||
-- GExcusePol = ss "scusi" ;
|
-- GExcusePol = ss "scusi" ;
|
||||||
-- GGoodDay = ss "buongiorno" ;
|
-- GGoodDay = ss "buongiorno" ;
|
||||||
-- GGoodEvening = ss "buona sera" ;
|
-- GGoodEvening = ss "buona sera" ;
|
||||||
-- GGoodMorning = ss "buongiorno" ;
|
-- GGoodMorning = ss "buongiorno" ;
|
||||||
-- GGoodNight = ss "buona notte" ;
|
-- GGoodNight = ss "buona notte" ;
|
||||||
-- GGoodbye = ss "arrivederci" ;
|
-- GGoodbye = ss "arrivederci" ;
|
||||||
-- GHello = ss "ciao" ;
|
-- GHello = ss "ciao" ;
|
||||||
-- GHelp = ss "aiuto" ;
|
-- GHelp = ss "aiuto" ;
|
||||||
-- GHowAreYou = ss "come sta" ;
|
-- GHowAreYou = ss "come sta" ;
|
||||||
-- GLookOut = ss "attenzione" ;
|
-- GLookOut = ss "attenzione" ;
|
||||||
-- -- GNiceToMeetYou = ss "piacevole" ; ----
|
-- GNiceToMeetYou = ss "piacere di conoscerti" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "per favore" ;
|
-- GNiceToMeetYouPol = ss "piacere di conoscerLa" ;
|
||||||
-- GSeeYouSoon = ss "a presto" ; ----
|
-- GPleaseGive, GPleaseGivePol = ss "per favore" ;
|
||||||
-- GSorry = ss "scusami" ; ----
|
-- GSeeYouSoon = ss "a presto" ; ----
|
||||||
-- GSorryPol = ss "scusimi" ; ----
|
-- GSorry = ss "scusami" ; ----
|
||||||
-- GThanks = ss "grazie" ;
|
-- GSorryPol = ss "scusimi" ; ----
|
||||||
-- GTheCheck = ss "il conto" ;
|
-- GThanks = ss "grazie" ;
|
||||||
--
|
-- GTheCheck = ss "il conto" ;
|
||||||
-- }
|
|
||||||
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
concrete GreetingsDan of Greetings = open Prelude in {
|
concrete GreetingsDan of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "hej då" ;
|
-- GBye = ss "hej då" ;
|
||||||
-- GCheers = ss "skål" ;
|
-- GCheers = ss "skål" ;
|
||||||
-- GDamn = ss "fan" ;
|
-- GDamn = ss "fan" ;
|
||||||
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
||||||
-- GGoodDay = ss "god dag" ;
|
-- GGoodDay = ss "god dag" ;
|
||||||
-- GGoodEvening = ss "god afton" ;
|
-- GGoodEvening = ss "god afton" ;
|
||||||
-- GGoodMorning = ss "god morgon" ;
|
-- GGoodMorning = ss "god morgon" ;
|
||||||
-- GGoodNight = ss "god natt" ;
|
-- GGoodNight = ss "god natt" ;
|
||||||
-- GGoodbye = ss "hej då" ;
|
-- GGoodbye = ss "hej då" ;
|
||||||
-- GHello = ss "hej" ;
|
-- GHello = ss "hej" ;
|
||||||
-- GHelp = ss "hjälp" ;
|
-- GHelp = ss "hjälp" ;
|
||||||
-- GHowAreYou = ss "hur står det till" ;
|
-- GHowAreYou = ss "hur står det till" ;
|
||||||
-- GLookOut = ss "se upp" ;
|
-- GLookOut = ss "se upp" ;
|
||||||
-- GNiceToMeetYou = ss "trevligt att träffas" ;
|
-- GNiceToMeetYou, GNiceToMeetYouPol = ss "trevligt att träffas" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
||||||
-- GSeeYouSoon = ss "vi ses snart" ;
|
-- GSeeYouSoon = ss "vi ses snart" ;
|
||||||
-- GSorry, GSorryPol = ss "förlåt" ;
|
-- GSorry, GSorryPol = ss "förlåt" ;
|
||||||
-- GThanks = ss "tack" ;
|
-- GThanks = ss "tack" ;
|
||||||
-- GTheCheck = ss "notan" ;
|
-- GTheCheck = ss "notan" ;
|
||||||
--
|
|
||||||
-- }
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
concrete GreetingsDut of Greetings = open Prelude in {
|
concrete GreetingsDut of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "hej då" ;
|
-- GBye = ss "hej då" ;
|
||||||
-- GCheers = ss "skål" ;
|
-- GCheers = ss "skål" ;
|
||||||
-- GDamn = ss "fan" ;
|
-- GDamn = ss "fan" ;
|
||||||
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
||||||
-- GGoodDay = ss "god dag" ;
|
-- GGoodDay = ss "god dag" ;
|
||||||
-- GGoodEvening = ss "god afton" ;
|
-- GGoodEvening = ss "god afton" ;
|
||||||
-- GGoodMorning = ss "god morgon" ;
|
-- GGoodMorning = ss "god morgon" ;
|
||||||
-- GGoodNight = ss "god natt" ;
|
-- GGoodNight = ss "god natt" ;
|
||||||
-- GGoodbye = ss "hej då" ;
|
-- GGoodbye = ss "hej då" ;
|
||||||
-- GHello = ss "hej" ;
|
-- GHello = ss "hej" ;
|
||||||
-- GHelp = ss "hjälp" ;
|
-- GHelp = ss "hjälp" ;
|
||||||
-- GHowAreYou = ss "hur står det till" ;
|
-- GHowAreYou = ss "hur står det till" ;
|
||||||
-- GLookOut = ss "se upp" ;
|
-- GLookOut = ss "se upp" ;
|
||||||
-- GNiceToMeetYou = ss "trevligt att träffas" ;
|
-- GNiceToMeetYou, GNiceToMeetYouPol = ss "trevligt att träffas" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
||||||
-- GSeeYouSoon = ss "vi ses snart" ;
|
-- GSeeYouSoon = ss "vi ses snart" ;
|
||||||
-- GSorry, GSorryPol = ss "förlåt" ;
|
-- GSorry, GSorryPol = ss "förlåt" ;
|
||||||
-- GThanks = ss "tack" ;
|
-- GThanks = ss "tack" ;
|
||||||
-- GTheCheck = ss "notan" ;
|
-- GTheCheck = ss "notan" ;
|
||||||
--
|
|
||||||
-- }
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ lin
|
|||||||
GHelp = ss "help" ;
|
GHelp = ss "help" ;
|
||||||
GHowAreYou = ss "how are you" ;
|
GHowAreYou = ss "how are you" ;
|
||||||
GLookOut = ss "look out" ;
|
GLookOut = ss "look out" ;
|
||||||
GNiceToMeetYou = ss "nice to meet you" ;
|
GNiceToMeetYou, GNiceToMeetYouPol = ss "nice to meet you" ;
|
||||||
GPleaseGive, GPleaseGivePol = ss "please" ;
|
GPleaseGive, GPleaseGivePol = ss "please" ;
|
||||||
GSeeYouSoon = ss "see you soon" ;
|
GSeeYouSoon = ss "see you soon" ;
|
||||||
GSorry, GSorryPol = ss "sorry" ;
|
GSorry, GSorryPol = ss "sorry" ;
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ lin
|
|||||||
GHelp = ss "aiuto" ;
|
GHelp = ss "aiuto" ;
|
||||||
GHowAreYou = ss "come sta" ;
|
GHowAreYou = ss "come sta" ;
|
||||||
GLookOut = ss "attenzione" ;
|
GLookOut = ss "attenzione" ;
|
||||||
-- GNiceToMeetYou = ss "piacevole" ; ----
|
GNiceToMeetYou = ss "piacere di conoscerti" ;
|
||||||
|
GNiceToMeetYouPol = ss "piacere di conoscerLa" ;
|
||||||
GPleaseGive, GPleaseGivePol = ss "per favore" ;
|
GPleaseGive, GPleaseGivePol = ss "per favore" ;
|
||||||
GSeeYouSoon = ss "a presto" ; ----
|
GSeeYouSoon = ss "a presto" ; ----
|
||||||
GSorry = ss "scusami" ; ----
|
GSorry = ss "scusami" ; ----
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
concrete GreetingsNor of Greetings = open Prelude in {
|
concrete GreetingsNor of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "hej då" ;
|
-- GBye = ss "hej då" ;
|
||||||
-- GCheers = ss "skål" ;
|
-- GCheers = ss "skål" ;
|
||||||
-- GDamn = ss "fan" ;
|
-- GDamn = ss "fan" ;
|
||||||
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
||||||
-- GGoodDay = ss "god dag" ;
|
-- GGoodDay = ss "god dag" ;
|
||||||
-- GGoodEvening = ss "god afton" ;
|
-- GGoodEvening = ss "god afton" ;
|
||||||
-- GGoodMorning = ss "god morgon" ;
|
-- GGoodMorning = ss "god morgon" ;
|
||||||
-- GGoodNight = ss "god natt" ;
|
-- GGoodNight = ss "god natt" ;
|
||||||
-- GGoodbye = ss "hej då" ;
|
-- GGoodbye = ss "hej då" ;
|
||||||
-- GHello = ss "hej" ;
|
-- GHello = ss "hej" ;
|
||||||
-- GHelp = ss "hjälp" ;
|
-- GHelp = ss "hjälp" ;
|
||||||
-- GHowAreYou = ss "hur står det till" ;
|
-- GHowAreYou = ss "hur står det till" ;
|
||||||
-- GLookOut = ss "se upp" ;
|
-- GLookOut = ss "se upp" ;
|
||||||
-- GNiceToMeetYou = ss "trevligt att träffas" ;
|
-- GNiceToMeetYou, GNiceToMeetYouPol = ss "trevligt att träffas" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
||||||
-- GSeeYouSoon = ss "vi ses snart" ;
|
-- GSeeYouSoon = ss "vi ses snart" ;
|
||||||
-- GSorry, GSorryPol = ss "förlåt" ;
|
-- GSorry, GSorryPol = ss "förlåt" ;
|
||||||
-- GThanks = ss "tack" ;
|
-- GThanks = ss "tack" ;
|
||||||
-- GTheCheck = ss "notan" ;
|
-- GTheCheck = ss "notan" ;
|
||||||
--
|
|
||||||
-- }
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
concrete GreetingsPol of Greetings = open Prelude in {
|
concrete GreetingsPol of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "hej då" ;
|
-- GBye = ss "bye" ;
|
||||||
-- GCheers = ss "skål" ;
|
-- GCheers = ss "cheers" ;
|
||||||
-- GDamn = ss "fan" ;
|
-- GDamn = ss "damn" ;
|
||||||
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
-- GExcuse, GExcusePol = ss "excuse me" ;
|
||||||
-- GGoodDay = ss "god dag" ;
|
-- GGoodDay = ss "good afternoon" ; ----
|
||||||
-- GGoodEvening = ss "god afton" ;
|
-- GGoodEvening = ss "good evening" ;
|
||||||
-- GGoodMorning = ss "god morgon" ;
|
-- GGoodMorning = ss "good morning" ;
|
||||||
-- GGoodNight = ss "god natt" ;
|
-- GGoodNight = ss "good night" ;
|
||||||
-- GGoodbye = ss "hej då" ;
|
-- GGoodbye = ss "goodbye" ;
|
||||||
-- GHello = ss "hej" ;
|
-- GHello = ss "hello" ;
|
||||||
-- GHelp = ss "hjälp" ;
|
-- GHelp = ss "help" ;
|
||||||
-- GHowAreYou = ss "hur står det till" ;
|
-- GHowAreYou = ss "how are you" ;
|
||||||
-- GLookOut = ss "se upp" ;
|
-- GLookOut = ss "look out" ;
|
||||||
-- GNiceToMeetYou = ss "trevligt att träffas" ;
|
-- GNiceToMeetYou, GNiceToMeetYouPol = ss "nice to meet you" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
-- GPleaseGive, GPleaseGivePol = ss "please" ;
|
||||||
-- GSeeYouSoon = ss "vi ses snart" ;
|
-- GSeeYouSoon = ss "see you soon" ;
|
||||||
-- GSorry, GSorryPol = ss "förlåt" ;
|
-- GSorry, GSorryPol = ss "sorry" ;
|
||||||
-- GThanks = ss "tack" ;
|
-- GThanks = ss "thank you" ;
|
||||||
-- GTheCheck = ss "notan" ;
|
-- GTheCheck = ss "the bill" ;
|
||||||
--
|
|
||||||
-- }
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,28 @@
|
|||||||
concrete GreetingsRus of Greetings = open Prelude in {
|
concrete GreetingsRus of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "hej då" ;
|
-- GBye = ss "bye" ;
|
||||||
-- GCheers = ss "skål" ;
|
-- GCheers = ss "cheers" ;
|
||||||
-- GDamn = ss "fan" ;
|
-- GDamn = ss "damn" ;
|
||||||
-- GExcuse, GExcusePol = ss "ursäkta" ;
|
-- GExcuse, GExcusePol = ss "excuse me" ;
|
||||||
-- GGoodDay = ss "god dag" ;
|
-- GGoodDay = ss "good afternoon" ; ----
|
||||||
-- GGoodEvening = ss "god afton" ;
|
-- GGoodEvening = ss "good evening" ;
|
||||||
-- GGoodMorning = ss "god morgon" ;
|
-- GGoodMorning = ss "good morning" ;
|
||||||
-- GGoodNight = ss "god natt" ;
|
-- GGoodNight = ss "good night" ;
|
||||||
-- GGoodbye = ss "hej då" ;
|
-- GGoodbye = ss "goodbye" ;
|
||||||
-- GHello = ss "hej" ;
|
-- GHello = ss "hello" ;
|
||||||
-- GHelp = ss "hjälp" ;
|
-- GHelp = ss "help" ;
|
||||||
-- GHowAreYou = ss "hur står det till" ;
|
-- GHowAreYou = ss "how are you" ;
|
||||||
-- GLookOut = ss "se upp" ;
|
-- GLookOut = ss "look out" ;
|
||||||
-- GNiceToMeetYou = ss "trevligt att träffas" ;
|
-- GNiceToMeetYou, GNiceToMeetYouPol = ss "nice to meet you" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
-- GPleaseGive, GPleaseGivePol = ss "please" ;
|
||||||
-- GSeeYouSoon = ss "vi ses snart" ;
|
-- GSeeYouSoon = ss "see you soon" ;
|
||||||
-- GSorry, GSorryPol = ss "förlåt" ;
|
-- GSorry, GSorryPol = ss "sorry" ;
|
||||||
-- GThanks = ss "tack" ;
|
-- GThanks = ss "thank you" ;
|
||||||
-- GTheCheck = ss "notan" ;
|
-- GTheCheck = ss "the bill" ;
|
||||||
--
|
|
||||||
-- }
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,31 @@
|
|||||||
concrete GreetingsSpa of Greetings = open Prelude in {
|
concrete GreetingsSpa of Greetings = open Prelude in {
|
||||||
|
|
||||||
-- lincat
|
--lincat
|
||||||
-- Greeting = SS ;
|
-- Greeting = SS ;
|
||||||
--
|
|
||||||
-- lin
|
--lin
|
||||||
-- GBye = ss "ciao" ;
|
-- GBye = ss "ciao" ;
|
||||||
-- GCheers = ss "cincin" ;
|
-- GCheers = ss "cincin" ;
|
||||||
-- GDamn = ss "maledizione" ;
|
-- GDamn = ss "maledizione" ;
|
||||||
-- GExcuse = ss "scusa" ;
|
-- GExcuse = ss "scusa" ;
|
||||||
-- GExcusePol = ss "scusi" ;
|
-- GExcusePol = ss "scusi" ;
|
||||||
-- GGoodDay = ss "buongiorno" ;
|
-- GGoodDay = ss "buongiorno" ;
|
||||||
-- GGoodEvening = ss "buona sera" ;
|
-- GGoodEvening = ss "buona sera" ;
|
||||||
-- GGoodMorning = ss "buongiorno" ;
|
-- GGoodMorning = ss "buongiorno" ;
|
||||||
-- GGoodNight = ss "buona notte" ;
|
-- GGoodNight = ss "buona notte" ;
|
||||||
-- GGoodbye = ss "arrivederci" ;
|
-- GGoodbye = ss "arrivederci" ;
|
||||||
-- GHello = ss "ciao" ;
|
-- GHello = ss "ciao" ;
|
||||||
-- GHelp = ss "aiuto" ;
|
-- GHelp = ss "aiuto" ;
|
||||||
-- GHowAreYou = ss "come sta" ;
|
-- GHowAreYou = ss "come sta" ;
|
||||||
-- GLookOut = ss "attenzione" ;
|
-- GLookOut = ss "attenzione" ;
|
||||||
-- -- GNiceToMeetYou = ss "piacevole" ; ----
|
-- GNiceToMeetYou = ss "piacere di conoscerti" ;
|
||||||
-- GPleaseGive, GPleaseGivePol = ss "per favore" ;
|
-- GNiceToMeetYouPol = ss "piacere di conoscerLa" ;
|
||||||
-- GSeeYouSoon = ss "a presto" ; ----
|
-- GPleaseGive, GPleaseGivePol = ss "per favore" ;
|
||||||
-- GSorry = ss "scusami" ; ----
|
-- GSeeYouSoon = ss "a presto" ; ----
|
||||||
-- GSorryPol = ss "scusimi" ; ----
|
-- GSorry = ss "scusami" ; ----
|
||||||
-- GThanks = ss "grazie" ;
|
-- GSorryPol = ss "scusimi" ; ----
|
||||||
-- GTheCheck = ss "il conto" ;
|
-- GThanks = ss "grazie" ;
|
||||||
--
|
-- GTheCheck = ss "il conto" ;
|
||||||
-- }
|
|
||||||
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ lin
|
|||||||
GHelp = ss "hjälp" ;
|
GHelp = ss "hjälp" ;
|
||||||
GHowAreYou = ss "hur står det till" ;
|
GHowAreYou = ss "hur står det till" ;
|
||||||
GLookOut = ss "se upp" ;
|
GLookOut = ss "se upp" ;
|
||||||
GNiceToMeetYou = ss "trevligt att träffas" ;
|
GNiceToMeetYou, GNiceToMeetYouPol = ss "trevligt att träffas" ;
|
||||||
GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
GPleaseGive, GPleaseGivePol = ss "var så god" ;
|
||||||
GSeeYouSoon = ss "vi ses snart" ;
|
GSeeYouSoon = ss "vi ses snart" ;
|
||||||
GSorry, GSorryPol = ss "förlåt" ;
|
GSorry, GSorryPol = ss "förlåt" ;
|
||||||
|
|||||||
381
examples/phrasebook/Implementation.html
Normal file
381
examples/phrasebook/Implementation.html
Normal file
@@ -0,0 +1,381 @@
|
|||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<i> Produced by
|
||||||
|
gfdoc - a rudimentary GF document generator.
|
||||||
|
(c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.
|
||||||
|
</i>
|
||||||
|
<p>
|
||||||
|
<h1> Implementation of MOLTO Phrasebook</h1>
|
||||||
|
|
||||||
|
<h2> The functor for (mostly) common structures</h2>
|
||||||
|
<pre>
|
||||||
|
incomplete concrete SentencesI of Sentences = Numeral **
|
||||||
|
open
|
||||||
|
Syntax,
|
||||||
|
Lexicon,
|
||||||
|
Symbolic, -- for names as strings
|
||||||
|
Prelude
|
||||||
|
in {
|
||||||
|
lincat
|
||||||
|
Phrase = Text ;
|
||||||
|
Sentence = S ;
|
||||||
|
Question = QS ;
|
||||||
|
Proposition = Cl ;
|
||||||
|
Item = NP ;
|
||||||
|
Kind = CN ;
|
||||||
|
Quality = AP ;
|
||||||
|
Property = A ;
|
||||||
|
Object = NP ;
|
||||||
|
Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv} ;
|
||||||
|
PlaceKind = CNPlace ; -- {name : CN ; at : Prep ; to : Prep} ;
|
||||||
|
Currency = CN ;
|
||||||
|
Price = NP ;
|
||||||
|
Action = Cl ;
|
||||||
|
Person = NPPerson ; -- {name : NP ; isPron : Bool ; poss : Quant} ;
|
||||||
|
Nationality = NPNationality ; -- {lang : NP ; country : NP ; prop : A} ;
|
||||||
|
Language = NP ;
|
||||||
|
Citizenship = A ;
|
||||||
|
Country = NP ;
|
||||||
|
Day = NPDay ; -- {name : NP ; point : Adv ; habitual : Adv} ;
|
||||||
|
Date = Adv ;
|
||||||
|
Name = NP ;
|
||||||
|
Number = Card ;
|
||||||
|
lin
|
||||||
|
PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
|
||||||
|
PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
|
||||||
|
|
||||||
|
PObject x = mkPhrase (mkUtt x) ;
|
||||||
|
PKind x = mkPhrase (mkUtt x) ;
|
||||||
|
PQuality x = mkPhrase (mkUtt x) ;
|
||||||
|
PNumber x = mkPhrase (mkUtt x) ;
|
||||||
|
PPlace x = mkPhrase (mkUtt x.name) ;
|
||||||
|
PPlaceKind x = mkPhrase (mkUtt x.name) ;
|
||||||
|
PCurrency x = mkPhrase (mkUtt x) ;
|
||||||
|
PPrice x = mkPhrase (mkUtt x) ;
|
||||||
|
PLanguage x = mkPhrase (mkUtt x) ;
|
||||||
|
PCountry x = mkPhrase (mkUtt x) ;
|
||||||
|
PCitizenship x = mkPhrase (mkUtt (mkAP x)) ;
|
||||||
|
PDay d = mkPhrase (mkUtt d.name) ;
|
||||||
|
|
||||||
|
PYes = mkPhrase yes_Utt ;
|
||||||
|
PNo = mkPhrase no_Utt ;
|
||||||
|
|
||||||
|
Is = mkCl ;
|
||||||
|
|
||||||
|
SProp = mkS ;
|
||||||
|
SPropNot = mkS negativePol ;
|
||||||
|
QProp p = mkQS (mkQCl p) ;
|
||||||
|
|
||||||
|
WherePlace place = mkQS (mkQCl where_IAdv place.name) ;
|
||||||
|
WherePerson person = mkQS (mkQCl where_IAdv person.name) ;
|
||||||
|
|
||||||
|
PropAction a = a ;
|
||||||
|
|
||||||
|
AmountCurrency num curr = mkNP num curr ;
|
||||||
|
|
||||||
|
ObjItem i = i ;
|
||||||
|
ObjNumber n k = mkNP n k ;
|
||||||
|
ObjIndef k = mkNP a_Quant k ;
|
||||||
|
|
||||||
|
This kind = mkNP this_Quant kind ;
|
||||||
|
That kind = mkNP that_Quant kind ;
|
||||||
|
These kind = mkNP this_Quant plNum kind ;
|
||||||
|
Those kind = mkNP that_Quant plNum kind ;
|
||||||
|
The kind = mkNP the_Quant kind ;
|
||||||
|
The kind = mkNP the_Quant kind ;
|
||||||
|
Thes kind = mkNP the_Quant plNum kind ;
|
||||||
|
SuchKind quality kind = mkCN quality kind ;
|
||||||
|
Very property = mkAP very_AdA (mkAP property) ;
|
||||||
|
Too property = mkAP too_AdA (mkAP property) ;
|
||||||
|
PropQuality property = mkAP property ;
|
||||||
|
ThePlace kind =
|
||||||
|
let name : NP = mkNP the_Quant kind.name in {
|
||||||
|
name = name ;
|
||||||
|
at = mkAdv kind.at name ;
|
||||||
|
to = mkAdv kind.to name
|
||||||
|
} ;
|
||||||
|
|
||||||
|
IMale, IFemale = mkPerson i_Pron ;
|
||||||
|
YouFamMale, YouFamFemale = mkPerson youSg_Pron ;
|
||||||
|
YouPolMale, YouPolFemale = mkPerson youPol_Pron ;
|
||||||
|
|
||||||
|
LangNat n = n.lang ;
|
||||||
|
CitiNat n = n.prop ;
|
||||||
|
CountryNat n = n.country ;
|
||||||
|
PropCit c = c ;
|
||||||
|
|
||||||
|
OnDay d = d.point ;
|
||||||
|
Today = today_Adv ;
|
||||||
|
|
||||||
|
PersonName n =
|
||||||
|
{name = n ; isPron = False ; poss = mkQuant he_Pron} ; -- poss not used
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
NameNN = symb "NN" ;
|
||||||
|
|
||||||
|
NNumeral n = mkCard <lin Numeral n : Numeral> ;
|
||||||
|
|
||||||
|
AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
|
||||||
|
ACitizen p n = mkCl p.name n ;
|
||||||
|
ABePlace p place = mkCl p.name place.at ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
These operations are used internally in Sentences.
|
||||||
|
<pre>
|
||||||
|
mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
|
||||||
|
|
||||||
|
mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
|
||||||
|
{name = mkNP p ; isPron = True ; poss = mkQuant p} ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
These are used in Words for each language.
|
||||||
|
<pre>
|
||||||
|
NPNationality : Type = {lang : NP ; country : NP ; prop : A} ;
|
||||||
|
|
||||||
|
mkNPNationality : NP -> NP -> A -> NPNationality = \la,co,pro ->
|
||||||
|
{lang = la ;
|
||||||
|
country = co ;
|
||||||
|
prop = pro
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NPDay : Type = {name : NP ; point : Adv ; habitual : Adv} ;
|
||||||
|
|
||||||
|
mkNPDay : NP -> Adv -> Adv -> NPDay = \d,p,h ->
|
||||||
|
{name = d ;
|
||||||
|
point = p ;
|
||||||
|
habitual = h
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NPPlace : Type = {name : NP ; at : Adv ; to : Adv} ;
|
||||||
|
CNPlace : Type = {name : CN ; at : Prep ; to : Prep} ;
|
||||||
|
|
||||||
|
mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
|
||||||
|
name = p ;
|
||||||
|
at = i ;
|
||||||
|
to = t
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
|
||||||
|
|
||||||
|
relativePerson : GNumber -> CN -> (Num -> NP -> CN -> NP) -> NPPerson -> NPPerson =
|
||||||
|
\n,x,f,p ->
|
||||||
|
let num = if_then_else Num n plNum sgNum in {
|
||||||
|
name = case p.isPron of {
|
||||||
|
True => mkNP p.poss num x ;
|
||||||
|
_ => f num p.name x
|
||||||
|
} ;
|
||||||
|
isPron = False ;
|
||||||
|
poss = mkQuant he_Pron -- not used because not pron
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GNumber : PType = Bool ;
|
||||||
|
sing = False ; plur = True ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
for languages without GenNP, use <i>the wife of p</i>
|
||||||
|
<pre>
|
||||||
|
mkRelative : Bool -> CN -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
|
relativePerson n x
|
||||||
|
(\a,b,c -> mkNP (mkNP the_Quant a c) (Syntax.mkAdv possess_Prep b)) p ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
for languages with GenNP, use <i>p's wife</i>
|
||||||
|
relativePerson n x (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
|
<pre>
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h2> Implementations of Words, with English as example</h2>
|
||||||
|
<pre>
|
||||||
|
concrete WordsEng of Words = SentencesEng **
|
||||||
|
open
|
||||||
|
SyntaxEng,
|
||||||
|
ParadigmsEng,
|
||||||
|
(L = LexiconEng),
|
||||||
|
(P = ParadigmsEng),
|
||||||
|
IrregEng,
|
||||||
|
ExtraEng,
|
||||||
|
Prelude in {
|
||||||
|
lin
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Kinds; many of them are in the resource lexicon, others can be built by <tt>mkN</tt>.
|
||||||
|
<pre>
|
||||||
|
Apple = mkCN L.apple_N ;
|
||||||
|
Beer = mkCN L.beer_N ;
|
||||||
|
Bread = mkCN L.bread_N ;
|
||||||
|
Cheese = mkCN (mkN "cheese") ;
|
||||||
|
Chicken = mkCN (mkN "chicken") ;
|
||||||
|
Coffee = mkCN (mkN "coffee") ;
|
||||||
|
Fish = mkCN L.fish_N ;
|
||||||
|
Meat = mkCN (mkN "meat") ;
|
||||||
|
Milk = mkCN L.milk_N ;
|
||||||
|
Pizza = mkCN (mkN "pizza") ;
|
||||||
|
Salt = mkCN L.salt_N ;
|
||||||
|
Tea = mkCN (mkN "tea") ;
|
||||||
|
Water = mkCN L.water_N ;
|
||||||
|
Wine = mkCN L.wine_N ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Properties; many of them are in the resource lexicon, others can be built by <tt>mkA</tt>.
|
||||||
|
<pre>
|
||||||
|
Bad = L.bad_A ;
|
||||||
|
Boring = mkA "boring" ;
|
||||||
|
Cheap = mkA "cheap" ;
|
||||||
|
Cold = L.cold_A ;
|
||||||
|
Delicious = mkA "delicious" ;
|
||||||
|
Expensive = mkA "expensive" ;
|
||||||
|
Fresh = mkA "fresh" ;
|
||||||
|
Good = L.good_A ;
|
||||||
|
Suspect = mkA "suspect" ;
|
||||||
|
Warm = L.warm_A ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Places require different prepositions to express location; in some languages
|
||||||
|
also the directional preposition varies, but in English we use <tt>to</tt>, as
|
||||||
|
defined by <tt>mkPlace</tt>.
|
||||||
|
<pre>
|
||||||
|
Airport = mkPlace "airport" "at" ;
|
||||||
|
Bar = mkPlace "bar" "in" ;
|
||||||
|
Church = mkPlace "church" "in" ;
|
||||||
|
Cinema = mkPlace "cinema" "at" ;
|
||||||
|
Hospital = mkPlace "hospital" "in" ;
|
||||||
|
Hotel = mkPlace "hotel" "in" ;
|
||||||
|
Museum = mkPlace "museum" "in" ;
|
||||||
|
Park = mkPlace "park" "in" ;
|
||||||
|
Restaurant = mkPlace "restaurant" "in" ;
|
||||||
|
School = mkPlace "school" "at" ;
|
||||||
|
Shop = mkPlace "shop" "in" ;
|
||||||
|
Station = mkPlace "station" "at" ;
|
||||||
|
Theatre = mkPlace "theatre" "at" ;
|
||||||
|
Toilet = mkPlace "toilet" "in" ;
|
||||||
|
University = mkPlace "university" "at" ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Currencies; <tt>crown</tt> is ambiguous between Danish and Swedish crowns.
|
||||||
|
<pre>
|
||||||
|
DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
|
Dollar = mkCN (mkN "dollar") ;
|
||||||
|
Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
||||||
|
Lei = mkCN (mkN "leu" "lei") ;
|
||||||
|
SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Nationalities
|
||||||
|
<pre>
|
||||||
|
Belgian = mkA "Belgian" ;
|
||||||
|
Belgium = mkNP (mkPN "Belgium") ;
|
||||||
|
English = mkNat "English" "England" ;
|
||||||
|
Finnish = mkNat "Finnish" "Finland" ;
|
||||||
|
Flemish = mkNP (mkPN "Flemish") ;
|
||||||
|
French = mkNat "French" "France" ;
|
||||||
|
Italian = mkNat "Italian" "Italy" ;
|
||||||
|
Romanian = mkNat "Romanian" "Romania" ;
|
||||||
|
Swedish = mkNat "Swedish" "Sweden" ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Actions: the predication patterns are very often language-dependent.
|
||||||
|
<pre>
|
||||||
|
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
|
AHasRoom p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "room")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
|
AHasTable p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "table")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
|
AHasName p name = mkCl (nameOf p) name ;
|
||||||
|
AHungry p = mkCl p.name (mkA "hungry") ;
|
||||||
|
AIll p = mkCl p.name (mkA "ill") ;
|
||||||
|
AKnow p = mkCl p.name IrregEng.know_V ;
|
||||||
|
ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
|
||||||
|
ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
|
||||||
|
ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
||||||
|
AMarried p = mkCl p.name (mkA "married") ;
|
||||||
|
AReady p = mkCl p.name (mkA "ready") ;
|
||||||
|
AScared p = mkCl p.name (mkA "scared") ;
|
||||||
|
ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
|
||||||
|
AThirsty p = mkCl p.name (mkA "thirsty") ;
|
||||||
|
ATired p = mkCl p.name (mkA "tired") ;
|
||||||
|
AUnderstand p = mkCl p.name IrregEng.understand_V ;
|
||||||
|
AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
|
||||||
|
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregEng.go_V) place.to) ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
miscellaneous
|
||||||
|
<pre>
|
||||||
|
QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||||
|
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
|
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ;
|
||||||
|
ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ;
|
||||||
|
|
||||||
|
PropOpen p = mkCl p.name open_Adv ;
|
||||||
|
PropClosed p = mkCl p.name closed_Adv ;
|
||||||
|
PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
|
||||||
|
PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
|
||||||
|
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
||||||
|
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Building phrases from strings is complicated: the solution is to use
|
||||||
|
mkText : Text -> Text -> Text ;
|
||||||
|
<pre>
|
||||||
|
PSeeYou d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
PSeeYouPlace p d =
|
||||||
|
mkText (lin Text (ss ("see you")))
|
||||||
|
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
Relations are expressed as <i>my wife</i> or <i>my son's wife</i>, as defined by <tt>xOf</tt>
|
||||||
|
below. Languages without productive genitives must use an equivalent of
|
||||||
|
<i>the wife of my son</i> for non-pronouns.
|
||||||
|
<pre>
|
||||||
|
Wife = xOf sing (mkN "wife") ;
|
||||||
|
Husband = xOf sing (mkN "husband") ;
|
||||||
|
Son = xOf sing (mkN "son") ;
|
||||||
|
Daughter = xOf sing (mkN "daughter") ;
|
||||||
|
Children = xOf plur L.child_N ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
week days
|
||||||
|
<pre>
|
||||||
|
Monday = mkDay "Monday" ;
|
||||||
|
Tuesday = mkDay "Tuesday" ;
|
||||||
|
Wednesday = mkDay "Wednesday" ;
|
||||||
|
Thursday = mkDay "Thursday" ;
|
||||||
|
Friday = mkDay "Friday" ;
|
||||||
|
Saturday = mkDay "Saturday" ;
|
||||||
|
Sunday = mkDay "Sunday" ;
|
||||||
|
|
||||||
|
Tomorrow = P.mkAdv "tomorrow" ;
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
auxiliaries
|
||||||
|
<pre>
|
||||||
|
oper
|
||||||
|
|
||||||
|
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
|
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
|
|
||||||
|
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
|
let day = mkNP (mkPN d) in
|
||||||
|
mkNPDay day (SyntaxEng.mkAdv on_Prep day)
|
||||||
|
(SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
|
|
||||||
|
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
|
mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||||
|
|
||||||
|
open_Adv = P.mkAdv "open" ;
|
||||||
|
closed_Adv = P.mkAdv "closed" ;
|
||||||
|
|
||||||
|
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
|
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
|
|
||||||
|
nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
||||||
|
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -11,11 +11,16 @@ koe:
|
|||||||
gf -make PhrasebookEng.gf PhrasebookFre.gf DisambPhrasebookEng.gf
|
gf -make PhrasebookEng.gf PhrasebookFre.gf DisambPhrasebookEng.gf
|
||||||
|
|
||||||
missing:
|
missing:
|
||||||
echo "pg -missing | wf -file=missing.txt" | gf Phrasebook???.gf
|
echo "pg -missing | wf -file=missing.txt" | gf Phrasebook.pgf
|
||||||
|
#PhrasebookBul.gf PhrasebookCat.gf PhrasebookDan.gf PhrasebookDut.gf PhrasebookNor.gf PhrasebookPol.gf PhrasebookRus.gf PhrasebookSpa.gf
|
||||||
|
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
cat Sentences.gf Words.gf >Ontology.gf
|
cat Sentences.gf Words.gf >Ontology.gf
|
||||||
gfdoc Ontology.gf
|
gfdoc Ontology.gf
|
||||||
txt2tags -thtml phrasebook.txt
|
|
||||||
rm -f Ontology.gf
|
rm -f Ontology.gf
|
||||||
|
cat SentencesI.gf WordsEng.gf >Implementation.gf
|
||||||
|
gfdoc Implementation.gf
|
||||||
|
txt2tags -thtml phrasebook.txt
|
||||||
|
rm -f Ontology.gf Implementation.gf
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ are defined in other modules.
|
|||||||
Day ; -- weekday type e.g. "Friday"
|
Day ; -- weekday type e.g. "Friday"
|
||||||
Date ; -- definite date e.g. "on Friday"
|
Date ; -- definite date e.g. "on Friday"
|
||||||
Name ; -- name of person e.g. "NN"
|
Name ; -- name of person e.g. "NN"
|
||||||
-- Numeral ; -- number expression 1 .. 999,999 e.g. "twenty"
|
Number ; -- number expression 1 .. 999,999 e.g. "twenty"
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
Many of the categories are accessible as Phrases, i.e. as translation units.
|
Many of the categories are accessible as Phrases, i.e. as translation units.
|
||||||
@@ -55,7 +55,7 @@ Many of the categories are accessible as Phrases, i.e. as translation units.
|
|||||||
PObject : Object -> Phrase ;
|
PObject : Object -> Phrase ;
|
||||||
PKind : Kind -> Phrase ;
|
PKind : Kind -> Phrase ;
|
||||||
PQuality : Quality -> Phrase ;
|
PQuality : Quality -> Phrase ;
|
||||||
PNumeral : Numeral -> Phrase ;
|
PNumber : Number -> Phrase ;
|
||||||
PPlace : Place -> Phrase ;
|
PPlace : Place -> Phrase ;
|
||||||
PPlaceKind : PlaceKind-> Phrase ;
|
PPlaceKind : PlaceKind-> Phrase ;
|
||||||
PCurrency : Currency -> Phrase ;
|
PCurrency : Currency -> Phrase ;
|
||||||
@@ -91,7 +91,7 @@ This is the way to build propositions about persons.
|
|||||||
Here are some general syntactic constructions.
|
Here are some general syntactic constructions.
|
||||||
<pre>
|
<pre>
|
||||||
ObjItem : Item -> Object ; -- this pizza
|
ObjItem : Item -> Object ; -- this pizza
|
||||||
ObjNumber : Numeral -> Kind -> Object ; -- five pizzas
|
ObjNumber : Number -> Kind -> Object ; -- five pizzas
|
||||||
ObjIndef : Kind -> Object ; -- a pizza
|
ObjIndef : Kind -> Object ; -- a pizza
|
||||||
|
|
||||||
SuchKind : Quality -> Kind -> Kind ; -- Italian pizza
|
SuchKind : Quality -> Kind -> Kind ; -- Italian pizza
|
||||||
@@ -105,7 +105,7 @@ Determiners.
|
|||||||
This, That, These, Those : Kind -> Item ; -- this pizza,...,those pizzas
|
This, That, These, Those : Kind -> Item ; -- this pizza,...,those pizzas
|
||||||
The, Thes : Kind -> Item ; -- the pizza, the pizzas
|
The, Thes : Kind -> Item ; -- the pizza, the pizzas
|
||||||
|
|
||||||
AmountCurrency : Numeral -> Currency -> Price ; -- five euros
|
AmountCurrency : Number -> Currency -> Price ; -- five euros
|
||||||
|
|
||||||
ThePlace : PlaceKind -> Place ; -- the bar
|
ThePlace : PlaceKind -> Place ; -- the bar
|
||||||
|
|
||||||
@@ -125,6 +125,10 @@ Determiners.
|
|||||||
NameNN : Name ; -- the name "NN"
|
NameNN : Name ; -- the name "NN"
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
NNumeral : Numeral -> Number ; -- numeral in words, e.g. "twenty"
|
||||||
|
</pre>
|
||||||
|
|
||||||
Actions are typically language-dependent, not only lexically but also
|
Actions are typically language-dependent, not only lexically but also
|
||||||
structurally. However, these ones are mostly functorial.
|
structurally. However, these ones are mostly functorial.
|
||||||
<pre>
|
<pre>
|
||||||
@@ -218,13 +222,19 @@ nationalities, countries, languages, citizenships
|
|||||||
Actions (which can be expressed by different structures in different languages).
|
Actions (which can be expressed by different structures in different languages).
|
||||||
Notice that also negations and questions can be formed from these.
|
Notice that also negations and questions can be formed from these.
|
||||||
<pre>
|
<pre>
|
||||||
|
AHasAge : Person -> Number -> Action ; -- I am seventy years
|
||||||
|
AHasChildren: Person -> Number -> Action ; -- I have six children
|
||||||
AHasName : Person -> Name -> Action ; -- my name is Bond
|
AHasName : Person -> Name -> Action ; -- my name is Bond
|
||||||
|
AHasRoom : Person -> Number -> Action ; -- you have a room for five persons
|
||||||
|
AHasTable : Person -> Number -> Action ; -- you have a table for five persons
|
||||||
AHungry : Person -> Action ; -- I am hungry
|
AHungry : Person -> Action ; -- I am hungry
|
||||||
AIll : Person -> Action ; -- I am ill
|
AIll : Person -> Action ; -- I am ill
|
||||||
AKnow : Person -> Action ; -- I (don't) know
|
AKnow : Person -> Action ; -- I (don't) know
|
||||||
ALike : Person -> Item -> Action ; -- I like this pizza
|
ALike : Person -> Item -> Action ; -- I like this pizza
|
||||||
ALive : Person -> Country -> Action ; -- I live in Sweden
|
ALive : Person -> Country -> Action ; -- I live in Sweden
|
||||||
ALove : Person -> Person -> Action ; -- I love you
|
ALove : Person -> Person -> Action ; -- I love you
|
||||||
|
AMarried : Person -> Action ; -- I am married
|
||||||
|
AReady : Person -> Action ; -- I am ready
|
||||||
AScared : Person -> Action ; -- I am scared
|
AScared : Person -> Action ; -- I am scared
|
||||||
ASpeak : Person -> Language -> Action ; -- I speak Finnish
|
ASpeak : Person -> Language -> Action ; -- I speak Finnish
|
||||||
AThirsty : Person -> Action ; -- I am thirsty
|
AThirsty : Person -> Action ; -- I am thirsty
|
||||||
@@ -236,7 +246,10 @@ Notice that also negations and questions can be formed from these.
|
|||||||
|
|
||||||
miscellaneous phrases
|
miscellaneous phrases
|
||||||
<pre>
|
<pre>
|
||||||
|
QWhatAge : Person -> Question ; -- how many years are you
|
||||||
QWhatName : Person -> Question ; -- what is your name
|
QWhatName : Person -> Question ; -- what is your name
|
||||||
|
HowMuchCost : Item -> Question ; -- how much does the pizza cost
|
||||||
|
ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros
|
||||||
|
|
||||||
PropOpen : Place -> Proposition ; -- the museum is open
|
PropOpen : Place -> Proposition ; -- the museum is open
|
||||||
PropClosed : Place -> Proposition ; -- the museum is closed
|
PropClosed : Place -> Proposition ; -- the museum is closed
|
||||||
@@ -245,14 +258,23 @@ miscellaneous phrases
|
|||||||
PropOpenDay : Place -> Day -> Proposition ; -- the museum is open on Mondays
|
PropOpenDay : Place -> Day -> Proposition ; -- the museum is open on Mondays
|
||||||
PropClosedDay : Place -> Day -> Proposition ; -- the museum is closed on Mondays
|
PropClosedDay : Place -> Day -> Proposition ; -- the museum is closed on Mondays
|
||||||
|
|
||||||
HowMuchCost : Item -> Question ; -- how much does the pizza cost
|
PSeeYou : Date -> Phrase ; -- see you on Monday
|
||||||
ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros
|
PSeeYouPlace : Place -> Date -> Phrase ; -- see you in the bar on Monday
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
family relations
|
||||||
|
<pre>
|
||||||
|
Wife, Husband : Person -> Person ; -- my wife, your husband
|
||||||
|
Son, Daughter : Person -> Person ; -- my son, your husband
|
||||||
|
Children : Person -> Person ; -- my children
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
week days
|
week days
|
||||||
<pre>
|
<pre>
|
||||||
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
|
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
|
||||||
|
|
||||||
|
Tomorrow : Date ;
|
||||||
|
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ concrete PhrasebookBul of Phrasebook =
|
|||||||
Prelude in {
|
Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PGreeting g = lin Text (ss g.s) ;
|
PGreeting g = lin Text g ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ concrete PhrasebookPol of Phrasebook =
|
|||||||
Prelude in {
|
Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PGreeting g = lin Text (ss g.s) ;
|
PGreeting g = lin Text g ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ concrete PhrasebookRus of Phrasebook =
|
|||||||
Prelude in {
|
Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PGreeting g = lin Text (ss g.s) ;
|
PGreeting g = lin Text g ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ abstract Sentences = Numeral ** {
|
|||||||
Day ; -- weekday type e.g. "Friday"
|
Day ; -- weekday type e.g. "Friday"
|
||||||
Date ; -- definite date e.g. "on Friday"
|
Date ; -- definite date e.g. "on Friday"
|
||||||
Name ; -- name of person e.g. "NN"
|
Name ; -- name of person e.g. "NN"
|
||||||
-- Numeral ; -- number expression 1 .. 999,999 e.g. "twenty"
|
Number ; -- number expression 1 .. 999,999 e.g. "twenty"
|
||||||
|
|
||||||
-- Many of the categories are accessible as Phrases, i.e. as translation units.
|
-- Many of the categories are accessible as Phrases, i.e. as translation units.
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ abstract Sentences = Numeral ** {
|
|||||||
PObject : Object -> Phrase ;
|
PObject : Object -> Phrase ;
|
||||||
PKind : Kind -> Phrase ;
|
PKind : Kind -> Phrase ;
|
||||||
PQuality : Quality -> Phrase ;
|
PQuality : Quality -> Phrase ;
|
||||||
PNumeral : Numeral -> Phrase ;
|
PNumber : Number -> Phrase ;
|
||||||
PPlace : Place -> Phrase ;
|
PPlace : Place -> Phrase ;
|
||||||
PPlaceKind : PlaceKind-> Phrase ;
|
PPlaceKind : PlaceKind-> Phrase ;
|
||||||
PCurrency : Currency -> Phrase ;
|
PCurrency : Currency -> Phrase ;
|
||||||
@@ -79,7 +79,7 @@ abstract Sentences = Numeral ** {
|
|||||||
-- Here are some general syntactic constructions.
|
-- Here are some general syntactic constructions.
|
||||||
|
|
||||||
ObjItem : Item -> Object ; -- this pizza
|
ObjItem : Item -> Object ; -- this pizza
|
||||||
ObjNumber : Numeral -> Kind -> Object ; -- five pizzas
|
ObjNumber : Number -> Kind -> Object ; -- five pizzas
|
||||||
ObjIndef : Kind -> Object ; -- a pizza
|
ObjIndef : Kind -> Object ; -- a pizza
|
||||||
|
|
||||||
SuchKind : Quality -> Kind -> Kind ; -- Italian pizza
|
SuchKind : Quality -> Kind -> Kind ; -- Italian pizza
|
||||||
@@ -92,7 +92,7 @@ abstract Sentences = Numeral ** {
|
|||||||
This, That, These, Those : Kind -> Item ; -- this pizza,...,those pizzas
|
This, That, These, Those : Kind -> Item ; -- this pizza,...,those pizzas
|
||||||
The, Thes : Kind -> Item ; -- the pizza, the pizzas
|
The, Thes : Kind -> Item ; -- the pizza, the pizzas
|
||||||
|
|
||||||
AmountCurrency : Numeral -> Currency -> Price ; -- five euros
|
AmountCurrency : Number -> Currency -> Price ; -- five euros
|
||||||
|
|
||||||
ThePlace : PlaceKind -> Place ; -- the bar
|
ThePlace : PlaceKind -> Place ; -- the bar
|
||||||
|
|
||||||
@@ -113,6 +113,8 @@ abstract Sentences = Numeral ** {
|
|||||||
|
|
||||||
---- NameString : String -> Name ; ---- creates ambiguities with all words --%
|
---- NameString : String -> Name ; ---- creates ambiguities with all words --%
|
||||||
|
|
||||||
|
NNumeral : Numeral -> Number ; -- numeral in words, e.g. "twenty"
|
||||||
|
|
||||||
-- Actions are typically language-dependent, not only lexically but also
|
-- Actions are typically language-dependent, not only lexically but also
|
||||||
-- structurally. However, these ones are mostly functorial.
|
-- structurally. However, these ones are mostly functorial.
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
concrete SentencesCat of Sentences = NumeralCat ** SentencesI - [
|
concrete SentencesCat of Sentences = NumeralCat ** SentencesI - [
|
||||||
IFemale, YouFamFemale, YouPolFemale
|
PersonName ---- stack overflow
|
||||||
|
,IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale
|
||||||
]
|
]
|
||||||
with
|
with
|
||||||
(Syntax = SyntaxCat),
|
(Syntax = SyntaxCat),
|
||||||
(Symbolic = SymbolicCat),
|
(Symbolic = SymbolicCat),
|
||||||
(Lexicon = LexiconCat) **
|
(Lexicon = LexiconCat) **
|
||||||
open SyntaxCat, ExtraCat, Prelude in {
|
open SyntaxCat, ExtraCat, Prelude in {
|
||||||
|
{-
|
||||||
lin
|
lin
|
||||||
IFemale =
|
IFemale =
|
||||||
{name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
{name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||||
@@ -20,6 +21,7 @@ concrete SentencesCat of Sentences = NumeralCat ** SentencesI - [
|
|||||||
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||||
YouPolMale =
|
YouPolMale =
|
||||||
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ;
|
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ;
|
||||||
|
-}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
concrete SentencesFin of Sentences = NumeralFin ** SentencesI - [Is,NameNN] with
|
concrete SentencesFin of Sentences = NumeralFin ** SentencesI -
|
||||||
|
[Is,NameNN,
|
||||||
|
IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale
|
||||||
|
] with
|
||||||
(Syntax = SyntaxFin),
|
(Syntax = SyntaxFin),
|
||||||
(Symbolic = SymbolicFin),
|
(Symbolic = SymbolicFin),
|
||||||
(Lexicon = LexiconFin) ** open SyntaxFin, ExtraFin, (P = ParadigmsFin), (V = VerbFin) in {
|
(Lexicon = LexiconFin) ** open SyntaxFin, ExtraFin, (P = ParadigmsFin), (V = VerbFin) in {
|
||||||
@@ -6,4 +9,11 @@ concrete SentencesFin of Sentences = NumeralFin ** SentencesI - [Is,NameNN] with
|
|||||||
lin
|
lin
|
||||||
Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ; -- pizza on herkullista
|
Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ; -- pizza on herkullista
|
||||||
NameNN = mkNP (P.mkPN (P.mkN "NN" "NN:iä")) ;
|
NameNN = mkNP (P.mkPN (P.mkN "NN" "NN:iä")) ;
|
||||||
} ;
|
|
||||||
|
IMale, IFemale =
|
||||||
|
{name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
|
||||||
|
YouFamMale, YouFamFemale =
|
||||||
|
{name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
|
||||||
|
YouPolMale, YouPolFemale =
|
||||||
|
{name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron};
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
--1 Implementation of MOLTO Phrasebook
|
||||||
|
|
||||||
|
--2 The functor for (mostly) common structures
|
||||||
|
|
||||||
incomplete concrete SentencesI of Sentences = Numeral **
|
incomplete concrete SentencesI of Sentences = Numeral **
|
||||||
open
|
open
|
||||||
Syntax,
|
Syntax,
|
||||||
@@ -15,19 +19,20 @@ incomplete concrete SentencesI of Sentences = Numeral **
|
|||||||
Quality = AP ;
|
Quality = AP ;
|
||||||
Property = A ;
|
Property = A ;
|
||||||
Object = NP ;
|
Object = NP ;
|
||||||
Place = {name : NP ; at : Adv ; to : Adv} ;
|
Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv} ;
|
||||||
PlaceKind = {name : CN ; at : Prep ; to : Prep} ;
|
PlaceKind = CNPlace ; -- {name : CN ; at : Prep ; to : Prep} ;
|
||||||
Currency = CN ;
|
Currency = CN ;
|
||||||
Price = NP ;
|
Price = NP ;
|
||||||
Action = Cl ;
|
Action = Cl ;
|
||||||
Person = {name : NP ; isPron : Bool ; poss : Quant} ;
|
Person = NPPerson ; -- {name : NP ; isPron : Bool ; poss : Quant} ;
|
||||||
Nationality = {lang : NP ; prop : A ; country : NP} ;
|
Nationality = NPNationality ; -- {lang : NP ; country : NP ; prop : A} ;
|
||||||
Language = NP ;
|
Language = NP ;
|
||||||
Citizenship = A ;
|
Citizenship = A ;
|
||||||
Country = NP ;
|
Country = NP ;
|
||||||
Day = {name : NP ; point : Adv ; habitual : Adv} ;
|
Day = NPDay ; -- {name : NP ; point : Adv ; habitual : Adv} ;
|
||||||
Date = Adv ;
|
Date = Adv ;
|
||||||
Name = NP ;
|
Name = NP ;
|
||||||
|
Number = Card ;
|
||||||
lin
|
lin
|
||||||
PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
|
PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
|
||||||
PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
|
PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
|
||||||
@@ -35,7 +40,7 @@ incomplete concrete SentencesI of Sentences = Numeral **
|
|||||||
PObject x = mkPhrase (mkUtt x) ;
|
PObject x = mkPhrase (mkUtt x) ;
|
||||||
PKind x = mkPhrase (mkUtt x) ;
|
PKind x = mkPhrase (mkUtt x) ;
|
||||||
PQuality x = mkPhrase (mkUtt x) ;
|
PQuality x = mkPhrase (mkUtt x) ;
|
||||||
PNumeral x = mkPhrase (mkUtt (mkCard (x ** {lock_Numeral = <>}))) ;
|
PNumber x = mkPhrase (mkUtt x) ;
|
||||||
PPlace x = mkPhrase (mkUtt x.name) ;
|
PPlace x = mkPhrase (mkUtt x.name) ;
|
||||||
PPlaceKind x = mkPhrase (mkUtt x.name) ;
|
PPlaceKind x = mkPhrase (mkUtt x.name) ;
|
||||||
PCurrency x = mkPhrase (mkUtt x) ;
|
PCurrency x = mkPhrase (mkUtt x) ;
|
||||||
@@ -59,10 +64,10 @@ incomplete concrete SentencesI of Sentences = Numeral **
|
|||||||
|
|
||||||
PropAction a = a ;
|
PropAction a = a ;
|
||||||
|
|
||||||
AmountCurrency num curr = mkNP <lin Numeral num : Numeral> curr ;
|
AmountCurrency num curr = mkNP num curr ;
|
||||||
|
|
||||||
ObjItem i = i ;
|
ObjItem i = i ;
|
||||||
ObjNumber n k = mkNP <lin Numeral n : Numeral> k ;
|
ObjNumber n k = mkNP n k ;
|
||||||
ObjIndef k = mkNP a_Quant k ;
|
ObjIndef k = mkNP a_Quant k ;
|
||||||
|
|
||||||
This kind = mkNP this_Quant kind ;
|
This kind = mkNP this_Quant kind ;
|
||||||
@@ -97,17 +102,73 @@ incomplete concrete SentencesI of Sentences = Numeral **
|
|||||||
|
|
||||||
PersonName n =
|
PersonName n =
|
||||||
{name = n ; isPron = False ; poss = mkQuant he_Pron} ; -- poss not used
|
{name = n ; isPron = False ; poss = mkQuant he_Pron} ; -- poss not used
|
||||||
---- NameString s = symb s ;
|
---- NameString s = symb s ; --%
|
||||||
NameNN = symb "NN" ;
|
NameNN = symb "NN" ;
|
||||||
|
|
||||||
|
NNumeral n = mkCard <lin Numeral n : Numeral> ;
|
||||||
|
|
||||||
AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
|
AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
|
||||||
ACitizen p n = mkCl p.name n ;
|
ACitizen p n = mkCl p.name n ;
|
||||||
ABePlace p place = mkCl p.name place.at ;
|
ABePlace p place = mkCl p.name place.at ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
|
-- These operations are used internally in Sentences.
|
||||||
|
|
||||||
mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
|
mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
|
||||||
|
|
||||||
mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
|
mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
|
||||||
{name = mkNP p ; isPron = True ; poss = mkQuant p} ;
|
{name = mkNP p ; isPron = True ; poss = mkQuant p} ;
|
||||||
|
|
||||||
|
-- These are used in Words for each language.
|
||||||
|
|
||||||
|
NPNationality : Type = {lang : NP ; country : NP ; prop : A} ;
|
||||||
|
|
||||||
|
mkNPNationality : NP -> NP -> A -> NPNationality = \la,co,pro ->
|
||||||
|
{lang = la ;
|
||||||
|
country = co ;
|
||||||
|
prop = pro
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NPDay : Type = {name : NP ; point : Adv ; habitual : Adv} ;
|
||||||
|
|
||||||
|
mkNPDay : NP -> Adv -> Adv -> NPDay = \d,p,h ->
|
||||||
|
{name = d ;
|
||||||
|
point = p ;
|
||||||
|
habitual = h
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NPPlace : Type = {name : NP ; at : Adv ; to : Adv} ;
|
||||||
|
CNPlace : Type = {name : CN ; at : Prep ; to : Prep} ;
|
||||||
|
|
||||||
|
mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
|
||||||
|
name = p ;
|
||||||
|
at = i ;
|
||||||
|
to = t
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
|
||||||
|
|
||||||
|
relativePerson : GNumber -> CN -> (Num -> NP -> CN -> NP) -> NPPerson -> NPPerson =
|
||||||
|
\n,x,f,p ->
|
||||||
|
let num = if_then_else Num n plNum sgNum in {
|
||||||
|
name = case p.isPron of {
|
||||||
|
True => mkNP p.poss num x ;
|
||||||
|
_ => f num p.name x
|
||||||
|
} ;
|
||||||
|
isPron = False ;
|
||||||
|
poss = mkQuant he_Pron -- not used because not pron
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GNumber : PType = Bool ;
|
||||||
|
sing = False ; plur = True ;
|
||||||
|
|
||||||
|
-- for languages without GenNP, use "the wife of p"
|
||||||
|
mkRelative : Bool -> CN -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
|
relativePerson n x
|
||||||
|
(\a,b,c -> mkNP (mkNP the_Quant a c) (Syntax.mkAdv possess_Prep b)) p ;
|
||||||
|
|
||||||
|
-- for languages with GenNP, use "p's wife"
|
||||||
|
-- relativePerson n x (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
concrete SentencesRus of Sentences = NumeralRus ** SentencesI - [NameNN, Today] with
|
concrete SentencesRus of Sentences = NumeralRus ** SentencesI - [
|
||||||
|
Today, NameNN -- not defined in lib
|
||||||
|
] with
|
||||||
(Syntax = SyntaxRus),
|
(Syntax = SyntaxRus),
|
||||||
--- (Symbolic = SymbolicRus),
|
-- (Symbolic = SymbolicRus),
|
||||||
(Lexicon = LexiconRus) ** open ParadigmsRus in {
|
(Lexicon = LexiconRus) ;
|
||||||
|
|
||||||
flags coding = utf8 ;
|
|
||||||
|
|
||||||
lin NameNN = mkNP (mkPN "нн" masculine animate) ;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -23,3 +23,4 @@ concrete SentencesSpa of Sentences = NumeralSpa ** SentencesI - [
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -78,9 +78,11 @@ abstract Words = Sentences ** {
|
|||||||
-- Actions (which can be expressed by different structures in different languages).
|
-- Actions (which can be expressed by different structures in different languages).
|
||||||
-- Notice that also negations and questions can be formed from these.
|
-- Notice that also negations and questions can be formed from these.
|
||||||
|
|
||||||
AHasAge : Person -> Numeral -> Action ; -- I am seventy years
|
AHasAge : Person -> Number -> Action ; -- I am seventy years
|
||||||
AHasChildren: Person -> Numeral -> Action ; -- I have six children
|
AHasChildren: Person -> Number -> Action ; -- I have six children
|
||||||
AHasName : Person -> Name -> Action ; -- my name is Bond
|
AHasName : Person -> Name -> Action ; -- my name is Bond
|
||||||
|
AHasRoom : Person -> Number -> Action ; -- you have a room for five persons
|
||||||
|
AHasTable : Person -> Number -> Action ; -- you have a table for five persons
|
||||||
AHungry : Person -> Action ; -- I am hungry
|
AHungry : Person -> Action ; -- I am hungry
|
||||||
AIll : Person -> Action ; -- I am ill
|
AIll : Person -> Action ; -- I am ill
|
||||||
AKnow : Person -> Action ; -- I (don't) know
|
AKnow : Person -> Action ; -- I (don't) know
|
||||||
@@ -88,6 +90,7 @@ abstract Words = Sentences ** {
|
|||||||
ALive : Person -> Country -> Action ; -- I live in Sweden
|
ALive : Person -> Country -> Action ; -- I live in Sweden
|
||||||
ALove : Person -> Person -> Action ; -- I love you
|
ALove : Person -> Person -> Action ; -- I love you
|
||||||
AMarried : Person -> Action ; -- I am married
|
AMarried : Person -> Action ; -- I am married
|
||||||
|
AReady : Person -> Action ; -- I am ready
|
||||||
AScared : Person -> Action ; -- I am scared
|
AScared : Person -> Action ; -- I am scared
|
||||||
ASpeak : Person -> Language -> Action ; -- I speak Finnish
|
ASpeak : Person -> Language -> Action ; -- I speak Finnish
|
||||||
AThirsty : Person -> Action ; -- I am thirsty
|
AThirsty : Person -> Action ; -- I am thirsty
|
||||||
@@ -100,6 +103,8 @@ abstract Words = Sentences ** {
|
|||||||
|
|
||||||
QWhatAge : Person -> Question ; -- how many years are you
|
QWhatAge : Person -> Question ; -- how many years are you
|
||||||
QWhatName : Person -> Question ; -- what is your name
|
QWhatName : Person -> Question ; -- what is your name
|
||||||
|
HowMuchCost : Item -> Question ; -- how much does the pizza cost
|
||||||
|
ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros
|
||||||
|
|
||||||
PropOpen : Place -> Proposition ; -- the museum is open
|
PropOpen : Place -> Proposition ; -- the museum is open
|
||||||
PropClosed : Place -> Proposition ; -- the museum is closed
|
PropClosed : Place -> Proposition ; -- the museum is closed
|
||||||
@@ -108,8 +113,10 @@ abstract Words = Sentences ** {
|
|||||||
PropOpenDay : Place -> Day -> Proposition ; -- the museum is open on Mondays
|
PropOpenDay : Place -> Day -> Proposition ; -- the museum is open on Mondays
|
||||||
PropClosedDay : Place -> Day -> Proposition ; -- the museum is closed on Mondays
|
PropClosedDay : Place -> Day -> Proposition ; -- the museum is closed on Mondays
|
||||||
|
|
||||||
HowMuchCost : Item -> Question ; -- how much does the pizza cost
|
PSeeYou : Date -> Phrase ; -- see you on Monday
|
||||||
ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros
|
PSeeYouPlace : Place -> Date -> Phrase ; -- see you in the bar on Monday
|
||||||
|
|
||||||
|
-- family relations
|
||||||
|
|
||||||
Wife, Husband : Person -> Person ; -- my wife, your husband
|
Wife, Husband : Person -> Person ; -- my wife, your husband
|
||||||
Son, Daughter : Person -> Person ; -- my son, your husband
|
Son, Daughter : Person -> Person ; -- my son, your husband
|
||||||
@@ -119,4 +126,6 @@ abstract Words = Sentences ** {
|
|||||||
|
|
||||||
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
|
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
|
||||||
|
|
||||||
|
Tomorrow : Date ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,134 +1,176 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
--2 Implementations of Words, with English as example
|
||||||
|
|
||||||
concrete WordsBul of Words = SentencesBul **
|
concrete WordsBul of Words = SentencesBul **
|
||||||
open SyntaxBul, ParadigmsBul, (L = LexiconBul), Prelude in {
|
open
|
||||||
|
SyntaxBul,
|
||||||
|
ParadigmsBul,
|
||||||
|
(L = LexiconBul),
|
||||||
|
(P = ParadigmsBul),
|
||||||
|
ExtraBul,
|
||||||
|
Prelude in {
|
||||||
lin
|
lin
|
||||||
|
|
||||||
-- kinds of food
|
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||||
--
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "ost") ;
|
-- Cheese = mkCN (mkN "cheese") ;
|
||||||
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
-- Chicken = mkCN (mkN "chicken") ;
|
||||||
|
-- Coffee = mkCN (mkN "coffee") ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "meat") ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "te" neutrum) ;
|
-- Tea = mkCN (mkN "tea") ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
|
|
||||||
-- properties
|
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||||
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "tråkig" ;
|
-- Boring = mkA "boring" ;
|
||||||
|
-- Cheap = mkA "cheap" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "läcker" ;
|
-- Delicious = mkA "delicious" ;
|
||||||
-- Expensive = mkA "dyr" ;
|
-- Expensive = mkA "expensive" ;
|
||||||
-- Fresh = mkA "färsk" ;
|
-- Fresh = mkA "fresh" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
-- Suspect = mkA "suspect" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
|
||||||
-- places
|
-- Places require different prepositions to express location; in some languages
|
||||||
--
|
-- also the directional preposition varies, but in English we use $to$, as
|
||||||
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
-- defined by $mkPlace$.
|
||||||
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
|
||||||
-- Church = mkPlace (mkN "kyrka") "i" ;
|
-- Airport = mkPlace "airport" "at" ;
|
||||||
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
-- Bar = mkPlace "bar" "in" ;
|
||||||
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
-- Church = mkPlace "church" "in" ;
|
||||||
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
-- Cinema = mkPlace "cinema" "at" ;
|
||||||
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
-- Hospital = mkPlace "hospital" "in" ;
|
||||||
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
-- Hotel = mkPlace "hotel" "in" ;
|
||||||
--
|
-- Museum = mkPlace "museum" "in" ;
|
||||||
-- currencies
|
-- Park = mkPlace "park" "in" ;
|
||||||
--
|
-- Restaurant = mkPlace "restaurant" "in" ;
|
||||||
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
-- School = mkPlace "school" "at" ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Shop = mkPlace "shop" "in" ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro") ;
|
-- Station = mkPlace "station" "at" ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Theatre = mkPlace "theatre" "at" ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- Toilet = mkPlace "toilet" "in" ;
|
||||||
--
|
-- University = mkPlace "university" "at" ;
|
||||||
-- nationalities
|
|
||||||
--
|
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||||
-- Belgian = mkA "belgisk" ;
|
|
||||||
-- Belgium = mkNP (mkPN "Belgien") ;
|
-- DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
-- English = mkNat "engelsk" "England" ;
|
-- Dollar = mkCN (mkN "dollar") ;
|
||||||
-- Finnish = mkNat "finsk" "Finland" ;
|
-- Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
||||||
-- Flemish = mkNP (mkPN "flamländska") ;
|
-- Lei = mkCN (mkN "leu" "lei") ;
|
||||||
-- French = mkNat "fransk" "Frankrike" ;
|
-- SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
-- Italian = mkNat "italiensk" "Italien" ;
|
|
||||||
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
-- Nationalities
|
||||||
-- Swedish = mkNat "svensk" "Sverige" ;
|
|
||||||
--
|
-- Belgian = mkA "Belgian" ;
|
||||||
-- actions
|
-- Belgium = mkNP (mkPN "Belgium") ;
|
||||||
--
|
-- English = mkNat "English" "England" ;
|
||||||
-- AHasName p name = mkCl (nameOf p) name ;
|
-- Finnish = mkNat "Finnish" "Finland" ;
|
||||||
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
-- Flemish = mkNP (mkPN "Flemish") ;
|
||||||
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
-- French = mkNat "French" "France" ;
|
||||||
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
-- Italian = mkNat "Italian" "Italy" ;
|
||||||
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
-- Romanian = mkNat "Romanian" "Romania" ;
|
||||||
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxBul.mkAdv in_Prep co)) ;
|
-- Swedish = mkNat "Swedish" "Sweden" ;
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
|
||||||
-- AScared p = mkCl p.name (mkA "rädd") ;
|
-- Actions: the predication patterns are very often language-dependent.
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
|
||||||
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
-- ATired p = mkCl p.name (mkA "trött") ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
-- (mkNP (mkNP a_Det (mkN "room")) (SyntaxBul.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
--
|
-- (mkNP (mkNP a_Det (mkN "table")) (SyntaxBul.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
|
-- AHasName p name = mkCl (nameOf p) name ;
|
||||||
|
-- AHungry p = mkCl p.name (mkA "hungry") ;
|
||||||
|
-- AIll p = mkCl p.name (mkA "ill") ;
|
||||||
|
-- AKnow p = mkCl p.name IrregBul.know_V ;
|
||||||
|
-- ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
|
||||||
|
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxBul.mkAdv in_Prep co)) ;
|
||||||
|
-- ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
||||||
|
-- AMarried p = mkCl p.name (mkA "married") ;
|
||||||
|
-- AReady p = mkCl p.name (mkA "ready") ;
|
||||||
|
-- AScared p = mkCl p.name (mkA "scared") ;
|
||||||
|
-- ASpeak p lang = mkCl p.name (mkV2 IrregBul.speak_V) lang ;
|
||||||
|
-- AThirsty p = mkCl p.name (mkA "thirsty") ;
|
||||||
|
-- ATired p = mkCl p.name (mkA "tired") ;
|
||||||
|
-- AUnderstand p = mkCl p.name IrregBul.understand_V ;
|
||||||
|
-- AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
|
||||||
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregBul.go_V) place.to) ;
|
||||||
|
|
||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
--
|
|
||||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||||
--
|
-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregBul.cost_V)) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ItCost item price = mkCl item (mkV2 IrregBul.cost_V) price ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- PropOpen p = mkCl p.name open_Adv ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- PropClosed p = mkCl p.name closed_Adv ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
||||||
--
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
-- PSeeYou d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
-- PSeeYouPlace p d =
|
||||||
|
-- mkText (lin Text (ss ("see you")))
|
||||||
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
-- Wife = xOf sing (mkN "wife") ;
|
||||||
|
-- Husband = xOf sing (mkN "husband") ;
|
||||||
|
-- Son = xOf sing (mkN "son") ;
|
||||||
|
-- Daughter = xOf sing (mkN "daughter") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
--
|
|
||||||
-- Monday = mkDay "måndag" ;
|
-- Monday = mkDay "Monday" ;
|
||||||
-- Tuesday = mkDay "tisdag" ;
|
-- Tuesday = mkDay "Tuesday" ;
|
||||||
-- Wednesday = mkDay "onsdag" ;
|
-- Wednesday = mkDay "Wednesday" ;
|
||||||
-- Thursday = mkDay "torsdag" ;
|
-- Thursday = mkDay "Thursday" ;
|
||||||
-- Friday = mkDay "fredag" ;
|
-- Friday = mkDay "Friday" ;
|
||||||
-- Saturday = mkDay "lördag" ;
|
-- Saturday = mkDay "Saturday" ;
|
||||||
-- Sunday = mkDay "söndag" ;
|
-- Sunday = mkDay "Sunday" ;
|
||||||
--
|
|
||||||
-- oper
|
-- Tomorrow = P.mkAdv "tomorrow" ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
-- {lang = mkNP (mkPN (nat + "a")) ;
|
-- auxiliaries
|
||||||
-- prop = mkA nat ; country = mkNP (mkPN co)} ;
|
|
||||||
--
|
-- oper
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
|
||||||
-- let day = mkNP (mkPN d) in
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
-- {name = day ;
|
-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
-- point = SyntaxBul.mkAdv on_Prep day ;
|
|
||||||
-- habitual = SyntaxBul.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
-- } ;
|
-- let day = mkNP (mkPN d) in
|
||||||
--
|
-- mkNPDay day (SyntaxBul.mkAdv on_Prep day)
|
||||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- (SyntaxBul.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
-- name = mkCN p ;
|
|
||||||
-- at = mkPrep i ;
|
-- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
-- to = to_Prep
|
-- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||||
-- } ;
|
|
||||||
--
|
-- open_Adv = P.mkAdv "open" ;
|
||||||
-- open_A = mkA "öppen" "öppet" ;
|
-- closed_Adv = P.mkAdv "closed" ;
|
||||||
-- closed_A = mkA "stängd" "stängt" ;
|
|
||||||
--
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
-- nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
|
-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
-- case p.isPron of {
|
|
||||||
-- True => mkNP p.poss (mkN "namn" "namn") ;
|
-- nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
||||||
-- _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
|
|
||||||
-- (SyntaxBul.mkAdv possess_Prep p.name)
|
--}
|
||||||
-- } ;
|
|
||||||
-- }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
-- (c) 2009 Aarne Ranta and Olga Caprotti under LGPL
|
-- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
|
||||||
|
|
||||||
concrete WordsCat of Words = SentencesCat ** open
|
concrete WordsCat of Words = SentencesCat ** open
|
||||||
SyntaxCat,
|
SyntaxCat,
|
||||||
@@ -6,131 +6,169 @@ concrete WordsCat of Words = SentencesCat ** open
|
|||||||
(E = ExtraCat),
|
(E = ExtraCat),
|
||||||
(L = LexiconCat),
|
(L = LexiconCat),
|
||||||
(P = ParadigmsCat),
|
(P = ParadigmsCat),
|
||||||
ParadigmsCat in {
|
ParadigmsCat,
|
||||||
|
Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
lin
|
|
||||||
|
|
||||||
-- kinds
|
-- kinds
|
||||||
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "formaggio") ;
|
-- Cheese = mkCN (mkN "formaggio") ;
|
||||||
-- Coffee = mkCN (mkN "caffè") ;
|
-- Chicken = mkCN (mkN "pollo") ;
|
||||||
|
-- Coffee = mkCN (mkN "caffè") ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "carne" feminine) ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "tè") ;
|
-- Tea = mkCN (mkN "tè") ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
|
|
||||||
-- properties
|
-- properties
|
||||||
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "noioso" ;
|
-- Boring = mkA "noioso" ;
|
||||||
|
-- Cheap = let c = "a buon mercato" in mkA c c c c c ; ----
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "delizioso" ;
|
-- Delicious = mkA "delizioso" ;
|
||||||
-- Expensive = mkA "caro" ;
|
-- Expensive = mkA "caro" ;
|
||||||
-- Fresh = mkA "fresco" ;
|
-- Fresh = mkA "fresco" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
-- Suspect = mkA "sospetto" ;
|
||||||
-- -- places
|
|
||||||
--
|
-- places
|
||||||
-- Airport = mkPlace (mkN "aeroporto") dative ;
|
|
||||||
-- Bar = mkPlace (mkN "bar") P.in_Prep ;
|
-- Airport = mkPlace (mkN "aeroporto") dative ;
|
||||||
-- Church = mkPlace (mkN "chiesa") P.in_Prep ;
|
-- Bar = mkPlace (mkN "bar") P.in_Prep ;
|
||||||
-- Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
|
-- Church = mkPlace (mkN "chiesa") P.in_Prep ;
|
||||||
-- Museum = mkPlace (mkN "museo") P.in_Prep ;
|
-- Cinema = mkPlace (mkN "cinema") P.in_Prep ;
|
||||||
-- Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
|
-- Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
|
||||||
-- Station = mkPlace (mkN "stazione" feminine) dative ;
|
-- Hotel = mkPlace (mkN "albergo") P.in_Prep ;
|
||||||
-- Toilet = mkPlace (mkN "bagno") P.in_Prep ;
|
-- Museum = mkPlace (mkN "museo") P.in_Prep ;
|
||||||
--
|
-- Park = mkPlace (mkN "parco") P.in_Prep ;
|
||||||
-- -- currencies
|
-- Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
|
||||||
--
|
-- School = mkPlace (mkN "scuola") P.in_Prep ;
|
||||||
-- DanishCrown = mkCN (mkA "danese") (mkN "corona") ;
|
-- Shop = mkPlace (mkN "negozio") P.in_Prep ;
|
||||||
-- Dollar = mkCN (mkN "dollar") ;
|
-- Station = mkPlace (mkN "stazione" feminine) dative ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro" masculine) ;
|
-- Theatre = mkPlace (mkN "teatro") P.in_Prep ;
|
||||||
-- Lei = mkCN (mkN "lei") ; ---- ?
|
-- Toilet = mkPlace (mkN "bagno") P.in_Prep ;
|
||||||
--
|
-- University = mkPlace (mkN "università") dative ;
|
||||||
-- -- nationalities
|
|
||||||
--
|
-- currencies
|
||||||
-- Belgian = mkA "belgo" ;
|
|
||||||
-- Belgium = mkNP (mkPN "Belgio") ;
|
-- DanishCrown = mkCN (mkA "danese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||||
-- English = mkNat "inglese" "Inghilterra" ;
|
-- Dollar = mkCN (mkN "dollar") ;
|
||||||
-- Finnish = mkNat "finlandese" "Finlandia" ;
|
-- Euro = mkCN (mkN "euro" "euro" masculine) ;
|
||||||
-- Flemish = mkNP (mkPN "fiammingo") ;
|
-- Lei = mkCN (mkN "lei") ; ---- ?
|
||||||
-- French = mkNat "francese" "Francia" ;
|
-- SwedishCrown = mkCN (mkA "svedese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||||
-- Italian = mkNat "italiano" "Italia" ;
|
|
||||||
-- Romanian = mkNat "rumeno" "Romania" ;
|
-- nationalities
|
||||||
-- Swedish = mkNat "svedese" "Svezia" ;
|
|
||||||
--
|
-- Belgian = mkA "belgo" ;
|
||||||
-- -- actions
|
-- Belgium = mkNP (mkPN "Belgio") ;
|
||||||
--
|
-- English = mkNat "inglese" "Inghilterra" ;
|
||||||
-- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
|
-- Finnish = mkNat "finlandese" "Finlandia" ;
|
||||||
-- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
|
-- Flemish = mkNP (mkPN "fiammingo") ;
|
||||||
-- AIll p = mkCl p.name (mkA "malato") ;
|
-- French = mkNat "francese" "Francia" ;
|
||||||
-- AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ;
|
-- Italian = mkNat "italiano" "Italia" ;
|
||||||
-- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ;
|
-- Romanian = mkNat "rumeno" "Romania" ;
|
||||||
-- ALive p co =
|
-- Swedish = mkNat "svedese" "Svezia" ;
|
||||||
-- mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxCat.mkAdv P.in_Prep co)) ;
|
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
|
-- actions
|
||||||
-- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
|
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
|
-- AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
|
||||||
-- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- ATired p = mkCl p.name (mkA "stanco") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- AUnderstand p = mkCl p.name (mkV "capire") ;
|
-- (mkNP (mkNP a_Det (mkN "camera")) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||||
-- AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- (mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||||
--
|
-- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
|
||||||
--
|
-- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
|
||||||
-- -- miscellaneous
|
-- AIll p = mkCl p.name (mkA "malato") ;
|
||||||
--
|
-- AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ;
|
||||||
-- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
|
-- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ;
|
||||||
--
|
-- ALive p co =
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxCat.mkAdv P.in_Prep co)) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
-- AMarried p = mkCl p.name (mkA "sposato") ;
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- AReady p = mkCl p.name (mkA "pronto") ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
|
||||||
--
|
-- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
|
-- ATired p = mkCl p.name (mkA "stanco") ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
|
-- AUnderstand p = mkCl p.name (mkV "capire") ;
|
||||||
--
|
-- AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ;
|
||||||
-- -- week days
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||||
--
|
|
||||||
-- Monday = mkDay "lunedì" ;
|
|
||||||
-- Tuesday = mkDay "martedì" ;
|
-- miscellaneous
|
||||||
-- Wednesday = mkDay "mercoledì" ;
|
|
||||||
-- Thursday = mkDay "giovedì" ;
|
-- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
|
||||||
-- Friday = mkDay "venerdì" ;
|
-- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
|
||||||
-- Saturday = mkDay "sabato" ;
|
|
||||||
-- Sunday = mkDay "domenica" ;
|
-- PropOpen p = mkCl p.name open_A ;
|
||||||
--
|
-- PropClosed p = mkCl p.name closed_A ;
|
||||||
-- -- auxiliaries
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
||||||
-- oper
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||||
-- {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
|
|
||||||
--
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
-- ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
|
||||||
-- let day = mkNP (mkPN d) in
|
|
||||||
-- {name = day ;
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
-- point, -- = ParadigmsCat.mkAdv d ;
|
-- mkText : Text -> Text -> Text ;
|
||||||
-- habitual = ParadigmsCat.mkAdv ("il" ++ d) ; ---- ?
|
|
||||||
-- } ;
|
-- PSeeYou d = mkText (lin Text (ss ("arrivederci"))) (mkPhrase (mkUtt d)) ;
|
||||||
--
|
-- PSeeYouPlace p d =
|
||||||
-- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- mkText (lin Text (ss ("arrivederci")))
|
||||||
-- name = mkCN p ;
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
-- at = i ;
|
|
||||||
-- to = dative
|
-- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
|
||||||
-- } ;
|
-- below. Languages with productive genitives can use an equivalent of
|
||||||
--
|
-- "my son's wife" for non-pronouns, as e.g. in English.
|
||||||
-- open_A = mkA "aperto" ;
|
|
||||||
-- closed_A = mkA "chiuso" ;
|
-- Wife = xOf sing (mkN "sposa") ;
|
||||||
--
|
-- Husband = xOf sing (mkN "marito") ;
|
||||||
--
|
-- Son = xOf sing (mkN "figlio") ;
|
||||||
-- }
|
-- Daughter = xOf sing (mkN "figlia") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
|
-- week days
|
||||||
|
|
||||||
|
-- Monday = mkDay "lunedì" ;
|
||||||
|
-- Tuesday = mkDay "martedì" ;
|
||||||
|
-- Wednesday = mkDay "mercoledì" ;
|
||||||
|
-- Thursday = mkDay "giovedì" ;
|
||||||
|
-- Friday = mkDay "venerdì" ;
|
||||||
|
-- Saturday = mkDay "sabato" ;
|
||||||
|
-- Sunday = mkDay "domenica" ;
|
||||||
|
|
||||||
|
-- Tomorrow = P.mkAdv "domani" ;
|
||||||
|
|
||||||
|
-- auxiliaries
|
||||||
|
|
||||||
|
-- oper
|
||||||
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
|
-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
|
|
||||||
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
|
-- let day = mkNP (mkPN d) in
|
||||||
|
-- mkNPDay day (P.mkAdv ("il" ++ d)) (P.mkAdv ("il" ++ d)) ; ---- ?
|
||||||
|
|
||||||
|
-- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
|
-- mkCNPlace (mkCN p) i dative ;
|
||||||
|
|
||||||
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||||
|
|
||||||
|
-- open_A = mkA "aperto" ;
|
||||||
|
-- closed_A = mkA "chiuso" ;
|
||||||
|
|
||||||
|
|
||||||
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,134 +1,167 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
-- (c) 2009 Aarne Ranta under LGPL
|
||||||
|
|
||||||
concrete WordsDan of Words = SentencesDan **
|
concrete WordsDan of Words = SentencesDan **
|
||||||
open SyntaxDan, ParadigmsDan, IrregDan, (L = LexiconDan), Prelude in {
|
open SyntaxDan, ParadigmsDan, IrregDan, (L = LexiconDan), ExtraDan, Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
-- kinds of food
|
-- kinds of food
|
||||||
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "ost") ;
|
-- Cheese = mkCN (mkN "ost") ;
|
||||||
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
-- Chicken = mkCN (mkN "kyckling") ;
|
||||||
-- Fish = mkCN L.fish_N ;
|
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
||||||
-- Milk = mkCN L.milk_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Meat = mkCN (mkN "kött" "kött") ;
|
||||||
|
Milk = mkCN L.milk_N ;
|
||||||
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "te" neutrum) ;
|
-- Tea = mkCN (mkN "te" neutrum) ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
|
|
||||||
-- properties
|
-- properties
|
||||||
--
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "tråkig" ;
|
-- Cheap = mkA "billig" ;
|
||||||
|
-- Boring = mkA "tråkig" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "läcker" ;
|
-- Delicious = mkA "läcker" ;
|
||||||
-- Expensive = mkA "dyr" ;
|
-- Expensive = mkA "dyr" ;
|
||||||
-- Fresh = mkA "färsk" ;
|
-- Fresh = mkA "färsk" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
-- Suspect = mkA "suspekt" "suspekt" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
|
||||||
-- places
|
-- places
|
||||||
--
|
|
||||||
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
||||||
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
||||||
-- Church = mkPlace (mkN "kyrka") "i" ;
|
-- Church = mkPlace (mkN "kyrka") "i" ;
|
||||||
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
-- Cinema = mkPlace (mkN "bio" "bio" "bion" "biona") "på" ; ---- ?
|
||||||
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
||||||
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
-- Hotel = mkPlace (mkN "hotell" "hotell") "på" ;
|
||||||
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
||||||
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
-- Park = mkPlace (mkN "park" "parker") "i" ;
|
||||||
--
|
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
||||||
|
-- Shop = mkPlace (mkN "affär" "affär") "i" ;
|
||||||
|
-- School = mkPlace (mkN "skola") "på" ;
|
||||||
|
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
||||||
|
-- Theatre = mkPlace (mkN "teater" "teatrar") "på" ;
|
||||||
|
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
||||||
|
-- University = mkPlace (mkN "universitet" "universitet") "på" ;
|
||||||
|
|
||||||
-- currencies
|
-- currencies
|
||||||
--
|
|
||||||
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro") ;
|
-- Euro = mkCN (mkN "euro" "euro") ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Lei = mkCN (mkN "lei" "lei") ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
--
|
|
||||||
-- nationalities
|
-- nationalities
|
||||||
--
|
|
||||||
-- Belgian = mkA "belgisk" ;
|
-- Belgian = mkA "belgisk" ;
|
||||||
-- Belgium = mkNP (mkPN "Belgien") ;
|
-- Belgium = mkNP (mkPN "Belgien") ;
|
||||||
-- English = mkNat "engelsk" "England" ;
|
-- English = mkNat "engelsk" "England" ;
|
||||||
-- Finnish = mkNat "finsk" "Finland" ;
|
-- Finnish = mkNat "finsk" "Finland" ;
|
||||||
-- Flemish = mkNP (mkPN "flamländska") ;
|
-- Flemish = mkNP (mkPN "flamländska") ;
|
||||||
-- French = mkNat "fransk" "Frankrike" ;
|
-- French = mkNat "fransk" "Frankrike" ;
|
||||||
-- Italian = mkNat "italiensk" "Italien" ;
|
-- Italian = mkNat "italiensk" "Italien" ;
|
||||||
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
||||||
-- Swedish = mkNat "svensk" "Sverige" ;
|
-- Swedish = mkNat "svensk" "Sverige" ;
|
||||||
--
|
|
||||||
-- actions
|
-- actions
|
||||||
--
|
|
||||||
-- AHasName p name = mkCl (nameOf p) name ;
|
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
-- AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
|
||||||
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
-- (mkNP (mkNP a_Det (mkN "rum" "rum"))
|
||||||
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDan.mkAdv in_Prep co)) ;
|
-- (SyntaxDan.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
-- AScared p = mkCl p.name (mkA "rädd") ;
|
-- (mkNP (mkNP a_Det (mkN "bord" "bord"))
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
-- (SyntaxDan.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
||||||
-- ATired p = mkCl p.name (mkA "trött") ;
|
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
||||||
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||||
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
||||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDan.mkAdv in_Prep co)) ;
|
||||||
--
|
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
||||||
|
-- AMarried p = mkCl p.name (mkA "gift") ;
|
||||||
|
-- AReady p = mkCl p.name (mkA "färdig") ;
|
||||||
|
-- AScared p = mkCl p.name (mkA "rädd") ;
|
||||||
|
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
||||||
|
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
||||||
|
-- ATired p = mkCl p.name (mkA "trött") ;
|
||||||
|
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
||||||
|
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
||||||
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||||
|
|
||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
--
|
|
||||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
-- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
|
||||||
--
|
-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- PropOpen p = mkCl p.name open_A ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- PropClosed p = mkCl p.name closed_A ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||||
--
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
-- PSeeYou d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
-- PSeeYouPlace p d =
|
||||||
|
-- mkText (lin Text (ss ("vi ses")))
|
||||||
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
-- Wife = xOf sing (mkN "fru" "fruar") ;
|
||||||
|
-- Husband = xOf sing L.man_N ;
|
||||||
|
-- Son = xOf sing (mkN "son" "söner") ;
|
||||||
|
-- Daughter = xOf sing (mkN "dotter" "döttrar") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
--
|
|
||||||
-- Monday = mkDay "måndag" ;
|
-- Monday = mkDay "måndag" ;
|
||||||
-- Tuesday = mkDay "tisdag" ;
|
-- Tuesday = mkDay "tisdag" ;
|
||||||
-- Wednesday = mkDay "onsdag" ;
|
-- Wednesday = mkDay "onsdag" ;
|
||||||
-- Thursday = mkDay "torsdag" ;
|
-- Thursday = mkDay "torsdag" ;
|
||||||
-- Friday = mkDay "fredag" ;
|
-- Friday = mkDay "fredag" ;
|
||||||
-- Saturday = mkDay "lördag" ;
|
-- Saturday = mkDay "lördag" ;
|
||||||
-- Sunday = mkDay "söndag" ;
|
-- Sunday = mkDay "söndag" ;
|
||||||
--
|
|
||||||
-- oper
|
-- Tomorrow = ParadigmsDan.mkAdv "imorgon" ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
-- {lang = mkNP (mkPN (nat + "a")) ;
|
-- oper
|
||||||
-- prop = mkA nat ; country = mkNP (mkPN co)} ;
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
--
|
-- mkNPNationality (mkNP (mkPN (nat + "a"))) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
|
||||||
-- let day = mkNP (mkPN d) in
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
-- {name = day ;
|
-- let day = mkNP (mkPN d) in
|
||||||
-- point = SyntaxDan.mkAdv on_Prep day ;
|
-- mkNPDay day (SyntaxDan.mkAdv on_Prep day)
|
||||||
-- habitual = SyntaxDan.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
-- (SyntaxDan.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
-- } ;
|
|
||||||
--
|
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
|
||||||
-- name = mkCN p ;
|
|
||||||
-- at = mkPrep i ;
|
-- open_A = mkA "öppen" "öppet" ;
|
||||||
-- to = to_Prep
|
-- closed_A = mkA "stängd" "stängt" ;
|
||||||
-- } ;
|
|
||||||
--
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
-- open_A = mkA "öppen" "öppet" ;
|
-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
-- closed_A = mkA "stängd" "stängt" ;
|
|
||||||
--
|
|
||||||
-- nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
|
--}
|
||||||
-- case p.isPron of {
|
|
||||||
-- True => mkNP p.poss (mkN "namn" "namn") ;
|
|
||||||
-- _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
|
|
||||||
-- (SyntaxDan.mkAdv possess_Prep p.name)
|
|
||||||
-- } ;
|
|
||||||
-- }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,134 +1,167 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
-- (c) 2009 Aarne Ranta under LGPL
|
||||||
|
|
||||||
concrete WordsDut of Words = SentencesDut **
|
concrete WordsDut of Words = SentencesDut **
|
||||||
open SyntaxDut, ParadigmsDut, IrregDut, (L = LexiconDut), Prelude in {
|
open SyntaxDut, ParadigmsDut, IrregDut, (L = LexiconDut), ExtraDut, Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
-- kinds of food
|
-- kinds of food
|
||||||
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "ost") ;
|
-- Cheese = mkCN (mkN "ost") ;
|
||||||
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
-- Chicken = mkCN (mkN "kyckling") ;
|
||||||
|
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "kött" "kött") ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "te" neutrum) ;
|
-- Tea = mkCN (mkN "te" neutrum) ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
|
|
||||||
-- properties
|
-- properties
|
||||||
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "tråkig" ;
|
-- Cheap = mkA "billig" ;
|
||||||
|
-- Boring = mkA "tråkig" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "läcker" ;
|
-- Delicious = mkA "läcker" ;
|
||||||
-- Expensive = mkA "dyr" ;
|
-- Expensive = mkA "dyr" ;
|
||||||
-- Fresh = mkA "färsk" ;
|
-- Fresh = mkA "färsk" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
-- Suspect = mkA "suspekt" "suspekt" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
|
||||||
-- places
|
-- places
|
||||||
--
|
|
||||||
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
||||||
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
||||||
-- Church = mkPlace (mkN "kyrka") "i" ;
|
-- Church = mkPlace (mkN "kyrka") "i" ;
|
||||||
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
-- Cinema = mkPlace (mkN "bio" "bio" "bion" "biona") "på" ; ---- ?
|
||||||
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
||||||
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
-- Hotel = mkPlace (mkN "hotell" "hotell") "på" ;
|
||||||
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
||||||
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
-- Park = mkPlace (mkN "park" "parker") "i" ;
|
||||||
--
|
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
||||||
|
-- Shop = mkPlace (mkN "affär" "affär") "i" ;
|
||||||
|
-- School = mkPlace (mkN "skola") "på" ;
|
||||||
|
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
||||||
|
-- Theatre = mkPlace (mkN "teater" "teatrar") "på" ;
|
||||||
|
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
||||||
|
-- University = mkPlace (mkN "universitet" "universitet") "på" ;
|
||||||
|
|
||||||
-- currencies
|
-- currencies
|
||||||
--
|
|
||||||
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro") ;
|
-- Euro = mkCN (mkN "euro" "euro") ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Lei = mkCN (mkN "lei" "lei") ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
--
|
|
||||||
-- nationalities
|
-- nationalities
|
||||||
--
|
|
||||||
-- Belgian = mkA "belgisk" ;
|
-- Belgian = mkA "belgisk" ;
|
||||||
-- Belgium = mkNP (mkPN "Belgien") ;
|
-- Belgium = mkNP (mkPN "Belgien") ;
|
||||||
-- English = mkNat "engelsk" "England" ;
|
-- English = mkNat "engelsk" "England" ;
|
||||||
-- Finnish = mkNat "finsk" "Finland" ;
|
-- Finnish = mkNat "finsk" "Finland" ;
|
||||||
-- Flemish = mkNP (mkPN "flamländska") ;
|
-- Flemish = mkNP (mkPN "flamländska") ;
|
||||||
-- French = mkNat "fransk" "Frankrike" ;
|
-- French = mkNat "fransk" "Frankrike" ;
|
||||||
-- Italian = mkNat "italiensk" "Italien" ;
|
-- Italian = mkNat "italiensk" "Italien" ;
|
||||||
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
||||||
-- Swedish = mkNat "svensk" "Sverige" ;
|
-- Swedish = mkNat "svensk" "Sverige" ;
|
||||||
--
|
|
||||||
-- actions
|
-- actions
|
||||||
--
|
|
||||||
-- AHasName p name = mkCl (nameOf p) name ;
|
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
-- AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
|
||||||
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
-- (mkNP (mkNP a_Det (mkN "rum" "rum"))
|
||||||
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDut.mkAdv in_Prep co)) ;
|
-- (SyntaxDut.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
-- AScared p = mkCl p.name (mkA "rädd") ;
|
-- (mkNP (mkNP a_Det (mkN "bord" "bord"))
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
-- (SyntaxDut.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
||||||
-- ATired p = mkCl p.name (mkA "trött") ;
|
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
||||||
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||||
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
||||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDut.mkAdv in_Prep co)) ;
|
||||||
--
|
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
||||||
|
-- AMarried p = mkCl p.name (mkA "gift") ;
|
||||||
|
-- AReady p = mkCl p.name (mkA "färdig") ;
|
||||||
|
-- AScared p = mkCl p.name (mkA "rädd") ;
|
||||||
|
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
||||||
|
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
||||||
|
-- ATired p = mkCl p.name (mkA "trött") ;
|
||||||
|
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
||||||
|
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
||||||
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||||
|
|
||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
--
|
|
||||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
-- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
|
||||||
--
|
-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- PropOpen p = mkCl p.name open_A ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- PropClosed p = mkCl p.name closed_A ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||||
--
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
-- PSeeYou d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
-- PSeeYouPlace p d =
|
||||||
|
-- mkText (lin Text (ss ("vi ses")))
|
||||||
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
-- Wife = xOf sing (mkN "fru" "fruar") ;
|
||||||
|
-- Husband = xOf sing L.man_N ;
|
||||||
|
-- Son = xOf sing (mkN "son" "söner") ;
|
||||||
|
-- Daughter = xOf sing (mkN "dotter" "döttrar") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
--
|
|
||||||
-- Monday = mkDay "måndag" ;
|
-- Monday = mkDay "måndag" ;
|
||||||
-- Tuesday = mkDay "tisdag" ;
|
-- Tuesday = mkDay "tisdag" ;
|
||||||
-- Wednesday = mkDay "onsdag" ;
|
-- Wednesday = mkDay "onsdag" ;
|
||||||
-- Thursday = mkDay "torsdag" ;
|
-- Thursday = mkDay "torsdag" ;
|
||||||
-- Friday = mkDay "fredag" ;
|
-- Friday = mkDay "fredag" ;
|
||||||
-- Saturday = mkDay "lördag" ;
|
-- Saturday = mkDay "lördag" ;
|
||||||
-- Sunday = mkDay "söndag" ;
|
-- Sunday = mkDay "söndag" ;
|
||||||
--
|
|
||||||
-- oper
|
-- Tomorrow = ParadigmsDut.mkAdv "imorgon" ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
-- {lang = mkNP (mkPN (nat + "a")) ;
|
-- oper
|
||||||
-- prop = mkA nat ; country = mkNP (mkPN co)} ;
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
--
|
-- mkNPNationality (mkNP (mkPN (nat + "a"))) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
|
||||||
-- let day = mkNP (mkPN d) in
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
-- {name = day ;
|
-- let day = mkNP (mkPN d) in
|
||||||
-- point = SyntaxDut.mkAdv on_Prep day ;
|
-- mkNPDay day (SyntaxDut.mkAdv on_Prep day)
|
||||||
-- habitual = SyntaxDut.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
-- (SyntaxDut.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
-- } ;
|
|
||||||
--
|
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
|
||||||
-- name = mkCN p ;
|
|
||||||
-- at = mkPrep i ;
|
-- open_A = mkA "öppen" "öppet" ;
|
||||||
-- to = to_Prep
|
-- closed_A = mkA "stängd" "stängt" ;
|
||||||
-- } ;
|
|
||||||
--
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
-- open_A = mkA "öppen" "öppet" ;
|
-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
-- closed_A = mkA "stängd" "stängt" ;
|
|
||||||
--
|
|
||||||
-- nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
|
--}
|
||||||
-- case p.isPron of {
|
|
||||||
-- True => mkNP p.poss (mkN "namn" "namn") ;
|
|
||||||
-- _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
|
|
||||||
-- (SyntaxDut.mkAdv possess_Prep p.name)
|
|
||||||
-- } ;
|
|
||||||
-- }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,17 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
--2 Implementations of Words, with English as example
|
||||||
|
|
||||||
concrete WordsEng of Words = SentencesEng **
|
concrete WordsEng of Words = SentencesEng **
|
||||||
open
|
open
|
||||||
SyntaxEng, ParadigmsEng, (L = LexiconEng), (P = ParadigmsEng),
|
SyntaxEng,
|
||||||
IrregEng, ExtraEng, Prelude in {
|
ParadigmsEng,
|
||||||
|
(L = LexiconEng),
|
||||||
|
(P = ParadigmsEng),
|
||||||
|
IrregEng,
|
||||||
|
ExtraEng,
|
||||||
|
Prelude in {
|
||||||
lin
|
lin
|
||||||
|
|
||||||
-- kinds
|
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||||
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
@@ -23,7 +28,7 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
|
|
||||||
-- properties
|
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||||
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
Boring = mkA "boring" ;
|
Boring = mkA "boring" ;
|
||||||
@@ -36,7 +41,9 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
Suspect = mkA "suspect" ;
|
Suspect = mkA "suspect" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
|
|
||||||
-- places
|
-- Places require different prepositions to express location; in some languages
|
||||||
|
-- also the directional preposition varies, but in English we use $to$, as
|
||||||
|
-- defined by $mkPlace$.
|
||||||
|
|
||||||
Airport = mkPlace "airport" "at" ;
|
Airport = mkPlace "airport" "at" ;
|
||||||
Bar = mkPlace "bar" "in" ;
|
Bar = mkPlace "bar" "in" ;
|
||||||
@@ -54,15 +61,15 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
Toilet = mkPlace "toilet" "in" ;
|
Toilet = mkPlace "toilet" "in" ;
|
||||||
University = mkPlace "university" "at" ;
|
University = mkPlace "university" "at" ;
|
||||||
|
|
||||||
-- currencies
|
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||||
|
|
||||||
DanishCrown = mkCN (mkA "Danish") (mkN "crown") ;
|
DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
Dollar = mkCN (mkN "dollar") ;
|
Dollar = mkCN (mkN "dollar") ;
|
||||||
Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
||||||
Lei = mkCN (mkN "leu" "lei") ;
|
Lei = mkCN (mkN "leu" "lei") ;
|
||||||
SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") ;
|
SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
|
|
||||||
-- nationalities
|
-- Nationalities
|
||||||
|
|
||||||
Belgian = mkA "Belgian" ;
|
Belgian = mkA "Belgian" ;
|
||||||
Belgium = mkNP (mkPN "Belgium") ;
|
Belgium = mkNP (mkPN "Belgium") ;
|
||||||
@@ -74,10 +81,14 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
Romanian = mkNat "Romanian" "Romania" ;
|
Romanian = mkNat "Romanian" "Romania" ;
|
||||||
Swedish = mkNat "Swedish" "Sweden" ;
|
Swedish = mkNat "Swedish" "Sweden" ;
|
||||||
|
|
||||||
-- actions
|
-- Actions: the predication patterns are very often language-dependent.
|
||||||
|
|
||||||
AHasAge p num = mkCl p.name (mkNP <lin Numeral num : Numeral> L.year_N) ;
|
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
AHasChildren p num = mkCl p.name have_V2 (mkNP <lin Numeral num : Numeral> L.child_N) ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
|
AHasRoom p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "room")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
|
AHasTable p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "table")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
AHasName p name = mkCl (nameOf p) name ;
|
AHasName p name = mkCl (nameOf p) name ;
|
||||||
AHungry p = mkCl p.name (mkA "hungry") ;
|
AHungry p = mkCl p.name (mkA "hungry") ;
|
||||||
AIll p = mkCl p.name (mkA "ill") ;
|
AIll p = mkCl p.name (mkA "ill") ;
|
||||||
@@ -86,6 +97,7 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
|
ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
|
||||||
ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
||||||
AMarried p = mkCl p.name (mkA "married") ;
|
AMarried p = mkCl p.name (mkA "married") ;
|
||||||
|
AReady p = mkCl p.name (mkA "ready") ;
|
||||||
AScared p = mkCl p.name (mkA "scared") ;
|
AScared p = mkCl p.name (mkA "scared") ;
|
||||||
ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
|
ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
|
||||||
AThirsty p = mkCl p.name (mkA "thirsty") ;
|
AThirsty p = mkCl p.name (mkA "thirsty") ;
|
||||||
@@ -97,7 +109,9 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
|
|
||||||
QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||||
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP (mkA "old"))) p.name) ;
|
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
|
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ;
|
||||||
|
ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ;
|
||||||
|
|
||||||
PropOpen p = mkCl p.name open_Adv ;
|
PropOpen p = mkCl p.name open_Adv ;
|
||||||
PropClosed p = mkCl p.name closed_Adv ;
|
PropClosed p = mkCl p.name closed_Adv ;
|
||||||
@@ -106,8 +120,17 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
||||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
||||||
|
|
||||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ;
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ;
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
PSeeYou d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
PSeeYouPlace p d =
|
||||||
|
mkText (lin Text (ss ("see you")))
|
||||||
|
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
Wife = xOf sing (mkN "wife") ;
|
Wife = xOf sing (mkN "wife") ;
|
||||||
Husband = xOf sing (mkN "husband") ;
|
Husband = xOf sing (mkN "husband") ;
|
||||||
@@ -125,42 +148,29 @@ concrete WordsEng of Words = SentencesEng **
|
|||||||
Saturday = mkDay "Saturday" ;
|
Saturday = mkDay "Saturday" ;
|
||||||
Sunday = mkDay "Sunday" ;
|
Sunday = mkDay "Sunday" ;
|
||||||
|
|
||||||
|
Tomorrow = P.mkAdv "tomorrow" ;
|
||||||
|
|
||||||
-- auxiliaries
|
-- auxiliaries
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
{lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
|
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
|
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
|
|
||||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
let day = mkNP (mkPN d) in
|
let day = mkNP (mkPN d) in
|
||||||
{name = day ;
|
mkNPDay day (SyntaxEng.mkAdv on_Prep day)
|
||||||
point = SyntaxEng.mkAdv on_Prep day ;
|
(SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
habitual = SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
name = mkCN (mkN p) ;
|
mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||||
at = P.mkPrep i ;
|
|
||||||
to = to_Prep
|
|
||||||
} ;
|
|
||||||
|
|
||||||
open_Adv = P.mkAdv "open" ;
|
open_Adv = P.mkAdv "open" ;
|
||||||
closed_Adv = P.mkAdv "closed" ;
|
closed_Adv = P.mkAdv "closed" ;
|
||||||
|
|
||||||
NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
|
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
|
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
xOf : Bool -> N -> NPPerson -> NPPerson = \n,x,p ->
|
|
||||||
let num = if_then_else Num n plNum sgNum in {
|
|
||||||
name = case p.isPron of {
|
|
||||||
True => mkNP p.poss num x ;
|
|
||||||
_ => mkNP (mkNP the_Quant num x)
|
|
||||||
(SyntaxEng.mkAdv possess_Prep p.name)
|
|
||||||
} ;
|
|
||||||
isPron = False ;
|
|
||||||
poss = SyntaxEng.mkQuant he_Pron -- not used because not pron
|
|
||||||
} ;
|
|
||||||
|
|
||||||
nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
||||||
|
|
||||||
sing = False ; plur = True ;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
Station = mkPlace (mkN "asema") lla ;
|
Station = mkPlace (mkN "asema") lla ;
|
||||||
Hospital = mkPlace (mkN "sairaala") ssa ;
|
Hospital = mkPlace (mkN "sairaala") ssa ;
|
||||||
Church = mkPlace (mkN "kirkko") ssa ;
|
Church = mkPlace (mkN "kirkko") ssa ;
|
||||||
|
Cinema = mkPlace (mkN "elokuva" (mkN "teatteri")) ssa ;
|
||||||
|
Theatre = mkPlace (mkN "teatteri") ssa ;
|
||||||
Shop = mkPlace (mkN "kauppa") ssa ;
|
Shop = mkPlace (mkN "kauppa") ssa ;
|
||||||
Park = mkPlace (mkN "puisto") ssa ;
|
Park = mkPlace (mkN "puisto") ssa ;
|
||||||
Hotel = mkPlace (mkN "hotelli") ssa ;
|
Hotel = mkPlace (mkN "hotelli") ssa ;
|
||||||
@@ -55,9 +57,11 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
|
|
||||||
-- currencies
|
-- currencies
|
||||||
|
|
||||||
|
DanishCrown = mkCN (mkN "Tanskan kruunu") | mkCN (mkN "kruunu") ;
|
||||||
Dollar = mkCN (mkN "dollari") ;
|
Dollar = mkCN (mkN "dollari") ;
|
||||||
Euro = mkCN (mkN "euro") ;
|
Euro = mkCN (mkN "euro") ;
|
||||||
Lei = mkCN (mkN "lei") ;
|
Lei = mkCN (mkN "lei") ;
|
||||||
|
SwedishCrown = mkCN (mkN "Ruotsin kruunu") | mkCN (mkN "kruunu") ;
|
||||||
|
|
||||||
-- nationalities
|
-- nationalities
|
||||||
|
|
||||||
@@ -77,13 +81,27 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
|
|
||||||
-- actions
|
-- actions
|
||||||
|
|
||||||
|
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
AHasName p name = mkCl (nameOf p) name ;
|
AHasName p name = mkCl (nameOf p) name ;
|
||||||
|
AHasRoom p num = mkCl p.name have_V2
|
||||||
|
---- (mkNP (E.PartCN (mkN "huone")) ---- partitive works in questions
|
||||||
|
(mkNP (mkNP a_Det (mkN "huone"))
|
||||||
|
(SyntaxFin.mkAdv for_Prep (mkNP num (mkN "henki" "henkiä")))) ;
|
||||||
|
AHasTable p num = mkCl p.name have_V2
|
||||||
|
---- (mkNP (E.PartCN (mkN "pöytä"))
|
||||||
|
(mkNP (mkNP a_Det (mkN "pöytä"))
|
||||||
|
(SyntaxFin.mkAdv for_Prep (mkNP num (mkN "henki" "henkiä")))) ;
|
||||||
|
|
||||||
|
|
||||||
AHungry p = mkCl p.name have_V2 (mkNP (mkN "nälkä")) ;
|
AHungry p = mkCl p.name have_V2 (mkNP (mkN "nälkä")) ;
|
||||||
AIll p = mkCl p.name (mkA "sairas") ;
|
AIll p = mkCl p.name (mkA "sairas") ;
|
||||||
AKnow p = mkCl p.name (mkV "tietää") ;
|
AKnow p = mkCl p.name (mkV "tietää") ;
|
||||||
ALike p item = mkCl p.name L.like_V2 item ;
|
ALike p item = mkCl p.name L.like_V2 item ;
|
||||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv in_Prep co)) ;
|
ALive p co = mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv in_Prep co)) ;
|
||||||
ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ;
|
ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ;
|
||||||
|
AMarried p = mkCl p.name (ParadigmsFin.mkAdv "naimisissa") ;
|
||||||
|
AReady p = mkCl p.name (ParadigmsFin.mkA "valmis") ;
|
||||||
AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ;
|
AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ;
|
||||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ;
|
ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ;
|
||||||
AThirsty p = mkCl p.name have_V2 (mkNP (mkN "jano")) ;
|
AThirsty p = mkCl p.name have_V2 (mkNP (mkN "jano")) ;
|
||||||
@@ -95,6 +113,9 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
|
|
||||||
QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||||
|
QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
|
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "maksaa"))) ;
|
||||||
|
ItCost item price = mkCl item (mkV2 (mkV "maksaa")) price ;
|
||||||
|
|
||||||
PropOpen p = mkCl p.name open_Adv ;
|
PropOpen p = mkCl p.name open_Adv ;
|
||||||
PropClosed p = mkCl p.name closed_Adv ;
|
PropClosed p = mkCl p.name closed_Adv ;
|
||||||
@@ -103,8 +124,24 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
||||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
||||||
|
|
||||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "maksaa"))) ;
|
|
||||||
ItCost item price = mkCl item (mkV2 (mkV "maksaa")) price ;
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
PSeeYou d = mkText (lin Text (ss ("nähdään"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
PSeeYouPlace p d =
|
||||||
|
mkText (lin Text (ss ("nähdään")))
|
||||||
|
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
Wife = xOf sing (mkN "vaimo") ;
|
||||||
|
Husband = xOf sing L.man_N ;
|
||||||
|
Son = xOf sing L.boy_N ;
|
||||||
|
Daughter = xOf sing (mkN "tytär") ;
|
||||||
|
Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
|
|
||||||
@@ -116,6 +153,8 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
Saturday = let d = "lauantai" in mkDay (mkPN d) (d + "sin") ;
|
Saturday = let d = "lauantai" in mkDay (mkPN d) (d + "sin") ;
|
||||||
Sunday = let d = "sunnuntai" in mkDay (mkPN d) (d + "sin") ;
|
Sunday = let d = "sunnuntai" in mkDay (mkPN d) (d + "sin") ;
|
||||||
|
|
||||||
|
Tomorrow = ParadigmsFin.mkAdv "huomenna" ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkNat : PN -> PN -> A ->
|
mkNat : PN -> PN -> A ->
|
||||||
{lang : NP ; prop : A ; country : NP} = \nat,co,pro ->
|
{lang : NP ; prop : A ; country : NP} = \nat,co,pro ->
|
||||||
@@ -140,24 +179,12 @@ concrete WordsFin of Words = SentencesFin **
|
|||||||
ssa = False ;
|
ssa = False ;
|
||||||
lla = True ;
|
lla = True ;
|
||||||
|
|
||||||
open_Adv = ParadigmsFin.mkAdv "avoinna" ;
|
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
closed_Adv = ParadigmsFin.mkAdv "kiinni" ;
|
relativePerson n (mkCN x) (\a,b,c -> mkNP (E.GenNP b) a c) p ;
|
||||||
|
|
||||||
NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
|
|
||||||
|
|
||||||
xOf : Bool -> N -> NPPerson -> NPPerson = \n,x,p ->
|
|
||||||
let num = if_then_else Num n plNum sgNum in {
|
|
||||||
name = case p.isPron of {
|
|
||||||
True => mkNP p.poss num x ;
|
|
||||||
_ => mkNP (E.GenNP p.name) num x
|
|
||||||
} ;
|
|
||||||
isPron = False ;
|
|
||||||
poss = SyntaxFin.mkQuant he_Pron -- not used because not pron
|
|
||||||
} ;
|
|
||||||
|
|
||||||
|
|
||||||
nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
|
nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
|
||||||
|
|
||||||
sing = False ; plur = True ;
|
open_Adv = ParadigmsFin.mkAdv "avoinna" ;
|
||||||
|
closed_Adv = ParadigmsFin.mkAdv "kiinni" ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,9 @@ lin
|
|||||||
|
|
||||||
-- actions
|
-- actions
|
||||||
|
|
||||||
|
AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
|
||||||
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
|
AMarried p = mkCl p.name (mkA "marié") ;
|
||||||
AWant p obj = mkCl p.name vouloir_V2 obj ;
|
AWant p obj = mkCl p.name vouloir_V2 obj ;
|
||||||
ALike p item = mkCl item plaire_V2 p.name ;
|
ALike p item = mkCl item plaire_V2 p.name ;
|
||||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ;
|
ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ;
|
||||||
@@ -89,6 +92,7 @@ lin
|
|||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
|
|
||||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "appeler")))) ;
|
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "appeler")))) ;
|
||||||
|
QWhatAge p = mkQS (mkQCl (mkIP whichSg_IDet (mkN "âge" masculine)) p.name have_V2) ;
|
||||||
|
|
||||||
PropOpen p = mkCl p.name open_A ;
|
PropOpen p = mkCl p.name open_A ;
|
||||||
PropClosed p = mkCl p.name closed_A ;
|
PropClosed p = mkCl p.name closed_A ;
|
||||||
@@ -100,6 +104,12 @@ lin
|
|||||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "coûter"))) ;
|
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "coûter"))) ;
|
||||||
ItCost item price = mkCl item (mkV2 (mkV "coûter")) price ;
|
ItCost item price = mkCl item (mkV2 (mkV "coûter")) price ;
|
||||||
|
|
||||||
|
Wife = xOf sing (mkN "femme") ;
|
||||||
|
Husband = xOf sing (mkN "mari") ;
|
||||||
|
Son = xOf sing (mkN "fils") ;
|
||||||
|
Daughter = xOf sing (mkN "fille") ;
|
||||||
|
Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
|
|
||||||
Monday = mkDay "lundi" ;
|
Monday = mkDay "lundi" ;
|
||||||
@@ -112,23 +122,19 @@ lin
|
|||||||
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
{lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
|
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
|
|
||||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
let day = mkNP (mkPN d) in
|
let day = mkNP (mkPN d) in
|
||||||
{name = day ;
|
mkNPDay day (P.mkAdv d) (P.mkAdv ("le" ++ d)) ;
|
||||||
point = P.mkAdv d ;
|
|
||||||
habitual = P.mkAdv ("le" ++ d) ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
name = mkCN p ;
|
mkCNPlace (mkCN p) i dative ;
|
||||||
at = i ;
|
|
||||||
to = dative
|
|
||||||
} ;
|
|
||||||
|
|
||||||
open_A = P.mkA "ouvert" ;
|
open_A = P.mkA "ouvert" ;
|
||||||
closed_A = P.mkA "fermé" ;
|
closed_A = P.mkA "fermé" ;
|
||||||
|
|
||||||
|
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ concrete WordsGer of Words = SentencesGer **
|
|||||||
|
|
||||||
DanishCrown = mkCN (mkA "Dänisch") (mkN "Krone") ;
|
DanishCrown = mkCN (mkA "Dänisch") (mkN "Krone") ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
||||||
Euro = mkCN (mkN "Euro" "Euro" neuter) ;
|
Euro = mkCN (mkN "Euro" "Euro" "Euro" "Euro" "Euro" "Euro" neuter) ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Lei = mkCN (mkN "lei" "lei") ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
-- (c) 2009 Aarne Ranta and Olga Caprotti under LGPL
|
-- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
|
||||||
|
|
||||||
concrete WordsIta of Words = SentencesIta ** open
|
concrete WordsIta of Words = SentencesIta ** open
|
||||||
SyntaxIta,
|
SyntaxIta,
|
||||||
@@ -6,7 +6,8 @@ concrete WordsIta of Words = SentencesIta ** open
|
|||||||
(E = ExtraIta),
|
(E = ExtraIta),
|
||||||
(L = LexiconIta),
|
(L = LexiconIta),
|
||||||
(P = ParadigmsIta),
|
(P = ParadigmsIta),
|
||||||
ParadigmsIta in {
|
ParadigmsIta,
|
||||||
|
Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -16,8 +17,10 @@ lin
|
|||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
Cheese = mkCN (mkN "formaggio") ;
|
Cheese = mkCN (mkN "formaggio") ;
|
||||||
|
Chicken = mkCN (mkN "pollo") ;
|
||||||
Coffee = mkCN (mkN "caffè") ;
|
Coffee = mkCN (mkN "caffè") ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
Meat = mkCN (mkN "carne" feminine) ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
Pizza = mkCN (mkN "pizza") ;
|
Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
@@ -29,30 +32,40 @@ lin
|
|||||||
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
Boring = mkA "noioso" ;
|
Boring = mkA "noioso" ;
|
||||||
|
Cheap = let c = "a buon mercato" in mkA c c c c c ; ----
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
Delicious = mkA "delizioso" ;
|
Delicious = mkA "delizioso" ;
|
||||||
Expensive = mkA "caro" ;
|
Expensive = mkA "caro" ;
|
||||||
Fresh = mkA "fresco" ;
|
Fresh = mkA "fresco" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
|
Suspect = mkA "sospetto" ;
|
||||||
|
|
||||||
-- places
|
-- places
|
||||||
|
|
||||||
Airport = mkPlace (mkN "aeroporto") dative ;
|
Airport = mkPlace (mkN "aeroporto") dative ;
|
||||||
Bar = mkPlace (mkN "bar") P.in_Prep ;
|
Bar = mkPlace (mkN "bar") P.in_Prep ;
|
||||||
Church = mkPlace (mkN "chiesa") P.in_Prep ;
|
Church = mkPlace (mkN "chiesa") P.in_Prep ;
|
||||||
|
Cinema = mkPlace (mkN "cinema") P.in_Prep ;
|
||||||
Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
|
Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
|
||||||
|
Hotel = mkPlace (mkN "albergo") P.in_Prep ;
|
||||||
Museum = mkPlace (mkN "museo") P.in_Prep ;
|
Museum = mkPlace (mkN "museo") P.in_Prep ;
|
||||||
|
Park = mkPlace (mkN "parco") P.in_Prep ;
|
||||||
Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
|
Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
|
||||||
|
School = mkPlace (mkN "scuola") P.in_Prep ;
|
||||||
|
Shop = mkPlace (mkN "negozio") P.in_Prep ;
|
||||||
Station = mkPlace (mkN "stazione" feminine) dative ;
|
Station = mkPlace (mkN "stazione" feminine) dative ;
|
||||||
|
Theatre = mkPlace (mkN "teatro") P.in_Prep ;
|
||||||
Toilet = mkPlace (mkN "bagno") P.in_Prep ;
|
Toilet = mkPlace (mkN "bagno") P.in_Prep ;
|
||||||
|
University = mkPlace (mkN "università") dative ;
|
||||||
|
|
||||||
-- currencies
|
-- currencies
|
||||||
|
|
||||||
DanishCrown = mkCN (mkA "danese") (mkN "corona") ;
|
DanishCrown = mkCN (mkA "danese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||||
Dollar = mkCN (mkN "dollar") ;
|
Dollar = mkCN (mkN "dollar") ;
|
||||||
Euro = mkCN (mkN "euro" "euro" masculine) ;
|
Euro = mkCN (mkN "euro" "euro" masculine) ;
|
||||||
Lei = mkCN (mkN "lei") ; ---- ?
|
Lei = mkCN (mkN "lei") ; ---- ?
|
||||||
|
SwedishCrown = mkCN (mkA "svedese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||||
|
|
||||||
-- nationalities
|
-- nationalities
|
||||||
|
|
||||||
@@ -68,6 +81,12 @@ lin
|
|||||||
|
|
||||||
-- actions
|
-- actions
|
||||||
|
|
||||||
|
AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
|
||||||
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
|
AHasRoom p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "camera")) (SyntaxIta.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||||
|
AHasTable p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxIta.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||||
AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
|
AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
|
||||||
AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
|
AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
|
||||||
AIll p = mkCl p.name (mkA "malato") ;
|
AIll p = mkCl p.name (mkA "malato") ;
|
||||||
@@ -76,6 +95,8 @@ lin
|
|||||||
ALive p co =
|
ALive p co =
|
||||||
mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxIta.mkAdv P.in_Prep co)) ;
|
mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxIta.mkAdv P.in_Prep co)) ;
|
||||||
ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
|
ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
|
||||||
|
AMarried p = mkCl p.name (mkA "sposato") ;
|
||||||
|
AReady p = mkCl p.name (mkA "pronto") ;
|
||||||
AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
|
AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
|
||||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
|
ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
|
||||||
AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
|
AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
|
||||||
@@ -88,6 +109,7 @@ lin
|
|||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
|
|
||||||
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
|
QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
|
||||||
|
QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
|
||||||
|
|
||||||
PropOpen p = mkCl p.name open_A ;
|
PropOpen p = mkCl p.name open_A ;
|
||||||
PropClosed p = mkCl p.name closed_A ;
|
PropClosed p = mkCl p.name closed_A ;
|
||||||
@@ -99,6 +121,24 @@ lin
|
|||||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
|
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
|
||||||
ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
|
ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
|
||||||
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
PSeeYou d = mkText (lin Text (ss ("arrivederci"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
PSeeYouPlace p d =
|
||||||
|
mkText (lin Text (ss ("arrivederci")))
|
||||||
|
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
|
||||||
|
-- below. Languages with productive genitives can use an equivalent of
|
||||||
|
-- "my son's wife" for non-pronouns, as e.g. in English.
|
||||||
|
|
||||||
|
Wife = xOf sing (mkN "sposa") ;
|
||||||
|
Husband = xOf sing (mkN "marito") ;
|
||||||
|
Son = xOf sing (mkN "figlio") ;
|
||||||
|
Daughter = xOf sing (mkN "figlia") ;
|
||||||
|
Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
|
|
||||||
Monday = mkDay "lunedì" ;
|
Monday = mkDay "lunedì" ;
|
||||||
@@ -109,24 +149,22 @@ lin
|
|||||||
Saturday = mkDay "sabato" ;
|
Saturday = mkDay "sabato" ;
|
||||||
Sunday = mkDay "domenica" ;
|
Sunday = mkDay "domenica" ;
|
||||||
|
|
||||||
|
Tomorrow = P.mkAdv "domani" ;
|
||||||
|
|
||||||
-- auxiliaries
|
-- auxiliaries
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
{lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
|
mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
|
|
||||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
let day = mkNP (mkPN d) in
|
let day = mkNP (mkPN d) in
|
||||||
{name = day ;
|
mkNPDay day (P.mkAdv ("il" ++ d)) (P.mkAdv ("il" ++ d)) ; ---- ?
|
||||||
point, -- = ParadigmsIta.mkAdv d ;
|
|
||||||
habitual = ParadigmsIta.mkAdv ("il" ++ d) ; ---- ?
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
name = mkCN p ;
|
mkCNPlace (mkCN p) i dative ;
|
||||||
at = i ;
|
|
||||||
to = dative
|
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||||
} ;
|
|
||||||
|
|
||||||
open_A = mkA "aperto" ;
|
open_A = mkA "aperto" ;
|
||||||
closed_A = mkA "chiuso" ;
|
closed_A = mkA "chiuso" ;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
-- (c) 2009 Aarne Ranta under LGPL
|
||||||
|
|
||||||
concrete WordsNor of Words = SentencesNor **
|
concrete WordsNor of Words = SentencesNor **
|
||||||
open SyntaxNor, ParadigmsNor, IrregNor, (L = LexiconNor), Prelude in {
|
open SyntaxNor, ParadigmsNor, IrregNor, (L = LexiconNor), ExtraNor, Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -10,125 +10,158 @@ concrete WordsNor of Words = SentencesNor **
|
|||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "ost") ;
|
-- Cheese = mkCN (mkN "ost") ;
|
||||||
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
-- Chicken = mkCN (mkN "kyckling") ;
|
||||||
|
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "kött" "kött") ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "te" neutrum) ;
|
-- Tea = mkCN (mkN "te" neutrum) ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
--
|
|
||||||
-- properties
|
-- properties
|
||||||
--
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "tråkig" ;
|
-- Cheap = mkA "billig" ;
|
||||||
|
-- Boring = mkA "tråkig" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "läcker" ;
|
-- Delicious = mkA "läcker" ;
|
||||||
-- Expensive = mkA "dyr" ;
|
-- Expensive = mkA "dyr" ;
|
||||||
-- Fresh = mkA "färsk" ;
|
-- Fresh = mkA "färsk" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
-- Suspect = mkA "suspekt" "suspekt" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
|
||||||
-- places
|
-- places
|
||||||
--
|
|
||||||
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
||||||
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
||||||
-- Church = mkPlace (mkN "kyrka") "i" ;
|
-- Church = mkPlace (mkN "kyrka") "i" ;
|
||||||
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
-- Cinema = mkPlace (mkN "bio" "bio" "bion" "biona") "på" ; ---- ?
|
||||||
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
||||||
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
-- Hotel = mkPlace (mkN "hotell" "hotell") "på" ;
|
||||||
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
||||||
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
-- Park = mkPlace (mkN "park" "parker") "i" ;
|
||||||
--
|
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
||||||
|
-- Shop = mkPlace (mkN "affär" "affär") "i" ;
|
||||||
|
-- School = mkPlace (mkN "skola") "på" ;
|
||||||
|
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
||||||
|
-- Theatre = mkPlace (mkN "teater" "teatrar") "på" ;
|
||||||
|
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
||||||
|
-- University = mkPlace (mkN "universitet" "universitet") "på" ;
|
||||||
|
|
||||||
-- currencies
|
-- currencies
|
||||||
--
|
|
||||||
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro") ;
|
-- Euro = mkCN (mkN "euro" "euro") ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Lei = mkCN (mkN "lei" "lei") ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
--
|
|
||||||
-- nationalities
|
-- nationalities
|
||||||
--
|
|
||||||
-- Belgian = mkA "belgisk" ;
|
-- Belgian = mkA "belgisk" ;
|
||||||
-- Belgium = mkNP (mkPN "Belgien") ;
|
-- Belgium = mkNP (mkPN "Belgien") ;
|
||||||
-- English = mkNat "engelsk" "England" ;
|
-- English = mkNat "engelsk" "England" ;
|
||||||
-- Finnish = mkNat "finsk" "Finland" ;
|
-- Finnish = mkNat "finsk" "Finland" ;
|
||||||
-- Flemish = mkNP (mkPN "flamländska") ;
|
-- Flemish = mkNP (mkPN "flamländska") ;
|
||||||
-- French = mkNat "fransk" "Frankrike" ;
|
-- French = mkNat "fransk" "Frankrike" ;
|
||||||
-- Italian = mkNat "italiensk" "Italien" ;
|
-- Italian = mkNat "italiensk" "Italien" ;
|
||||||
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
||||||
-- Swedish = mkNat "svensk" "Sverige" ;
|
-- Swedish = mkNat "svensk" "Sverige" ;
|
||||||
--
|
|
||||||
-- actions
|
-- actions
|
||||||
--
|
|
||||||
-- AHasName p name = mkCl (nameOf p) name ;
|
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
-- AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
|
||||||
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
-- (mkNP (mkNP a_Det (mkN "rum" "rum"))
|
||||||
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxNor.mkAdv in_Prep co)) ;
|
-- (SyntaxNor.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
-- AScared p = mkCl p.name (mkA "rädd") ;
|
-- (mkNP (mkNP a_Det (mkN "bord" "bord"))
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
-- (SyntaxNor.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
||||||
-- ATired p = mkCl p.name (mkA "trött") ;
|
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
||||||
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||||
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
||||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxNor.mkAdv in_Prep co)) ;
|
||||||
--
|
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
||||||
|
-- AMarried p = mkCl p.name (mkA "gift") ;
|
||||||
|
-- AReady p = mkCl p.name (mkA "färdig") ;
|
||||||
|
-- AScared p = mkCl p.name (mkA "rädd") ;
|
||||||
|
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
||||||
|
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
||||||
|
-- ATired p = mkCl p.name (mkA "trött") ;
|
||||||
|
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
||||||
|
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
||||||
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||||
|
|
||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
--
|
|
||||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
-- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
|
||||||
--
|
-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- PropOpen p = mkCl p.name open_A ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- PropClosed p = mkCl p.name closed_A ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||||
--
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
-- PSeeYou d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
-- PSeeYouPlace p d =
|
||||||
|
-- mkText (lin Text (ss ("vi ses")))
|
||||||
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
-- Wife = xOf sing (mkN "fru" "fruar") ;
|
||||||
|
-- Husband = xOf sing L.man_N ;
|
||||||
|
-- Son = xOf sing (mkN "son" "söner") ;
|
||||||
|
-- Daughter = xOf sing (mkN "dotter" "döttrar") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
--
|
|
||||||
-- Monday = mkDay "måndag" ;
|
-- Monday = mkDay "måndag" ;
|
||||||
-- Tuesday = mkDay "tisdag" ;
|
-- Tuesday = mkDay "tisdag" ;
|
||||||
-- Wednesday = mkDay "onsdag" ;
|
-- Wednesday = mkDay "onsdag" ;
|
||||||
-- Thursday = mkDay "torsdag" ;
|
-- Thursday = mkDay "torsdag" ;
|
||||||
-- Friday = mkDay "fredag" ;
|
-- Friday = mkDay "fredag" ;
|
||||||
-- Saturday = mkDay "lördag" ;
|
-- Saturday = mkDay "lördag" ;
|
||||||
-- Sunday = mkDay "söndag" ;
|
-- Sunday = mkDay "söndag" ;
|
||||||
--
|
|
||||||
-- oper
|
-- Tomorrow = ParadigmsNor.mkAdv "imorgon" ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
-- {lang = mkNP (mkPN (nat + "a")) ;
|
-- oper
|
||||||
-- prop = mkA nat ; country = mkNP (mkPN co)} ;
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
--
|
-- mkNPNationality (mkNP (mkPN (nat + "a"))) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
|
||||||
-- let day = mkNP (mkPN d) in
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
-- {name = day ;
|
-- let day = mkNP (mkPN d) in
|
||||||
-- point = SyntaxNor.mkAdv on_Prep day ;
|
-- mkNPDay day (SyntaxNor.mkAdv on_Prep day)
|
||||||
-- habitual = SyntaxNor.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
-- (SyntaxNor.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
-- } ;
|
|
||||||
--
|
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
|
||||||
-- name = mkCN p ;
|
|
||||||
-- at = mkPrep i ;
|
-- open_A = mkA "öppen" "öppet" ;
|
||||||
-- to = to_Prep
|
-- closed_A = mkA "stängd" "stängt" ;
|
||||||
-- } ;
|
|
||||||
--
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
-- open_A = mkA "öppen" "öppet" ;
|
-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
-- closed_A = mkA "stängd" "stängt" ;
|
|
||||||
--
|
|
||||||
-- nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
|
--}
|
||||||
-- case p.isPron of {
|
|
||||||
-- True => mkNP p.poss (mkN "namn" "namn") ;
|
|
||||||
-- _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
|
|
||||||
-- (SyntaxNor.mkAdv possess_Prep p.name)
|
|
||||||
-- } ;
|
|
||||||
-- }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,134 +1,176 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
--2 Implementations of Words, with English as example
|
||||||
|
|
||||||
concrete WordsPol of Words = SentencesPol **
|
concrete WordsPol of Words = SentencesPol **
|
||||||
open SyntaxPol, ParadigmsPol, (L = LexiconPol), Prelude in {
|
open
|
||||||
|
SyntaxPol,
|
||||||
|
ParadigmsPol,
|
||||||
|
(L = LexiconPol),
|
||||||
|
(P = ParadigmsPol),
|
||||||
|
-- ExtraPol,
|
||||||
|
Prelude in {
|
||||||
lin
|
lin
|
||||||
|
|
||||||
-- kinds of food
|
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||||
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "ost") ;
|
-- Cheese = mkCN (mkN "cheese") ;
|
||||||
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
-- Chicken = mkCN (mkN "chicken") ;
|
||||||
|
-- Coffee = mkCN (mkN "coffee") ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "meat") ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "te" neutrum) ;
|
-- Tea = mkCN (mkN "tea") ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
--
|
|
||||||
-- properties
|
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||||
--
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "tråkig" ;
|
-- Boring = mkA "boring" ;
|
||||||
|
-- Cheap = mkA "cheap" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "läcker" ;
|
-- Delicious = mkA "delicious" ;
|
||||||
-- Expensive = mkA "dyr" ;
|
-- Expensive = mkA "expensive" ;
|
||||||
-- Fresh = mkA "färsk" ;
|
-- Fresh = mkA "fresh" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
-- Suspect = mkA "suspect" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
|
||||||
-- places
|
-- Places require different prepositions to express location; in some languages
|
||||||
--
|
-- also the directional preposition varies, but in English we use $to$, as
|
||||||
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
-- defined by $mkPlace$.
|
||||||
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
|
||||||
-- Church = mkPlace (mkN "kyrka") "i" ;
|
-- Airport = mkPlace "airport" "at" ;
|
||||||
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
-- Bar = mkPlace "bar" "in" ;
|
||||||
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
-- Church = mkPlace "church" "in" ;
|
||||||
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
-- Cinema = mkPlace "cinema" "at" ;
|
||||||
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
-- Hospital = mkPlace "hospital" "in" ;
|
||||||
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
-- Hotel = mkPlace "hotel" "in" ;
|
||||||
--
|
-- Museum = mkPlace "museum" "in" ;
|
||||||
-- currencies
|
-- Park = mkPlace "park" "in" ;
|
||||||
--
|
-- Restaurant = mkPlace "restaurant" "in" ;
|
||||||
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
-- School = mkPlace "school" "at" ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Shop = mkPlace "shop" "in" ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro") ;
|
-- Station = mkPlace "station" "at" ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Theatre = mkPlace "theatre" "at" ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- Toilet = mkPlace "toilet" "in" ;
|
||||||
--
|
-- University = mkPlace "university" "at" ;
|
||||||
-- nationalities
|
|
||||||
--
|
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||||
-- Belgian = mkA "belgisk" ;
|
|
||||||
-- Belgium = mkNP (mkPN "Belgien") ;
|
-- DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
-- English = mkNat "engelsk" "England" ;
|
-- Dollar = mkCN (mkN "dollar") ;
|
||||||
-- Finnish = mkNat "finsk" "Finland" ;
|
-- Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
||||||
-- Flemish = mkNP (mkPN "flamländska") ;
|
-- Lei = mkCN (mkN "leu" "lei") ;
|
||||||
-- French = mkNat "fransk" "Frankrike" ;
|
-- SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
-- Italian = mkNat "italiensk" "Italien" ;
|
|
||||||
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
-- Nationalities
|
||||||
-- Swedish = mkNat "svensk" "Sverige" ;
|
|
||||||
--
|
-- Belgian = mkA "Belgian" ;
|
||||||
-- actions
|
-- Belgium = mkNP (mkPN "Belgium") ;
|
||||||
--
|
-- English = mkNat "English" "England" ;
|
||||||
-- AHasName p name = mkCl (nameOf p) name ;
|
-- Finnish = mkNat "Finnish" "Finland" ;
|
||||||
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
-- Flemish = mkNP (mkPN "Flemish") ;
|
||||||
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
-- French = mkNat "French" "France" ;
|
||||||
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
-- Italian = mkNat "Italian" "Italy" ;
|
||||||
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
-- Romanian = mkNat "Romanian" "Romania" ;
|
||||||
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxPol.mkAdv in_Prep co)) ;
|
-- Swedish = mkNat "Swedish" "Sweden" ;
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
|
||||||
-- AScared p = mkCl p.name (mkA "rädd") ;
|
-- Actions: the predication patterns are very often language-dependent.
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
|
||||||
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
-- ATired p = mkCl p.name (mkA "trött") ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
-- (mkNP (mkNP a_Det (mkN "room")) (SyntaxPol.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
--
|
-- (mkNP (mkNP a_Det (mkN "table")) (SyntaxPol.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
|
-- AHasName p name = mkCl (nameOf p) name ;
|
||||||
|
-- AHungry p = mkCl p.name (mkA "hungry") ;
|
||||||
|
-- AIll p = mkCl p.name (mkA "ill") ;
|
||||||
|
-- AKnow p = mkCl p.name IrregPol.know_V ;
|
||||||
|
-- ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
|
||||||
|
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxPol.mkAdv in_Prep co)) ;
|
||||||
|
-- ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
||||||
|
-- AMarried p = mkCl p.name (mkA "married") ;
|
||||||
|
-- AReady p = mkCl p.name (mkA "ready") ;
|
||||||
|
-- AScared p = mkCl p.name (mkA "scared") ;
|
||||||
|
-- ASpeak p lang = mkCl p.name (mkV2 IrregPol.speak_V) lang ;
|
||||||
|
-- AThirsty p = mkCl p.name (mkA "thirsty") ;
|
||||||
|
-- ATired p = mkCl p.name (mkA "tired") ;
|
||||||
|
-- AUnderstand p = mkCl p.name IrregPol.understand_V ;
|
||||||
|
-- AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
|
||||||
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregPol.go_V) place.to) ;
|
||||||
|
|
||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
--
|
|
||||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||||
--
|
-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregPol.cost_V)) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ItCost item price = mkCl item (mkV2 IrregPol.cost_V) price ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- PropOpen p = mkCl p.name open_Adv ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- PropClosed p = mkCl p.name closed_Adv ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
||||||
--
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
-- PSeeYou d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
-- PSeeYouPlace p d =
|
||||||
|
-- mkText (lin Text (ss ("see you")))
|
||||||
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
-- Wife = xOf sing (mkN "wife") ;
|
||||||
|
-- Husband = xOf sing (mkN "husband") ;
|
||||||
|
-- Son = xOf sing (mkN "son") ;
|
||||||
|
-- Daughter = xOf sing (mkN "daughter") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
--
|
|
||||||
-- Monday = mkDay "måndag" ;
|
-- Monday = mkDay "Monday" ;
|
||||||
-- Tuesday = mkDay "tisdag" ;
|
-- Tuesday = mkDay "Tuesday" ;
|
||||||
-- Wednesday = mkDay "onsdag" ;
|
-- Wednesday = mkDay "Wednesday" ;
|
||||||
-- Thursday = mkDay "torsdag" ;
|
-- Thursday = mkDay "Thursday" ;
|
||||||
-- Friday = mkDay "fredag" ;
|
-- Friday = mkDay "Friday" ;
|
||||||
-- Saturday = mkDay "lördag" ;
|
-- Saturday = mkDay "Saturday" ;
|
||||||
-- Sunday = mkDay "söndag" ;
|
-- Sunday = mkDay "Sunday" ;
|
||||||
--
|
|
||||||
-- oper
|
-- Tomorrow = P.mkAdv "tomorrow" ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
-- {lang = mkNP (mkPN (nat + "a")) ;
|
-- auxiliaries
|
||||||
-- prop = mkA nat ; country = mkNP (mkPN co)} ;
|
|
||||||
--
|
-- oper
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
|
||||||
-- let day = mkNP (mkPN d) in
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
-- {name = day ;
|
-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
-- point = SyntaxPol.mkAdv on_Prep day ;
|
|
||||||
-- habitual = SyntaxPol.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
-- } ;
|
-- let day = mkNP (mkPN d) in
|
||||||
--
|
-- mkNPDay day (SyntaxPol.mkAdv on_Prep day)
|
||||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- (SyntaxPol.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
-- name = mkCN p ;
|
|
||||||
-- at = mkPrep i ;
|
-- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
-- to = to_Prep
|
-- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||||
-- } ;
|
|
||||||
--
|
-- open_Adv = P.mkAdv "open" ;
|
||||||
-- open_A = mkA "öppen" "öppet" ;
|
-- closed_Adv = P.mkAdv "closed" ;
|
||||||
-- closed_A = mkA "stängd" "stängt" ;
|
|
||||||
--
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
-- nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
|
-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
-- case p.isPron of {
|
|
||||||
-- True => mkNP p.poss (mkN "namn" "namn") ;
|
-- nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
||||||
-- _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
|
|
||||||
-- (SyntaxPol.mkAdv possess_Prep p.name)
|
--}
|
||||||
-- } ;
|
|
||||||
-- }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,134 +1,177 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
--2 Implementations of Words, with English as example
|
||||||
|
|
||||||
concrete WordsRus of Words = SentencesRus **
|
concrete WordsRus of Words = SentencesRus **
|
||||||
open SyntaxRus, ParadigmsRus, (L = LexiconRus), Prelude in {
|
open
|
||||||
|
SyntaxRus,
|
||||||
|
ParadigmsRus,
|
||||||
|
(L = LexiconRus),
|
||||||
|
(P = ParadigmsRus),
|
||||||
|
-- IrregRus,
|
||||||
|
-- ExtraRus,
|
||||||
|
Prelude in {
|
||||||
|
-- lin
|
||||||
|
|
||||||
|
-- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
|
||||||
|
|
||||||
lin
|
|
||||||
|
|
||||||
-- kinds of food
|
|
||||||
--
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "ost") ;
|
-- Cheese = mkCN (mkN "cheese") ;
|
||||||
-- Coffee = mkCN (mkN "kaffe" neutrum) ;
|
-- Chicken = mkCN (mkN "chicken") ;
|
||||||
|
-- Coffee = mkCN (mkN "coffee") ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "meat") ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "te" neutrum) ;
|
-- Tea = mkCN (mkN "tea") ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
--
|
|
||||||
-- properties
|
-- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
|
||||||
--
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "tråkig" ;
|
-- Boring = mkA "boring" ;
|
||||||
|
-- Cheap = mkA "cheap" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "läcker" ;
|
-- Delicious = mkA "delicious" ;
|
||||||
-- Expensive = mkA "dyr" ;
|
-- Expensive = mkA "expensive" ;
|
||||||
-- Fresh = mkA "färsk" ;
|
-- Fresh = mkA "fresh" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
-- Suspect = mkA "suspect" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
|
||||||
-- places
|
-- Places require different prepositions to express location; in some languages
|
||||||
--
|
-- also the directional preposition varies, but in English we use $to$, as
|
||||||
-- Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
-- defined by $mkPlace$.
|
||||||
-- Bar = mkPlace (mkN "bar" "barer") "i" ;
|
|
||||||
-- Church = mkPlace (mkN "kyrka") "i" ;
|
-- Airport = mkPlace "airport" "at" ;
|
||||||
-- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
-- Bar = mkPlace "bar" "in" ;
|
||||||
-- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
-- Church = mkPlace "church" "in" ;
|
||||||
-- Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
-- Cinema = mkPlace "cinema" "at" ;
|
||||||
-- Station = mkPlace (mkN "station" "stationer") "på" ;
|
-- Hospital = mkPlace "hospital" "in" ;
|
||||||
-- Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
-- Hotel = mkPlace "hotel" "in" ;
|
||||||
--
|
-- Museum = mkPlace "museum" "in" ;
|
||||||
-- currencies
|
-- Park = mkPlace "park" "in" ;
|
||||||
--
|
-- Restaurant = mkPlace "restaurant" "in" ;
|
||||||
-- DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
-- School = mkPlace "school" "at" ;
|
||||||
-- Dollar = mkCN (mkN "dollar" "dollar") ;
|
-- Shop = mkPlace "shop" "in" ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro") ;
|
-- Station = mkPlace "station" "at" ;
|
||||||
-- Lei = mkCN (mkN "lei" "lei") ;
|
-- Theatre = mkPlace "theatre" "at" ;
|
||||||
-- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
-- Toilet = mkPlace "toilet" "in" ;
|
||||||
--
|
-- University = mkPlace "university" "at" ;
|
||||||
-- nationalities
|
|
||||||
--
|
-- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
|
||||||
-- Belgian = mkA "belgisk" ;
|
|
||||||
-- Belgium = mkNP (mkPN "Belgien") ;
|
-- DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
-- English = mkNat "engelsk" "England" ;
|
-- Dollar = mkCN (mkN "dollar") ;
|
||||||
-- Finnish = mkNat "finsk" "Finland" ;
|
-- Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
|
||||||
-- Flemish = mkNP (mkPN "flamländska") ;
|
-- Lei = mkCN (mkN "leu" "lei") ;
|
||||||
-- French = mkNat "fransk" "Frankrike" ;
|
-- SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
|
||||||
-- Italian = mkNat "italiensk" "Italien" ;
|
|
||||||
-- Romanian = mkNat "rumänsk" "Rumänien" ;
|
-- Nationalities
|
||||||
-- Swedish = mkNat "svensk" "Sverige" ;
|
|
||||||
--
|
-- Belgian = mkA "Belgian" ;
|
||||||
-- actions
|
-- Belgium = mkNP (mkPN "Belgium") ;
|
||||||
--
|
-- English = mkNat "English" "England" ;
|
||||||
-- AHasName p name = mkCl (nameOf p) name ;
|
-- Finnish = mkNat "Finnish" "Finland" ;
|
||||||
-- AHungry p = mkCl p.name (mkA "hungrig") ;
|
-- Flemish = mkNP (mkPN "Flemish") ;
|
||||||
-- AIll p = mkCl p.name (mkA "sjuk") ;
|
-- French = mkNat "French" "France" ;
|
||||||
-- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
-- Italian = mkNat "Italian" "Italy" ;
|
||||||
-- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
-- Romanian = mkNat "Romanian" "Romania" ;
|
||||||
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxRus.mkAdv in_Prep co)) ;
|
-- Swedish = mkNat "Swedish" "Sweden" ;
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
|
||||||
-- AScared p = mkCl p.name (mkA "rädd") ;
|
-- Actions: the predication patterns are very often language-dependent.
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
|
||||||
-- AThirsty p = mkCl p.name (mkA "törstig") ;
|
-- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
-- ATired p = mkCl p.name (mkA "trött") ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
|
-- (mkNP (mkNP a_Det (mkN "room")) (SyntaxRus.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
--
|
-- (mkNP (mkNP a_Det (mkN "table")) (SyntaxRus.mkAdv for_Prep (mkNP num (mkN "person")))) ;
|
||||||
|
-- AHasName p name = mkCl (nameOf p) name ;
|
||||||
|
-- AHungry p = mkCl p.name (mkA "hungry") ;
|
||||||
|
-- AIll p = mkCl p.name (mkA "ill") ;
|
||||||
|
-- AKnow p = mkCl p.name IrregRus.know_V ;
|
||||||
|
-- ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
|
||||||
|
-- ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxRus.mkAdv in_Prep co)) ;
|
||||||
|
-- ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
|
||||||
|
-- AMarried p = mkCl p.name (mkA "married") ;
|
||||||
|
-- AReady p = mkCl p.name (mkA "ready") ;
|
||||||
|
-- AScared p = mkCl p.name (mkA "scared") ;
|
||||||
|
-- ASpeak p lang = mkCl p.name (mkV2 IrregRus.speak_V) lang ;
|
||||||
|
-- AThirsty p = mkCl p.name (mkA "thirsty") ;
|
||||||
|
-- ATired p = mkCl p.name (mkA "tired") ;
|
||||||
|
-- AUnderstand p = mkCl p.name IrregRus.understand_V ;
|
||||||
|
-- AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
|
||||||
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregRus.go_V) place.to) ;
|
||||||
|
|
||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
--
|
|
||||||
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
-- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
|
||||||
--
|
-- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregRus.cost_V)) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ItCost item price = mkCl item (mkV2 IrregRus.cost_V) price ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- PropOpen p = mkCl p.name open_Adv ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- PropClosed p = mkCl p.name closed_Adv ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
|
||||||
--
|
|
||||||
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
-- PSeeYou d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
-- PSeeYouPlace p d =
|
||||||
|
-- mkText (lin Text (ss ("see you")))
|
||||||
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
-- Wife = xOf sing (mkN "wife") ;
|
||||||
|
-- Husband = xOf sing (mkN "husband") ;
|
||||||
|
-- Son = xOf sing (mkN "son") ;
|
||||||
|
-- Daughter = xOf sing (mkN "daughter") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
--
|
|
||||||
-- Monday = mkDay "måndag" ;
|
-- Monday = mkDay "Monday" ;
|
||||||
-- Tuesday = mkDay "tisdag" ;
|
-- Tuesday = mkDay "Tuesday" ;
|
||||||
-- Wednesday = mkDay "onsdag" ;
|
-- Wednesday = mkDay "Wednesday" ;
|
||||||
-- Thursday = mkDay "torsdag" ;
|
-- Thursday = mkDay "Thursday" ;
|
||||||
-- Friday = mkDay "fredag" ;
|
-- Friday = mkDay "Friday" ;
|
||||||
-- Saturday = mkDay "lördag" ;
|
-- Saturday = mkDay "Saturday" ;
|
||||||
-- Sunday = mkDay "söndag" ;
|
-- Sunday = mkDay "Sunday" ;
|
||||||
--
|
|
||||||
-- oper
|
-- Tomorrow = P.mkAdv "tomorrow" ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
|
||||||
-- {lang = mkNP (mkPN (nat + "a")) ;
|
-- auxiliaries
|
||||||
-- prop = mkA nat ; country = mkNP (mkPN co)} ;
|
|
||||||
--
|
-- oper
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
|
||||||
-- let day = mkNP (mkPN d) in
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
-- {name = day ;
|
-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
-- point = SyntaxRus.mkAdv on_Prep day ;
|
|
||||||
-- habitual = SyntaxRus.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
-- } ;
|
-- let day = mkNP (mkPN d) in
|
||||||
--
|
-- mkNPDay day (SyntaxRus.mkAdv on_Prep day)
|
||||||
-- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- (SyntaxRus.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
-- name = mkCN p ;
|
|
||||||
-- at = mkPrep i ;
|
-- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
-- to = to_Prep
|
-- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
|
||||||
-- } ;
|
|
||||||
--
|
-- open_Adv = P.mkAdv "open" ;
|
||||||
-- open_A = mkA "öppen" "öppet" ;
|
-- closed_Adv = P.mkAdv "closed" ;
|
||||||
-- closed_A = mkA "stängd" "stängt" ;
|
|
||||||
--
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
-- nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
|
-- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
-- case p.isPron of {
|
|
||||||
-- True => mkNP p.poss (mkN "namn" "namn") ;
|
-- nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
|
||||||
-- _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
|
|
||||||
-- (SyntaxRus.mkAdv possess_Prep p.name)
|
--}
|
||||||
-- } ;
|
|
||||||
-- }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
-- (c) 2009 Aarne Ranta and Olga Caprotti under LGPL
|
-- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
|
||||||
|
|
||||||
concrete WordsSpa of Words = SentencesSpa ** open
|
concrete WordsSpa of Words = SentencesSpa ** open
|
||||||
SyntaxSpa,
|
SyntaxSpa,
|
||||||
@@ -6,131 +6,169 @@ concrete WordsSpa of Words = SentencesSpa ** open
|
|||||||
(E = ExtraSpa),
|
(E = ExtraSpa),
|
||||||
(L = LexiconSpa),
|
(L = LexiconSpa),
|
||||||
(P = ParadigmsSpa),
|
(P = ParadigmsSpa),
|
||||||
ParadigmsSpa in {
|
ParadigmsSpa,
|
||||||
|
Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
|
||||||
lin
|
|
||||||
|
|
||||||
-- kinds
|
-- kinds
|
||||||
|
|
||||||
Apple = mkCN L.apple_N ;
|
Apple = mkCN L.apple_N ;
|
||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
-- Cheese = mkCN (mkN "formaggio") ;
|
-- Cheese = mkCN (mkN "formaggio") ;
|
||||||
-- Coffee = mkCN (mkN "caffè") ;
|
-- Chicken = mkCN (mkN "pollo") ;
|
||||||
|
-- Coffee = mkCN (mkN "caffè") ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
-- Meat = mkCN (mkN "carne" feminine) ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
-- Pizza = mkCN (mkN "pizza") ;
|
-- Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
-- Tea = mkCN (mkN "tè") ;
|
-- Tea = mkCN (mkN "tè") ;
|
||||||
Water = mkCN L.water_N ;
|
Water = mkCN L.water_N ;
|
||||||
Wine = mkCN L.wine_N ;
|
Wine = mkCN L.wine_N ;
|
||||||
--
|
|
||||||
-- -- properties
|
-- properties
|
||||||
--
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
-- Boring = mkA "noioso" ;
|
-- Boring = mkA "noioso" ;
|
||||||
|
-- Cheap = let c = "a buon mercato" in mkA c c c c c ; ----
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
-- Delicious = mkA "delizioso" ;
|
-- Delicious = mkA "delizioso" ;
|
||||||
-- Expensive = mkA "caro" ;
|
-- Expensive = mkA "caro" ;
|
||||||
-- Fresh = mkA "fresco" ;
|
-- Fresh = mkA "fresco" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
--
|
-- Suspect = mkA "sospetto" ;
|
||||||
-- -- places
|
|
||||||
--
|
-- places
|
||||||
-- Airport = mkPlace (mkN "aeroporto") dative ;
|
|
||||||
-- Bar = mkPlace (mkN "bar") P.in_Prep ;
|
-- Airport = mkPlace (mkN "aeroporto") dative ;
|
||||||
-- Church = mkPlace (mkN "chiesa") P.in_Prep ;
|
-- Bar = mkPlace (mkN "bar") P.in_Prep ;
|
||||||
-- Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
|
-- Church = mkPlace (mkN "chiesa") P.in_Prep ;
|
||||||
-- Museum = mkPlace (mkN "museo") P.in_Prep ;
|
-- Cinema = mkPlace (mkN "cinema") P.in_Prep ;
|
||||||
-- Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
|
-- Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
|
||||||
-- Station = mkPlace (mkN "stazione" feminine) dative ;
|
-- Hotel = mkPlace (mkN "albergo") P.in_Prep ;
|
||||||
-- Toilet = mkPlace (mkN "bagno") P.in_Prep ;
|
-- Museum = mkPlace (mkN "museo") P.in_Prep ;
|
||||||
--
|
-- Park = mkPlace (mkN "parco") P.in_Prep ;
|
||||||
-- -- currencies
|
-- Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
|
||||||
--
|
-- School = mkPlace (mkN "scuola") P.in_Prep ;
|
||||||
-- DanishCrown = mkCN (mkA "danese") (mkN "corona") ;
|
-- Shop = mkPlace (mkN "negozio") P.in_Prep ;
|
||||||
-- Dollar = mkCN (mkN "dollar") ;
|
-- Station = mkPlace (mkN "stazione" feminine) dative ;
|
||||||
-- Euro = mkCN (mkN "euro" "euro" masculine) ;
|
-- Theatre = mkPlace (mkN "teatro") P.in_Prep ;
|
||||||
-- Lei = mkCN (mkN "lei") ; ---- ?
|
-- Toilet = mkPlace (mkN "bagno") P.in_Prep ;
|
||||||
--
|
-- University = mkPlace (mkN "università") dative ;
|
||||||
-- -- nationalities
|
|
||||||
--
|
-- currencies
|
||||||
-- Belgian = mkA "belgo" ;
|
|
||||||
-- Belgium = mkNP (mkPN "Belgio") ;
|
-- DanishCrown = mkCN (mkA "danese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||||
-- English = mkNat "inglese" "Inghilterra" ;
|
-- Dollar = mkCN (mkN "dollar") ;
|
||||||
-- Finnish = mkNat "finlandese" "Finlandia" ;
|
-- Euro = mkCN (mkN "euro" "euro" masculine) ;
|
||||||
-- Flemish = mkNP (mkPN "fiammingo") ;
|
-- Lei = mkCN (mkN "lei") ; ---- ?
|
||||||
-- French = mkNat "francese" "Francia" ;
|
-- SwedishCrown = mkCN (mkA "svedese") (mkN "corona") | mkCN (mkN "corona") ;
|
||||||
-- Italian = mkNat "italiano" "Italia" ;
|
|
||||||
-- Romanian = mkNat "rumeno" "Romania" ;
|
-- nationalities
|
||||||
-- Swedish = mkNat "svedese" "Svezia" ;
|
|
||||||
--
|
-- Belgian = mkA "belgo" ;
|
||||||
-- -- actions
|
-- Belgium = mkNP (mkPN "Belgio") ;
|
||||||
--
|
-- English = mkNat "inglese" "Inghilterra" ;
|
||||||
-- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
|
-- Finnish = mkNat "finlandese" "Finlandia" ;
|
||||||
-- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
|
-- Flemish = mkNP (mkPN "fiammingo") ;
|
||||||
-- AIll p = mkCl p.name (mkA "malato") ;
|
-- French = mkNat "francese" "Francia" ;
|
||||||
-- AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ;
|
-- Italian = mkNat "italiano" "Italia" ;
|
||||||
-- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ;
|
-- Romanian = mkNat "rumeno" "Romania" ;
|
||||||
-- ALive p co =
|
-- Swedish = mkNat "svedese" "Svezia" ;
|
||||||
-- mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxSpa.mkAdv P.in_Prep co)) ;
|
|
||||||
-- ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
|
-- actions
|
||||||
-- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
|
|
||||||
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
|
-- AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
|
||||||
-- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
-- ATired p = mkCl p.name (mkA "stanco") ;
|
-- AHasRoom p num = mkCl p.name have_V2
|
||||||
-- AUnderstand p = mkCl p.name (mkV "capire") ;
|
-- (mkNP (mkNP a_Det (mkN "camera")) (SyntaxSpa.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||||
-- AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ;
|
-- AHasTable p num = mkCl p.name have_V2
|
||||||
AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
-- (mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxSpa.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
|
||||||
--
|
-- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
|
||||||
--
|
-- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
|
||||||
-- -- miscellaneous
|
-- AIll p = mkCl p.name (mkA "malato") ;
|
||||||
--
|
-- AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ;
|
||||||
-- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
|
-- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ;
|
||||||
--
|
-- ALive p co =
|
||||||
-- PropOpen p = mkCl p.name open_A ;
|
-- mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxSpa.mkAdv P.in_Prep co)) ;
|
||||||
-- PropClosed p = mkCl p.name closed_A ;
|
-- ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
|
||||||
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
-- AMarried p = mkCl p.name (mkA "sposato") ;
|
||||||
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
-- AReady p = mkCl p.name (mkA "pronto") ;
|
||||||
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
-- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
|
||||||
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
-- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
|
||||||
--
|
-- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
|
||||||
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
|
-- ATired p = mkCl p.name (mkA "stanco") ;
|
||||||
-- ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
|
-- AUnderstand p = mkCl p.name (mkV "capire") ;
|
||||||
--
|
-- AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ;
|
||||||
-- -- week days
|
-- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
|
||||||
--
|
|
||||||
-- Monday = mkDay "lunedì" ;
|
|
||||||
-- Tuesday = mkDay "martedì" ;
|
-- miscellaneous
|
||||||
-- Wednesday = mkDay "mercoledì" ;
|
|
||||||
-- Thursday = mkDay "giovedì" ;
|
-- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
|
||||||
-- Friday = mkDay "venerdì" ;
|
-- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
|
||||||
-- Saturday = mkDay "sabato" ;
|
|
||||||
-- Sunday = mkDay "domenica" ;
|
-- PropOpen p = mkCl p.name open_A ;
|
||||||
--
|
-- PropClosed p = mkCl p.name closed_A ;
|
||||||
-- -- auxiliaries
|
-- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
|
||||||
--
|
-- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
|
||||||
-- oper
|
-- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
||||||
-- mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
-- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||||
-- {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
|
|
||||||
--
|
-- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
|
||||||
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
-- ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
|
||||||
-- let day = mkNP (mkPN d) in
|
|
||||||
-- {name = day ;
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
-- point, -- = ParadigmsSpa.mkAdv d ;
|
-- mkText : Text -> Text -> Text ;
|
||||||
-- habitual = ParadigmsSpa.mkAdv ("il" ++ d) ; ---- ?
|
|
||||||
-- } ;
|
-- PSeeYou d = mkText (lin Text (ss ("arrivederci"))) (mkPhrase (mkUtt d)) ;
|
||||||
--
|
-- PSeeYouPlace p d =
|
||||||
-- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
-- mkText (lin Text (ss ("arrivederci")))
|
||||||
-- name = mkCN p ;
|
-- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
-- at = i ;
|
|
||||||
-- to = dative
|
-- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
|
||||||
-- } ;
|
-- below. Languages with productive genitives can use an equivalent of
|
||||||
--
|
-- "my son's wife" for non-pronouns, as e.g. in English.
|
||||||
-- open_A = mkA "aperto" ;
|
|
||||||
-- closed_A = mkA "chiuso" ;
|
-- Wife = xOf sing (mkN "sposa") ;
|
||||||
--
|
-- Husband = xOf sing (mkN "marito") ;
|
||||||
--
|
-- Son = xOf sing (mkN "figlio") ;
|
||||||
-- }
|
-- Daughter = xOf sing (mkN "figlia") ;
|
||||||
|
-- Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
|
-- week days
|
||||||
|
|
||||||
|
-- Monday = mkDay "lunedì" ;
|
||||||
|
-- Tuesday = mkDay "martedì" ;
|
||||||
|
-- Wednesday = mkDay "mercoledì" ;
|
||||||
|
-- Thursday = mkDay "giovedì" ;
|
||||||
|
-- Friday = mkDay "venerdì" ;
|
||||||
|
-- Saturday = mkDay "sabato" ;
|
||||||
|
-- Sunday = mkDay "domenica" ;
|
||||||
|
|
||||||
|
-- Tomorrow = P.mkAdv "domani" ;
|
||||||
|
|
||||||
|
-- auxiliaries
|
||||||
|
|
||||||
|
-- oper
|
||||||
|
-- mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
|
-- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
|
|
||||||
|
-- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
|
-- let day = mkNP (mkPN d) in
|
||||||
|
-- mkNPDay day (P.mkAdv ("il" ++ d)) (P.mkAdv ("il" ++ d)) ; ---- ?
|
||||||
|
|
||||||
|
-- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
|
-- mkCNPlace (mkCN p) i dative ;
|
||||||
|
|
||||||
|
-- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
|
||||||
|
|
||||||
|
-- open_A = mkA "aperto" ;
|
||||||
|
-- closed_A = mkA "chiuso" ;
|
||||||
|
|
||||||
|
|
||||||
|
--}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
-- (c) 2009 Aarne Ranta under LGPL
|
||||||
|
|
||||||
concrete WordsSwe of Words = SentencesSwe **
|
concrete WordsSwe of Words = SentencesSwe **
|
||||||
open SyntaxSwe, ParadigmsSwe, IrregSwe, (L = LexiconSwe), Prelude in {
|
open SyntaxSwe, ParadigmsSwe, IrregSwe, (L = LexiconSwe), ExtraSwe, Prelude in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
@@ -11,8 +11,10 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
Beer = mkCN L.beer_N ;
|
Beer = mkCN L.beer_N ;
|
||||||
Bread = mkCN L.bread_N ;
|
Bread = mkCN L.bread_N ;
|
||||||
Cheese = mkCN (mkN "ost") ;
|
Cheese = mkCN (mkN "ost") ;
|
||||||
|
Chicken = mkCN (mkN "kyckling") ;
|
||||||
Coffee = mkCN (mkN "kaffe" neutrum) ;
|
Coffee = mkCN (mkN "kaffe" neutrum) ;
|
||||||
Fish = mkCN L.fish_N ;
|
Fish = mkCN L.fish_N ;
|
||||||
|
Meat = mkCN (mkN "kött" "kött") ;
|
||||||
Milk = mkCN L.milk_N ;
|
Milk = mkCN L.milk_N ;
|
||||||
Pizza = mkCN (mkN "pizza") ;
|
Pizza = mkCN (mkN "pizza") ;
|
||||||
Salt = mkCN L.salt_N ;
|
Salt = mkCN L.salt_N ;
|
||||||
@@ -23,12 +25,14 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
-- properties
|
-- properties
|
||||||
|
|
||||||
Bad = L.bad_A ;
|
Bad = L.bad_A ;
|
||||||
|
Cheap = mkA "billig" ;
|
||||||
Boring = mkA "tråkig" ;
|
Boring = mkA "tråkig" ;
|
||||||
Cold = L.cold_A ;
|
Cold = L.cold_A ;
|
||||||
Delicious = mkA "läcker" ;
|
Delicious = mkA "läcker" ;
|
||||||
Expensive = mkA "dyr" ;
|
Expensive = mkA "dyr" ;
|
||||||
Fresh = mkA "färsk" ;
|
Fresh = mkA "färsk" ;
|
||||||
Good = L.good_A ;
|
Good = L.good_A ;
|
||||||
|
Suspect = mkA "suspekt" "suspekt" ;
|
||||||
Warm = L.warm_A ;
|
Warm = L.warm_A ;
|
||||||
|
|
||||||
-- places
|
-- places
|
||||||
@@ -36,19 +40,26 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
|
||||||
Bar = mkPlace (mkN "bar" "barer") "i" ;
|
Bar = mkPlace (mkN "bar" "barer") "i" ;
|
||||||
Church = mkPlace (mkN "kyrka") "i" ;
|
Church = mkPlace (mkN "kyrka") "i" ;
|
||||||
|
Cinema = mkPlace (mkN "bio" "bio" "bion" "biona") "på" ; ---- ?
|
||||||
Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
|
||||||
|
Hotel = mkPlace (mkN "hotell" "hotell") "på" ;
|
||||||
Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
|
||||||
|
Park = mkPlace (mkN "park" "parker") "i" ;
|
||||||
Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
|
||||||
|
Shop = mkPlace (mkN "affär" "affär") "i" ;
|
||||||
|
School = mkPlace (mkN "skola") "på" ;
|
||||||
Station = mkPlace (mkN "station" "stationer") "på" ;
|
Station = mkPlace (mkN "station" "stationer") "på" ;
|
||||||
|
Theatre = mkPlace (mkN "teater" "teatrar") "på" ;
|
||||||
Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
|
||||||
|
University = mkPlace (mkN "universitet" "universitet") "på" ;
|
||||||
|
|
||||||
-- currencies
|
-- currencies
|
||||||
|
|
||||||
DanishCrown = mkCN (mkA "dansk") (mkN "krona") ;
|
DanishCrown = mkCN (mkA "dansk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
Dollar = mkCN (mkN "dollar" "dollar") ;
|
Dollar = mkCN (mkN "dollar" "dollar") ;
|
||||||
Euro = mkCN (mkN "euro" "euro") ;
|
Euro = mkCN (mkN "euro" "euro") ;
|
||||||
Lei = mkCN (mkN "lei" "lei") ;
|
Lei = mkCN (mkN "lei" "lei") ;
|
||||||
SwedishCrown = mkCN (mkA "svensk") (mkN "krona") ;
|
SwedishCrown = mkCN (mkA "svensk") (mkN "krona") | mkCN (mkN "krona") ;
|
||||||
|
|
||||||
-- nationalities
|
-- nationalities
|
||||||
|
|
||||||
@@ -64,13 +75,23 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
|
|
||||||
-- actions
|
-- actions
|
||||||
|
|
||||||
|
AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
|
||||||
AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
|
AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
|
||||||
|
AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
|
||||||
|
AHasRoom p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "rum" "rum"))
|
||||||
|
(SyntaxSwe.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
|
AHasTable p num = mkCl p.name have_V2
|
||||||
|
(mkNP (mkNP a_Det (mkN "bord" "bord"))
|
||||||
|
(SyntaxSwe.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
|
||||||
AHungry p = mkCl p.name (mkA "hungrig") ;
|
AHungry p = mkCl p.name (mkA "hungrig") ;
|
||||||
AIll p = mkCl p.name (mkA "sjuk") ;
|
AIll p = mkCl p.name (mkA "sjuk") ;
|
||||||
AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
|
||||||
ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
|
||||||
ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxSwe.mkAdv in_Prep co)) ;
|
ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxSwe.mkAdv in_Prep co)) ;
|
||||||
ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
|
||||||
|
AMarried p = mkCl p.name (mkA "gift") ;
|
||||||
|
AReady p = mkCl p.name (mkA "färdig") ;
|
||||||
AScared p = mkCl p.name (mkA "rädd") ;
|
AScared p = mkCl p.name (mkA "rädd") ;
|
||||||
ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
|
||||||
AThirsty p = mkCl p.name (mkA "törstig") ;
|
AThirsty p = mkCl p.name (mkA "törstig") ;
|
||||||
@@ -82,6 +103,9 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
-- miscellaneous
|
-- miscellaneous
|
||||||
|
|
||||||
QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
|
QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
|
||||||
|
QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
|
||||||
|
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
||||||
|
ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
||||||
|
|
||||||
PropOpen p = mkCl p.name open_A ;
|
PropOpen p = mkCl p.name open_A ;
|
||||||
PropClosed p = mkCl p.name closed_A ;
|
PropClosed p = mkCl p.name closed_A ;
|
||||||
@@ -90,8 +114,23 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
|
||||||
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
|
||||||
|
|
||||||
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
|
-- Building phrases from strings is complicated: the solution is to use
|
||||||
ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
|
-- mkText : Text -> Text -> Text ;
|
||||||
|
|
||||||
|
PSeeYou d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
|
||||||
|
PSeeYouPlace p d =
|
||||||
|
mkText (lin Text (ss ("vi ses")))
|
||||||
|
(mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
|
||||||
|
|
||||||
|
-- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
|
||||||
|
-- below. Languages without productive genitives must use an equivalent of
|
||||||
|
-- "the wife of my son" for non-pronouns.
|
||||||
|
|
||||||
|
Wife = xOf sing (mkN "fru" "fruar") ;
|
||||||
|
Husband = xOf sing L.man_N ;
|
||||||
|
Son = xOf sing (mkN "son" "söner") ;
|
||||||
|
Daughter = xOf sing (mkN "dotter" "döttrar") ;
|
||||||
|
Children = xOf plur L.child_N ;
|
||||||
|
|
||||||
-- week days
|
-- week days
|
||||||
|
|
||||||
@@ -103,42 +142,25 @@ concrete WordsSwe of Words = SentencesSwe **
|
|||||||
Saturday = mkDay "lördag" ;
|
Saturday = mkDay "lördag" ;
|
||||||
Sunday = mkDay "söndag" ;
|
Sunday = mkDay "söndag" ;
|
||||||
|
|
||||||
|
Tomorrow = ParadigmsSwe.mkAdv "imorgon" ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
|
mkNat : Str -> Str -> NPNationality = \nat,co ->
|
||||||
{lang = mkNP (mkPN (nat + "a")) ;
|
mkNPNationality (mkNP (mkPN (nat + "a"))) (mkNP (mkPN co)) (mkA nat) ;
|
||||||
prop = mkA nat ; country = mkNP (mkPN co)} ;
|
|
||||||
|
|
||||||
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
|
||||||
let day = mkNP (mkPN d) in
|
let day = mkNP (mkPN d) in
|
||||||
{name = day ;
|
mkNPDay day (SyntaxSwe.mkAdv on_Prep day)
|
||||||
point = SyntaxSwe.mkAdv on_Prep day ;
|
(SyntaxSwe.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
|
||||||
habitual = SyntaxSwe.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
|
|
||||||
} ;
|
|
||||||
|
|
||||||
mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
|
mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
|
||||||
name = mkCN p ;
|
mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
|
||||||
at = mkPrep i ;
|
|
||||||
to = to_Prep
|
|
||||||
} ;
|
|
||||||
|
|
||||||
open_A = mkA "öppen" "öppet" ;
|
open_A = mkA "öppen" "öppet" ;
|
||||||
closed_A = mkA "stängd" "stängt" ;
|
closed_A = mkA "stängd" "stängt" ;
|
||||||
|
|
||||||
NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
|
xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
|
||||||
|
relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
|
||||||
|
|
||||||
xOf : Bool -> N -> NPPerson -> NPPerson = \n,x,p ->
|
|
||||||
let num = if_then_else Num n plNum sgNum in {
|
|
||||||
name = case p.isPron of {
|
|
||||||
True => mkNP p.poss num x ;
|
|
||||||
_ => mkNP (mkNP the_Quant num x)
|
|
||||||
(SyntaxSwe.mkAdv possess_Prep p.name)
|
|
||||||
} ;
|
|
||||||
isPron = False ;
|
|
||||||
poss = SyntaxSwe.mkQuant he_Pron -- not used because not pron
|
|
||||||
} ;
|
|
||||||
|
|
||||||
nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
|
|
||||||
|
|
||||||
sing = False ; plur = True ;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
DisambPhrasebookEng :
|
||||||
|
PhrasebookEng :
|
||||||
|
PhrasebookFin :
|
||||||
|
PhrasebookFre : AHasRoom AHasTable AReady Cheap Cinema Hotel PSeeYou PSeeYouPlace Park School Shop Suspect Theatre Tomorrow University
|
||||||
|
PhrasebookGer : AHasAge AHasChildren AHasRoom AHasTable AMarried AReady Bar Cheap Chicken Children Cinema Coffee Daughter Dollar Flemish GNiceToMeetYou Hotel Husband Lei Meat Museum PSeeYou PSeeYouPlace Park QWhatAge Romanian School Shop Son Suspect Swedish SwedishCrown Tea Theatre Toilet Tomorrow Wife
|
||||||
|
PhrasebookIta :
|
||||||
|
PhrasebookRon : AHasAge AHasChildren AHasName AHasRoom AHasTable AHungry AIll AKnow ALive AMarried AReady AScared AThirsty ATired AWantGo Airport Belgian Belgium Cheap Chicken Children Church Cinema Coffee DanishCrown Daughter English Finnish Flemish French Friday GExcusePol GPleaseGivePol GSorryPol Hospital Hotel Husband Italian Meat Monday Museum PSeeYou PSeeYouPlace Park PropClosed PropClosedDate PropClosedDay PropOpen PropOpenDate PropOpenDay QWhatAge QWhatName Romanian Saturday School Shop Son Station Sunday Suspect Swedish SwedishCrown Tea Theatre Thursday Tomorrow Tuesday University Wednesday Wife
|
||||||
|
PhrasebookSwe :
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
History
|
History
|
||||||
</P>
|
</P>
|
||||||
<UL>
|
<UL>
|
||||||
|
<LI>10 April. Some additions in API, comments in implementation; regenerated clones.
|
||||||
<LI>8 April. Added German.
|
<LI>8 April. Added German.
|
||||||
<LI>7 April. Added the Clone script, applied to initiate the rest of MOLTO languages.
|
<LI>7 April. Added the Clone script, applied to initiate the rest of MOLTO languages.
|
||||||
<LI>6 April. Version 0.4: weekdays, nationalities
|
<LI>6 April. Version 0.4: weekdays, nationalities
|
||||||
@@ -193,12 +194,21 @@ The basic things "everyone" can do is
|
|||||||
<P>
|
<P>
|
||||||
The missing concrete syntax entries are added to the <CODE>Words</CODE><I>L</I><CODE>.gf</CODE>
|
The missing concrete syntax entries are added to the <CODE>Words</CODE><I>L</I><CODE>.gf</CODE>
|
||||||
files for each language <I>L</I>. The
|
files for each language <I>L</I>. The
|
||||||
<A HREF="http://www.grammaticalframework.org/lib/doc/synopsis.html#toc78">morphological paradigms</A>
|
<A HREF="http://code.haskell.org/gf/lib/doc/synopsis.html#toc78">morphological paradigms</A>
|
||||||
of the GF resource library should be used. Actions (prefixed with <CODE>A</CODE>, as <CODE>AWant</CODE>) are
|
of the GF resource library should be used. Actions (prefixed with <CODE>A</CODE>, as <CODE>AWant</CODE>) are
|
||||||
a little more demanding, since they also require syntax constructors. Greetings (prefixed
|
a little more demanding, since they also require syntax constructors. Greetings (prefixed
|
||||||
with <CODE>G</CODE>) are pure strings.
|
with <CODE>G</CODE>) are pure strings.
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
|
Some explanations can be found in the
|
||||||
|
<A HREF="Implementation.html">implementation document</A>, which is produced from the
|
||||||
|
concrete syntax files
|
||||||
|
<A HREF="http://code.haskell.org/gf/examples/phrasebook/SentencesI.gf"><CODE>SentencesI.gf</CODE></A>
|
||||||
|
and
|
||||||
|
<A HREF="http://code.haskell.org/gf/examples/phrasebook/WordsEng.gf"><CODE>WordsEng.gf</CODE></A>
|
||||||
|
by <CODE>make doc</CODE>.
|
||||||
|
</P>
|
||||||
|
<P>
|
||||||
Here are the steps to follow for contributors:
|
Here are the steps to follow for contributors:
|
||||||
</P>
|
</P>
|
||||||
<OL>
|
<OL>
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ Aarne Ranta
|
|||||||
#BSMALL
|
#BSMALL
|
||||||
|
|
||||||
History
|
History
|
||||||
|
- 10 April. Some additions in API, comments in implementation; regenerated clones.
|
||||||
- 8 April. Added German.
|
- 8 April. Added German.
|
||||||
- 7 April. Added the Clone script, applied to initiate the rest of MOLTO languages.
|
- 7 April. Added the Clone script, applied to initiate the rest of MOLTO languages.
|
||||||
- 6 April. Version 0.4: weekdays, nationalities
|
- 6 April. Version 0.4: weekdays, nationalities
|
||||||
@@ -163,11 +164,19 @@ The basic things "everyone" can do is
|
|||||||
|
|
||||||
The missing concrete syntax entries are added to the ``Words``//L//``.gf``
|
The missing concrete syntax entries are added to the ``Words``//L//``.gf``
|
||||||
files for each language //L//. The
|
files for each language //L//. The
|
||||||
[morphological paradigms http://www.grammaticalframework.org/lib/doc/synopsis.html#toc78]
|
[morphological paradigms http://code.haskell.org/gf/lib/doc/synopsis.html#toc78]
|
||||||
of the GF resource library should be used. Actions (prefixed with ``A``, as ``AWant``) are
|
of the GF resource library should be used. Actions (prefixed with ``A``, as ``AWant``) are
|
||||||
a little more demanding, since they also require syntax constructors. Greetings (prefixed
|
a little more demanding, since they also require syntax constructors. Greetings (prefixed
|
||||||
with ``G``) are pure strings.
|
with ``G``) are pure strings.
|
||||||
|
|
||||||
|
Some explanations can be found in the
|
||||||
|
[implementation document Implementation.html], which is produced from the
|
||||||
|
concrete syntax files
|
||||||
|
[``SentencesI.gf`` http://code.haskell.org/gf/examples/phrasebook/SentencesI.gf]
|
||||||
|
and
|
||||||
|
[``WordsEng.gf`` http://code.haskell.org/gf/examples/phrasebook/WordsEng.gf]
|
||||||
|
by ``make doc``.
|
||||||
|
|
||||||
Here are the steps to follow for contributors:
|
Here are the steps to follow for contributors:
|
||||||
+ Make sure you have the latest sources
|
+ Make sure you have the latest sources
|
||||||
from [GF Darcs http://www.grammaticalframework.org/doc/gf-developers.html],
|
from [GF Darcs http://www.grammaticalframework.org/doc/gf-developers.html],
|
||||||
|
|||||||
Reference in New Issue
Block a user