summaryrefslogtreecommitdiff
path: root/src/GF/Devel/GrammarToGFCC.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-09-21 12:00:31 +0000
committeraarne <aarne@cs.chalmers.se>2007-09-21 12:00:31 +0000
commit0260265de0cf1e05c88e6475531b589d5302ebaf (patch)
treefeccef4ca57a277a9aa2cefbea5c514732cbdb3d /src/GF/Devel/GrammarToGFCC.hs
parent73ef8309abfb721c89171d8c2b9a122ec94b63f6 (diff)
fixed reading argvars from gfc in gf-to-gfcc
Diffstat (limited to 'src/GF/Devel/GrammarToGFCC.hs')
-rw-r--r--src/GF/Devel/GrammarToGFCC.hs5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/GF/Devel/GrammarToGFCC.hs b/src/GF/Devel/GrammarToGFCC.hs
index c8edd0647..0baa3bd6d 100644
--- a/src/GF/Devel/GrammarToGFCC.hs
+++ b/src/GF/Devel/GrammarToGFCC.hs
@@ -16,6 +16,7 @@ import GF.Data.Operations
import GF.Text.UTF8
import Data.List
+import Data.Char (isDigit)
import qualified Data.Map as Map
import Debug.Trace ----
@@ -79,6 +80,8 @@ mkCType t = case t of
mkTerm :: Term -> C.Term
mkTerm tr = case tr of
Vr (IA (_,i)) -> C.V i
+ Vr (IC s) | isDigit (last s) ->
+ C.V (read (reverse (takeWhile (/='_') (reverse s)))) ---- from gf parser of gfc
EInt i -> C.C $ fromInteger i
-- record parameter alias - created in gfc preprocessing
R [(LIdent "_", (_,i)), (LIdent "__", (_,t))] -> C.RP (mkTerm i) (mkTerm t)
@@ -292,6 +295,8 @@ term2term cgr env@(labels,untyps,typs) tr = case tr of
-- this goes recursively into tables (ignored) and records (accumulated)
getLab tr = case tr of
Vr (IA (cat, _)) -> return (identC cat,[])
+ Vr (IC s) -> return (identC cat,[]) where
+ cat = init (reverse (dropWhile (/='_') (reverse s))) ---- from gf parser
P p lab2 -> do
(cat,labs) <- getLab p
return (cat,labs++[lab2])