From 0e2f34b269f0e00ba108aac3e08ef73a7ea94fe3 Mon Sep 17 00:00:00 2001 From: aarne Date: Sun, 4 Apr 2010 20:46:36 +0000 Subject: [PATCH] in the shell, permit 3-letter lang codes as concrete syntax names --- src/compiler/GF/Command/Commands.hs | 7 ++++++- src/runtime/haskell/PGF/Macros.hs | 9 ++++++++- src/runtime/haskell/PGF/Parse.hs | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/compiler/GF/Command/Commands.hs b/src/compiler/GF/Command/Commands.hs index 6723c4b8f..51f1c1426 100644 --- a/src/compiler/GF/Command/Commands.hs +++ b/src/compiler/GF/Command/Commands.hs @@ -924,7 +924,12 @@ allCommands cod env@(pgf, mos) = Map.fromList [ optLangs opts = case valStrOpts "lang" "" opts of "" -> languages pgf - lang -> map mkCId (chunks ',' lang) + lang -> map completeLang (chunks ',' lang) + completeLang la = let cla = (mkCId la) in + if elem cla (languages pgf) + then cla + else (mkCId (showCId (abstractName pgf) ++ la)) + optLang opts = head $ optLangs opts ++ [wildCId] optOpenTypes opts = case valStrOpts "openclass" "" opts of 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] diff --git a/src/runtime/haskell/PGF/Parse.hs b/src/runtime/haskell/PGF/Parse.hs index 61035bd92..1efedd7c2 100644 --- a/src/runtime/haskell/PGF/Parse.hs +++ b/src/runtime/haskell/PGF/Parse.hs @@ -65,7 +65,7 @@ initState pgf lang (DTyp _ start _) = return (Active 0 0 funid seqid args (AK cat lbl)) Nothing -> mzero - cnc = lookConcr pgf lang + cnc = lookConcrComplete pgf lang in PState pgf cnc