diff options
Diffstat (limited to 'src/runtime/haskell/PGF/Macros.hs')
| -rw-r--r-- | src/runtime/haskell/PGF/Macros.hs | 9 |
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] |
