summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrasimir Angelov <kr.angelov@gmail.com>2017-08-29 18:44:50 +0200
committerKrasimir Angelov <kr.angelov@gmail.com>2017-08-29 18:44:50 +0200
commitb7b7a7c91cc861440dd541b5f4e9eb5b409bcce0 (patch)
tree352d48f11bea696fe257839f8f7dcf8e6b386fce
parent62e5852669fc351d41d1c895822fd7e2cbddf803 (diff)
the embedded grammars now work with both the pure Haskell and the Haskell binding API
-rw-r--r--src/compiler/GF/Compile/PGFtoHaskell.hs9
-rw-r--r--src/runtime/haskell-bind/PGF2.hsc1
-rw-r--r--src/runtime/haskell-bind/PGF2/Expr.hsc3
-rw-r--r--src/runtime/haskell/PGF.hs1
-rw-r--r--src/runtime/haskell/PGF/Expr.hs4
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