mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-04 08:42:50 -06:00
GF.Compile.Coding: cleaner code
Refine function codeTerm into codeTerm, codeLTerm and codeLTerms.
This commit is contained in:
@@ -21,14 +21,19 @@ codeSourceModule :: (String -> String) -> SourceModule -> SourceModule
|
|||||||
codeSourceModule co (id,mo) = (id,replaceJudgements mo (mapTree codj (jments mo)))
|
codeSourceModule co (id,mo) = (id,replaceJudgements mo (mapTree codj (jments mo)))
|
||||||
where
|
where
|
||||||
codj (c,info) = case info of
|
codj (c,info) = case info of
|
||||||
ResOper pty pt -> ResOper (fmap (codeTerm co) pty) (fmap (codeTerm co) pt)
|
ResOper pty pt -> ResOper (codeLTerms co pty) (codeLTerms co pt)
|
||||||
ResOverload es tyts -> ResOverload es [(codeTerm co ty,codeTerm co t) | (ty,t) <- tyts]
|
ResOverload es tyts -> ResOverload es [(codeLTerm co ty,codeLTerm co t) | (ty,t) <- tyts]
|
||||||
CncCat pty pt mpr -> CncCat pty (fmap (codeTerm co) pt) (fmap (codeTerm co) mpr)
|
CncCat pty pt mpr -> CncCat pty (codeLTerms co pt) (codeLTerms co mpr)
|
||||||
CncFun mty pt mpr -> CncFun mty (fmap (codeTerm co) pt) (fmap (codeTerm co) mpr)
|
CncFun mty pt mpr -> CncFun mty (codeLTerms co pt) (codeLTerms co mpr)
|
||||||
_ -> info
|
_ -> info
|
||||||
|
|
||||||
codeTerm :: (String -> String) -> L Term -> L Term
|
codeLTerms co = fmap (codeLTerm co)
|
||||||
codeTerm co (L loc t) = L loc (codt t)
|
|
||||||
|
codeLTerm :: (String -> String) -> L Term -> L Term
|
||||||
|
codeLTerm = fmap . codeTerm
|
||||||
|
|
||||||
|
codeTerm :: (String -> String) -> Term -> Term
|
||||||
|
codeTerm co = codt
|
||||||
where
|
where
|
||||||
codt t = case t of
|
codt t = case t of
|
||||||
K s -> K (co s)
|
K s -> K (co s)
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ execute1 opts gfenv0 s0 =
|
|||||||
|
|
||||||
case runP pExp (encodeUnicode utf8 s) of
|
case runP pExp (encodeUnicode utf8 s) of
|
||||||
Left (_,msg) -> putStrLn msg
|
Left (_,msg) -> putStrLn msg
|
||||||
Right t -> case checkComputeTerm sgr (unLoc (codeTerm (decodeUnicode utf8 . BS.pack) (L (0,0) t))) of
|
Right t -> case checkComputeTerm sgr (codeTerm (decodeUnicode utf8 . BS.pack) t) of
|
||||||
Ok x -> putStrLn $ showTerm sgr style q x
|
Ok x -> putStrLn $ showTerm sgr style q x
|
||||||
Bad s -> putStrLn $ s
|
Bad s -> putStrLn $ s
|
||||||
continue gfenv
|
continue gfenv
|
||||||
|
|||||||
Reference in New Issue
Block a user