summaryrefslogtreecommitdiff
path: root/src/runtime/haskell/PGF/Macros.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/haskell/PGF/Macros.hs')
-rw-r--r--src/runtime/haskell/PGF/Macros.hs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/runtime/haskell/PGF/Macros.hs b/src/runtime/haskell/PGF/Macros.hs
index d7f242c45..147894cc8 100644
--- a/src/runtime/haskell/PGF/Macros.hs
+++ b/src/runtime/haskell/PGF/Macros.hs
@@ -52,6 +52,13 @@ lookConcr :: PGF -> CId -> Concr
lookConcr pgf cnc =
lookMap (error $ "Missing concrete syntax: " ++ showCId cnc) cnc $ concretes pgf
+-- use if name fails, use abstract + name; so e.g. "Eng" becomes "DemoEng"
+lookConcrComplete :: PGF -> CId -> Concr
+lookConcrComplete pgf cnc =
+ case Map.lookup cnc (concretes pgf) of
+ Just c -> c
+ _ -> lookConcr pgf (mkCId (showCId (absname pgf) ++ showCId cnc))
+
lookConcrFlag :: PGF -> CId -> CId -> Maybe Literal
lookConcrFlag pgf lang f = Map.lookup f $ cflags $ lookConcr pgf lang
@@ -196,4 +203,4 @@ updateProductionIndices pgf = pgf{ concretes = fmap updateConcrete (concretes pg
getFunctions (PApply funid args) = let CncFun fun _ = cncfuns pinfo Array.! funid in [fun]
getFunctions (PCoerce fid) = case IntMap.lookup fid productions of
Nothing -> []
- Just prods -> [fun | prod <- Set.toList prods, fun <- getFunctions prod] \ No newline at end of file
+ Just prods -> [fun | prod <- Set.toList prods, fun <- getFunctions prod]