forked from GitHub/gf-core
"Committed_by_peb"
This commit is contained in:
@@ -50,9 +50,11 @@ prCFFun' profs (CFFun (t, p)) = prt_ t ++ pp p where
|
||||
prCFCat :: CFCat -> String
|
||||
prCFCat (CFCat (c,l)) = prt_ c ++ "-" ++ prt_ l ----
|
||||
|
||||
prCFItem :: CFItem -> String
|
||||
prCFItem (CFNonterm c) = prCFCat c
|
||||
prCFItem (CFTerm a) = prRegExp a
|
||||
|
||||
prRegExp :: RegExp -> String
|
||||
prRegExp (RegAlts tt) = case tt of
|
||||
[t] -> prQuotedString t
|
||||
_ -> prParenth (prTList " | " (map prQuotedString tt))
|
||||
|
||||
@@ -58,6 +58,7 @@ canon2grammar (Gr modules) = M.MGrammar $ map mod2info modules where
|
||||
grammar2canon :: CanonGrammar -> Canon
|
||||
grammar2canon (M.MGrammar modules) = Gr $ map info2mod modules
|
||||
|
||||
info2mod :: (Ident, M.ModInfo Ident Flag Info) -> Module
|
||||
info2mod m = case m of
|
||||
(a, M.ModMod (M.Module mt _ flags me os defs)) ->
|
||||
let defs' = map info2def $ tree2list defs
|
||||
@@ -93,6 +94,7 @@ trCont cont = [(x,trExp t) | Decl x t <- cont]
|
||||
|
||||
trFs = map trQIdent
|
||||
|
||||
trExp :: Exp -> A.Term
|
||||
trExp t = case t of
|
||||
EProd x a b -> A.Prod x (trExp a) (trExp b)
|
||||
EAbs x b -> A.Abs x (trExp b)
|
||||
@@ -136,6 +138,7 @@ rtCont cont = [Decl (rtIdent x) (rtExp t) | (x,t) <- cont]
|
||||
|
||||
rtFs = map rtQIdent
|
||||
|
||||
rtExp :: A.Term -> Exp
|
||||
rtExp t = case t of
|
||||
A.Prod x a b -> EProd (rtIdent x) (rtExp a) (rtExp b)
|
||||
A.Abs x b -> EAbs (rtIdent x) (rtExp b)
|
||||
@@ -162,6 +165,7 @@ rtExp t = case t of
|
||||
_ -> error $ "MkGFC.rt not defined for" +++ show p
|
||||
|
||||
|
||||
rtQIdent :: (Ident, Ident) -> CIdent
|
||||
rtQIdent (m,c) = CIQ (rtIdent m) (rtIdent c)
|
||||
rtIdent x
|
||||
| isWildIdent x = identC "h_" --- needed in declarations
|
||||
|
||||
@@ -102,6 +102,7 @@ isZeroTok t = case t of
|
||||
strTok :: Ss -> [(Ss,[String])] -> Str
|
||||
strTok ds vs = Str [TN ds vs]
|
||||
|
||||
prStr :: Str -> String
|
||||
prStr = prQuotedString . sstr
|
||||
|
||||
plusStr :: Str -> Str -> Str
|
||||
|
||||
@@ -30,6 +30,8 @@ newtype TrieT a b = TrieT ([(a,TrieT a b)],[b])
|
||||
newtype Trie a b = Trie (Map a (Trie a b), [b])
|
||||
|
||||
emptyTrieT = TrieT ([],[])
|
||||
|
||||
emptyTrie :: Trie a b
|
||||
emptyTrie = Trie (empty,[])
|
||||
|
||||
optimize :: (Ord a,Eq b) => TrieT a b -> Trie a b
|
||||
|
||||
@@ -161,12 +161,19 @@ needCompile opts headers sfiles0 = paths $ res $ mark $ iter changed where
|
||||
CSRead -> gfcFile
|
||||
CSRes -> gfrFile
|
||||
|
||||
isGFC :: FilePath -> Bool
|
||||
isGFC = (== "gfc") . fileSuffix
|
||||
|
||||
gfcFile :: FilePath -> FilePath
|
||||
gfcFile = suffixFile "gfc"
|
||||
|
||||
gfrFile :: FilePath -> FilePath
|
||||
gfrFile = suffixFile "gfr"
|
||||
|
||||
gfFile :: FilePath -> FilePath
|
||||
gfFile = suffixFile "gf"
|
||||
|
||||
resModName :: ModName -> ModName
|
||||
resModName = ('#':)
|
||||
|
||||
-- to get imports without parsing the whole files
|
||||
@@ -306,6 +313,7 @@ isOldFile f = do
|
||||
|
||||
|
||||
-- old GF tolerated newlines in quotes. No more supported!
|
||||
fixNewlines :: String -> String
|
||||
fixNewlines s = case s of
|
||||
'"':cs -> '"':mk cs
|
||||
c :cs -> c:fixNewlines cs
|
||||
|
||||
@@ -31,6 +31,7 @@ import ExtraDiacritics (mkExtraDiacritics)
|
||||
|
||||
import Char
|
||||
|
||||
mkUnicode :: String -> String
|
||||
mkUnicode s = case s of
|
||||
'/':'/':cs -> treat [] mkGreek unic ++ mkUnicode rest
|
||||
'/':'+':cs -> mkHebrew unic ++ mkUnicode rest
|
||||
|
||||
Reference in New Issue
Block a user