forked from GitHub/gf-core
fixed bug with prawitz transform of course-of-values tables in Compute
This commit is contained in:
@@ -156,7 +156,9 @@ gfdoc:
|
|||||||
cp */Irreg???.gf doc/gfdoc
|
cp */Irreg???.gf doc/gfdoc
|
||||||
mv ../prelude/*.html doc/gfdoc
|
mv ../prelude/*.html doc/gfdoc
|
||||||
|
|
||||||
gf3:
|
gf3: gf3present gf3alltenses
|
||||||
|
|
||||||
|
gf3alltenses:
|
||||||
# $(GFNew) arabic/GrammarAra.gf
|
# $(GFNew) arabic/GrammarAra.gf
|
||||||
# $(GFNew) catalan/Catalan.gf
|
# $(GFNew) catalan/Catalan.gf
|
||||||
$(GFNew) danish/Danish.gf
|
$(GFNew) danish/Danish.gf
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud
|
|||||||
CPron ag an ap => <argPron ag an ap dative, ap,True> ;
|
CPron ag an ap => <argPron ag an ap dative, ap,True> ;
|
||||||
_ => <[],P2,False>
|
_ => <[],P2,False>
|
||||||
}
|
}
|
||||||
in case <paccp.p2, pdatp.p2> of {
|
in case <<paccp.p2, pdatp.p2> : Person * Person> of {
|
||||||
<P3,P3> => <"se" ++ paccp.p1, [],True> ;
|
<P3,P3> => <"se" ++ paccp.p1, [],True> ;
|
||||||
_ => <pdatp.p1 ++ paccp.p1, [],orB paccp.p3 pdatp.p3>
|
_ => <pdatp.p1 ++ paccp.p1, [],orB paccp.p3 pdatp.p3>
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ instance DiffSpa of DiffRomance = open CommonRomance, PhonoSpa, BeschSpa, Prelud
|
|||||||
_ => eux
|
_ => eux
|
||||||
} ;
|
} ;
|
||||||
in
|
in
|
||||||
\g,n,p -> case <g,n,p> of {
|
\g,n,p -> case <<g,n,p> : Gender * Number * Person> of {
|
||||||
<_,Sg,P1> => cases "me" "mí" ;
|
<_,Sg,P1> => cases "me" "mí" ;
|
||||||
<_,Sg,P2> => cases "te" "tí" ;
|
<_,Sg,P2> => cases "te" "tí" ;
|
||||||
<_,Pl,P1> => cases "nos" "nosotras" ; --- nosotros
|
<_,Pl,P1> => cases "nos" "nosotras" ; --- nosotros
|
||||||
|
|||||||
@@ -8,6 +8,6 @@
|
|||||||
|
|
||||||
instance ResSpa of ResRomance = DiffSpa ** open CommonRomance, Prelude in {
|
instance ResSpa of ResRomance = DiffSpa ** open CommonRomance, Prelude in {
|
||||||
|
|
||||||
flags optimize=noexpand ;
|
--- flags optimize=noexpand ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -391,10 +391,15 @@ term2term cgr env@(labels,untyps,typs) tr = case tr of
|
|||||||
--- this is mainly needed for parameter record projections
|
--- this is mainly needed for parameter record projections
|
||||||
---- was: errVal t $ Compute.computeConcreteRec cgr t
|
---- was: errVal t $ Compute.computeConcreteRec cgr t
|
||||||
comp t = case t of
|
comp t = case t of
|
||||||
S (V typ ts) v0 -> errVal t $ do
|
T (TComp typ) ts -> comp $ V typ (map (comp . snd) ts) ---- should
|
||||||
|
T (TTyped typ) ts -> comp $ V typ (map (comp . snd) ts) ---- should
|
||||||
|
V typ ts -> V typ (map comp ts)
|
||||||
|
S (V typ ts) v0 -> err error id $ do
|
||||||
let v = comp v0
|
let v = comp v0
|
||||||
vs <- Look.allParamValues cgr typ
|
vs <- Look.allParamValues cgr typ
|
||||||
return $ maybe t (comp . (ts !!)) $ lookup v (zip vs [0 .. length vs - 1])
|
return $ maybe t ---- (error (prt t)) -- should be safe after doVar though
|
||||||
|
(comp . (ts !!)) $ lookup v (zip vs [0 .. length vs - 1])
|
||||||
|
R r -> R [(l,(ty,comp t)) | (l,(ty,t)) <- r]
|
||||||
P (R r) l -> maybe t (comp . snd) $ lookup l r
|
P (R r) l -> maybe t (comp . snd) $ lookup l r
|
||||||
_ -> GM.composSafeOp comp t
|
_ -> GM.composSafeOp comp t
|
||||||
|
|
||||||
@@ -481,6 +486,6 @@ unlockTyp = filter notlock where
|
|||||||
_ -> True
|
_ -> True
|
||||||
|
|
||||||
prtTrace tr n =
|
prtTrace tr n =
|
||||||
trace ("-- INTERNAL COMPILER ERROR" +++ A.prt tr ++++ show tr ++++ show n) n
|
trace ("-- INTERNAL COMPILER ERROR" +++ A.prt tr ++++ show n) n
|
||||||
prTrace tr n = trace ("-- OBSERVE" +++ A.prt tr +++ show n +++ show tr) n
|
prTrace tr n = trace ("-- OBSERVE" +++ A.prt tr +++ show n +++ show tr) n
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ computeTermOpt rec gr = comp where
|
|||||||
(Alias _ _ d, _) -> comp g (App d a')
|
(Alias _ _ d, _) -> comp g (App d a')
|
||||||
|
|
||||||
(S (T i cs) e,_) -> prawitz g i (flip App a') cs e
|
(S (T i cs) e,_) -> prawitz g i (flip App a') cs e
|
||||||
|
(S (V i cs) e,_) -> prawitzV g i (flip App a') cs e
|
||||||
|
|
||||||
_ -> do
|
_ -> do
|
||||||
(t',b) <- appPredefined (App f' a')
|
(t',b) <- appPredefined (App f' a')
|
||||||
@@ -122,6 +123,7 @@ computeTermOpt rec gr = comp where
|
|||||||
Alias _ _ r -> comp g (P r l)
|
Alias _ _ r -> comp g (P r l)
|
||||||
|
|
||||||
S (T i cs) e -> prawitz g i (flip P l) cs e
|
S (T i cs) e -> prawitz g i (flip P l) cs e
|
||||||
|
S (V i cs) e -> prawitzV g i (flip P l) cs e
|
||||||
|
|
||||||
_ -> returnC $ P t' l
|
_ -> returnC $ P t' l
|
||||||
|
|
||||||
@@ -197,6 +199,7 @@ computeTermOpt rec gr = comp where
|
|||||||
Alias _ _ d -> comp g (S d v')
|
Alias _ _ d -> comp g (S d v')
|
||||||
|
|
||||||
S (T i cs) e -> prawitz g i (flip S v') cs e
|
S (T i cs) e -> prawitz g i (flip S v') cs e
|
||||||
|
S (V i cs) e -> prawitzV g i (flip S v') cs e
|
||||||
_ -> returnC $ S t' v'
|
_ -> returnC $ S t' v'
|
||||||
|
|
||||||
-- normalize away empty tokens
|
-- normalize away empty tokens
|
||||||
@@ -219,6 +222,8 @@ computeTermOpt rec gr = comp where
|
|||||||
|
|
||||||
(S (T i cs) e, s) -> prawitz g i (flip Glue s) cs e
|
(S (T i cs) e, s) -> prawitz g i (flip Glue s) cs e
|
||||||
(s, S (T i cs) e) -> prawitz g i (Glue s) cs e
|
(s, S (T i cs) e) -> prawitz g i (Glue s) cs e
|
||||||
|
(S (V i cs) e, s) -> prawitzV g i (flip Glue s) cs e
|
||||||
|
(s, S (V i cs) e) -> prawitzV g i (Glue s) cs e
|
||||||
(_,Empty) -> return x
|
(_,Empty) -> return x
|
||||||
(Empty,_) -> return y
|
(Empty,_) -> return y
|
||||||
(K a, K b) -> return $ K (a ++ b)
|
(K a, K b) -> return $ K (a ++ b)
|
||||||
@@ -373,6 +378,9 @@ computeTermOpt rec gr = comp where
|
|||||||
prawitz g i f cs e = do
|
prawitz g i f cs e = do
|
||||||
cs' <- mapM (compBranch g) [(p, f v) | (p,v) <- cs]
|
cs' <- mapM (compBranch g) [(p, f v) | (p,v) <- cs]
|
||||||
return $ S (T i cs') e
|
return $ S (T i cs') e
|
||||||
|
prawitzV g i f cs e = do
|
||||||
|
cs' <- mapM (comp g) [(f v) | v <- cs]
|
||||||
|
return $ S (V i cs') e
|
||||||
|
|
||||||
-- | argument variables cannot be glued
|
-- | argument variables cannot be glued
|
||||||
checkNoArgVars :: Term -> Err Term
|
checkNoArgVars :: Term -> Err Term
|
||||||
|
|||||||
Reference in New Issue
Block a user