From b7b7a7c91cc861440dd541b5f4e9eb5b409bcce0 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Tue, 29 Aug 2017 18:44:50 +0200 Subject: [PATCH] the embedded grammars now work with both the pure Haskell and the Haskell binding API --- src/compiler/GF/Compile/PGFtoHaskell.hs | 9 ++++----- src/runtime/haskell-bind/PGF2.hsc | 1 + src/runtime/haskell-bind/PGF2/Expr.hsc | 3 +++ src/runtime/haskell/PGF.hs | 1 + src/runtime/haskell/PGF/Expr.hs | 4 ++++ 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/compiler/GF/Compile/PGFtoHaskell.hs b/src/compiler/GF/Compile/PGFtoHaskell.hs index 24acc289a..f4e3a0297 100644 --- a/src/compiler/GF/Compile/PGFtoHaskell.hs +++ b/src/compiler/GF/Compile/PGFtoHaskell.hs @@ -56,21 +56,20 @@ haskPreamble gadt name = "import Data.Monoid" ] else []) ++ [ - "import PGF hiding (Tree)", - "import qualified PGF", + "import PGF", "----------------------------------------------------", "-- automatic translation from GF to Haskell", "----------------------------------------------------", "", "class Gf a where", - " gf :: a -> PGF.Tree", - " fg :: PGF.Tree -> a", + " gf :: a -> Expr", + " fg :: Expr -> a", "", predefInst gadt "GString" "String" "unStr" "mkStr", "", predefInst gadt "GInt" "Int" "unInt" "mkInt", "", - predefInst gadt "GFloat" "Double" "unDouble" "mkDouble", + predefInst gadt "GFloat" "Double" "unFloat" "mkFloat", "", "----------------------------------------------------", "-- below this line machine-generated", diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc index 1d9d82f90..40d485b9a 100644 --- a/src/runtime/haskell-bind/PGF2.hsc +++ b/src/runtime/haskell-bind/PGF2.hsc @@ -38,6 +38,7 @@ module PGF2 (-- * PGF mkInt,unInt, mkFloat,unFloat, mkMeta,unMeta, + mkCId, -- ** Types Type, Hypo, BindType(..), startCat, readType, showType, diff --git a/src/runtime/haskell-bind/PGF2/Expr.hsc b/src/runtime/haskell-bind/PGF2/Expr.hsc index 5b67ba097..af3afeef5 100644 --- a/src/runtime/haskell-bind/PGF2/Expr.hsc +++ b/src/runtime/haskell-bind/PGF2/Expr.hsc @@ -176,6 +176,9 @@ unMeta (Expr expr touch) = touch return (Just (fromIntegral (id :: CInt))) +-- | this functions is only for backward compatibility with the old Haskell runtime +mkCId x = x + -- | parses a 'String' as an expression readExpr :: String -> Maybe Expr readExpr str = diff --git a/src/runtime/haskell/PGF.hs b/src/runtime/haskell/PGF.hs index 8eb215f9d..42519fb63 100644 --- a/src/runtime/haskell/PGF.hs +++ b/src/runtime/haskell/PGF.hs @@ -51,6 +51,7 @@ module PGF( mkStr, unStr, mkInt, unInt, mkDouble, unDouble, + mkFloat, unFloat, mkMeta, unMeta, -- extra pExpr, diff --git a/src/runtime/haskell/PGF/Expr.hs b/src/runtime/haskell/PGF/Expr.hs index 27b0623ea..331a69d90 100644 --- a/src/runtime/haskell/PGF/Expr.hs +++ b/src/runtime/haskell/PGF/Expr.hs @@ -6,6 +6,7 @@ module PGF.Expr(Tree, BindType(..), Expr(..), Literal(..), Patt(..), Equation(.. mkStr, unStr, mkInt, unInt, mkDouble, unDouble, + mkFloat, unFloat, mkMeta, unMeta, normalForm, @@ -154,6 +155,9 @@ unDouble (ETyped e ty) = unDouble e unDouble (EImplArg e) = unDouble e unDouble _ = Nothing +mkFloat = mkDouble +unFloat = unDouble + -- | Constructs an expression which is meta variable mkMeta :: Int -> Expr mkMeta i = EMeta i