diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-09-21 12:00:31 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-09-21 12:00:31 +0000 |
| commit | 0260265de0cf1e05c88e6475531b589d5302ebaf (patch) | |
| tree | feccef4ca57a277a9aa2cefbea5c514732cbdb3d /src/GF/Devel/GrammarToGFCC.hs | |
| parent | 73ef8309abfb721c89171d8c2b9a122ec94b63f6 (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.hs | 5 |
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]) |
