summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-03-26 17:38:20 +0000
committeraarne <aarne@chalmers.se>2010-03-26 17:38:20 +0000
commitc24440d1346a01d660f83359d8ef72a2ef1b0c13 (patch)
treec76eaa80d1be7bee4111a1dcee4b1dab1332121d
parent1d41c587ac396b57c1f2a93e417970f8ea39becb (diff)
fixes for webdemos, including bug in StructuralIta
-rw-r--r--contrib/summerschool/foods/FoodsEng.gf1
-rw-r--r--contrib/summerschool/foods/FoodsHin.gf75
-rw-r--r--contrib/summerschool/foods/FoodsSwe.gf2
-rw-r--r--src/server/PGFService.hs12
4 files changed, 11 insertions, 79 deletions
diff --git a/contrib/summerschool/foods/FoodsEng.gf b/contrib/summerschool/foods/FoodsEng.gf
index dae3ed54c..e7359a4ff 100644
--- a/contrib/summerschool/foods/FoodsEng.gf
+++ b/contrib/summerschool/foods/FoodsEng.gf
@@ -1,6 +1,7 @@
-- (c) 2009 Aarne Ranta under LGPL
concrete FoodsEng of Foods = {
+ flags language = en_US;
lincat
Comment, Quality = {s : Str} ;
Kind = {s : Number => Str} ;
diff --git a/contrib/summerschool/foods/FoodsHin.gf b/contrib/summerschool/foods/FoodsHin.gf
deleted file mode 100644
index 7b114fc81..000000000
--- a/contrib/summerschool/foods/FoodsHin.gf
+++ /dev/null
@@ -1,75 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsHin of Foods = {
-
- flags coding=utf8 ;
-
- param
- Gender = Masc | Fem ;
- Number = Sg | Pl ;
- lincat
- Comment = {s : Str} ;
- Item = {s : Str ; g : Gender ; n : Number} ;
- Kind = {s : Number => Str ; g : Gender} ;
- Quality = {s : Gender => Number => Str} ;
- lin
- Pred item quality = {
- s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n
- } ;
- This kind = {s = "यह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ;
- That kind = {s = "वह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ;
- These kind = {s = "ये" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ;
- Those kind = {s = "वे" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ;
- Mod quality kind = {
- s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ;
- g = kind.g
- } ;
- Wine = regN "मदिरा" ;
- Cheese = regN "पनीर" ;
- Fish = regN "मछली" ;
- Pizza = regN "पिजजा" ;
- Very quality = {s = \\g,n => "बहुत" ++ quality.s ! g ! n} ;
- Fresh = regAdj "ताज़ा" ;
- Warm = regAdj "गरम" ;
- Italian = regAdj "इटली" ;
- Expensive = regAdj "महंगा" ;
- Delicious = regAdj "रुचिकर" ;
- Boring = regAdj "पैरिया" ;
-
- oper
- mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
- \s,p,g -> {
- s = table {
- Sg => s ;
- Pl => p
- } ;
- g = g
- } ;
-
- regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of {
- lark + "ा" => mkN s (lark + "े") Masc ;
- lark + "ी" => mkN s (lark + "ियँ") Fem ;
- _ => mkN s s Masc
- } ;
-
- mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> {
- s = table {
- Masc => table {
- Sg => ms ;
- Pl => mp
- } ;
- Fem => \\_ => f
- }
- } ;
-
- regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of {
- acch + "ा" => mkAdj a (acch + "े") (acch + "ी") ;
- _ => mkAdj a a a
- } ;
-
- copula : Number -> Str = \n -> case n of {
- Sg => "है" ;
- Pl => "हैं"
- } ;
-
- }
diff --git a/contrib/summerschool/foods/FoodsSwe.gf b/contrib/summerschool/foods/FoodsSwe.gf
index d4a87f01a..cbb35fb98 100644
--- a/contrib/summerschool/foods/FoodsSwe.gf
+++ b/contrib/summerschool/foods/FoodsSwe.gf
@@ -4,4 +4,4 @@
concrete FoodsSwe of Foods = FoodsI with
(Syntax = SyntaxSwe),
- (LexFoods = LexFoodsSwe) ;
+ (LexFoods = LexFoodsSwe) ** {flags language = sv_SE;} ;
diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs
index 6f53d3768..6f2e38a33 100644
--- a/src/server/PGFService.hs
+++ b/src/server/PGFService.hs
@@ -125,10 +125,10 @@ doTranslate pgf input mcat mfrom mto =
doTranslateGroup :: PGF -> String -> Maybe PGF.Type -> Maybe PGF.Language -> Maybe PGF.Language -> JSValue
doTranslateGroup pgf input mcat mfrom mto =
showJSON
- [toJSObject [("from", showJSON (PGF.showLanguage from)),
- ("to", showJSON (PGF.showLanguage to)),
+ [toJSObject [("from", showJSON (langOnly (PGF.showLanguage from))),
+ ("to", showJSON (langOnly (PGF.showLanguage to))),
("linearizations",showJSON
- [toJSObject [("text", unlines output)]])
+ [toJSObject [("text", doBind alt)] | alt <- output])
]
|
(from,trees) <- parse' pgf input mcat mfrom,
@@ -140,6 +140,12 @@ doTranslateGroup pgf input mcat mfrom mto =
start ls = [(l,[s]) | (l,s) <- ls]
more (l,s) =
Map.insertWith (\ [x] xs -> if elem x xs then xs else (x : xs)) l s
+ doBind = unwords . bind . words
+ bind ws = case ws of
+ w : "&+" : u : ws2 -> bind ((w ++ u) : ws2)
+ w : ws2 -> w : bind ws2
+ _ -> ws
+ langOnly = reverse . take 3 . reverse
doParse :: PGF -> String -> Maybe PGF.Type -> Maybe PGF.Language -> JSValue