mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 08:32:50 -06:00
fixes for webdemos, including bug in StructuralIta
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
-- (c) 2009 Aarne Ranta under LGPL
|
-- (c) 2009 Aarne Ranta under LGPL
|
||||||
|
|
||||||
concrete FoodsEng of Foods = {
|
concrete FoodsEng of Foods = {
|
||||||
|
flags language = en_US;
|
||||||
lincat
|
lincat
|
||||||
Comment, Quality = {s : Str} ;
|
Comment, Quality = {s : Str} ;
|
||||||
Kind = {s : Number => Str} ;
|
Kind = {s : Number => Str} ;
|
||||||
|
|||||||
@@ -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 => "हैं"
|
|
||||||
} ;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -4,4 +4,4 @@
|
|||||||
|
|
||||||
concrete FoodsSwe of Foods = FoodsI with
|
concrete FoodsSwe of Foods = FoodsI with
|
||||||
(Syntax = SyntaxSwe),
|
(Syntax = SyntaxSwe),
|
||||||
(LexFoods = LexFoodsSwe) ;
|
(LexFoods = LexFoodsSwe) ** {flags language = sv_SE;} ;
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ lin
|
|||||||
in {
|
in {
|
||||||
s = \\_ =>
|
s = \\_ =>
|
||||||
quello (elision "quel" "quell'" "quello")
|
quello (elision "quel" "quell'" "quello")
|
||||||
(elision "quelli" "quegli" "quegli") ;
|
(elision "quei" "quegli" "quegli") ;
|
||||||
sp = quello "quello" "quelli" ;
|
sp = quello "quello" "quelli" ;
|
||||||
s2 = []
|
s2 = []
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -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 -> String -> Maybe PGF.Type -> Maybe PGF.Language -> Maybe PGF.Language -> JSValue
|
||||||
doTranslateGroup pgf input mcat mfrom mto =
|
doTranslateGroup pgf input mcat mfrom mto =
|
||||||
showJSON
|
showJSON
|
||||||
[toJSObject [("from", showJSON (PGF.showLanguage from)),
|
[toJSObject [("from", showJSON (langOnly (PGF.showLanguage from))),
|
||||||
("to", showJSON (PGF.showLanguage to)),
|
("to", showJSON (langOnly (PGF.showLanguage to))),
|
||||||
("linearizations",showJSON
|
("linearizations",showJSON
|
||||||
[toJSObject [("text", unlines output)]])
|
[toJSObject [("text", doBind alt)] | alt <- output])
|
||||||
]
|
]
|
||||||
|
|
|
|
||||||
(from,trees) <- parse' pgf input mcat mfrom,
|
(from,trees) <- parse' pgf input mcat mfrom,
|
||||||
@@ -140,6 +140,12 @@ doTranslateGroup pgf input mcat mfrom mto =
|
|||||||
start ls = [(l,[s]) | (l,s) <- ls]
|
start ls = [(l,[s]) | (l,s) <- ls]
|
||||||
more (l,s) =
|
more (l,s) =
|
||||||
Map.insertWith (\ [x] xs -> if elem x xs then xs else (x : xs)) 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
|
doParse :: PGF -> String -> Maybe PGF.Type -> Maybe PGF.Language -> JSValue
|
||||||
|
|||||||
Reference in New Issue
Block a user