mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-24 03:52:50 -06:00
Report errors in at command.
This commit is contained in:
@@ -372,17 +372,18 @@ wrapByFun opts gr f t =
|
|||||||
g = grammar gr
|
g = grammar gr
|
||||||
|
|
||||||
applyTransfer :: Options -> GFGrammar -> [(Ident,T.Env)] ->
|
applyTransfer :: Options -> GFGrammar -> [(Ident,T.Env)] ->
|
||||||
(Maybe Ident,Ident) -> Tree -> Tree
|
(Maybe Ident,Ident) -> Tree -> Err [Tree]
|
||||||
applyTransfer opts gr trs (mm,f) t =
|
applyTransfer opts gr trs (mm,f) t = mapM (annotate g) ts'
|
||||||
err (const t) id $ annotate g t'
|
|
||||||
where
|
where
|
||||||
t' = qualifTerm (absId gr) $ trans tr f $ tree2exp t
|
ts' = map (qualifTerm (absId gr)) $ trans tr f $ tree2exp t
|
||||||
g = grammar gr
|
g = grammar gr
|
||||||
tr = case mm of
|
tr = case mm of
|
||||||
Just m -> maybe empty id $ lookup m trs
|
Just m -> maybe empty id $ lookup m trs
|
||||||
_ -> ifNull empty (snd . head) trs
|
_ -> ifNull empty (snd . head) trs
|
||||||
|
-- FIXME: if the returned value is a list,
|
||||||
trans tr f = core2exp . T.evaluateExp tr . exp2core f
|
-- return a list of trees
|
||||||
|
trans :: T.Env -> Ident -> Exp -> [Exp]
|
||||||
|
trans tr f = (:[]) . core2exp . T.evaluateExp tr . exp2core f
|
||||||
empty = T.builtin
|
empty = T.builtin
|
||||||
|
|
||||||
{-
|
{-
|
||||||
|
|||||||
@@ -298,10 +298,10 @@ execC co@(comm, opts0) sa@(sh@(st,(h,_,_,_)),a) = checkOptions st co >> case com
|
|||||||
g3 = return () ---- system "rm -f grphtmp.*"
|
g3 = return () ---- system "rm -f grphtmp.*"
|
||||||
justOutput opts (g0 >> g1 >> g2 >> g3 >> return ()) sa
|
justOutput opts (g0 >> g1 >> g2 >> g3 >> return ()) sa
|
||||||
|
|
||||||
CPutTerm -> changeArg (opTT2CommandArg (optTermCommand opts gro) . s2t) sa
|
CPutTerm -> changeArg (opTT2CommandArg (return . optTermCommand opts gro) . s2t) sa
|
||||||
|
|
||||||
CWrapTerm f -> changeArg (opTT2CommandArg (return . wrapByFun opts gro f) . s2t) sa
|
CWrapTerm f -> changeArg (opTT2CommandArg (return . return . wrapByFun opts gro f) . s2t) sa
|
||||||
CApplyTransfer f -> changeArg (opTT2CommandArg (return . applyTransfer opts gro transfs f) . s2t) sa
|
CApplyTransfer f -> changeArg (opTT2CommandArg (applyTransfer opts gro transfs f) . s2t) sa
|
||||||
CMorphoAnalyse -> changeArg (AString . morphoAnalyse opts gro . prCommandArg) sa
|
CMorphoAnalyse -> changeArg (AString . morphoAnalyse opts gro . prCommandArg) sa
|
||||||
CTestTokenizer -> changeArg (AString . optTokenizer opts gro . prCommandArg) sa
|
CTestTokenizer -> changeArg (AString . optTokenizer opts gro . prCommandArg) sa
|
||||||
|
|
||||||
@@ -498,7 +498,7 @@ opTS2CommandArg f (ATrms ts) = AString $ unlines $ map f ts
|
|||||||
opTS2CommandArg _ (AError s) = AError ("expected term, but got error:" ++++ s)
|
opTS2CommandArg _ (AError s) = AError ("expected term, but got error:" ++++ s)
|
||||||
opTS2CommandArg _ a = AError ("expected term, but got:" ++++ prCommandArg a)
|
opTS2CommandArg _ a = AError ("expected term, but got:" ++++ prCommandArg a)
|
||||||
|
|
||||||
opTT2CommandArg :: (Tree -> [Tree]) -> CommandArg -> CommandArg
|
opTT2CommandArg :: (Tree -> Err [Tree]) -> CommandArg -> CommandArg
|
||||||
opTT2CommandArg f (ATrms ts) = ATrms $ concat $ map f ts
|
opTT2CommandArg f (ATrms ts) = err AError (ATrms . concat) $ mapM f ts
|
||||||
opTT2CommandArg _ (AError s) = AError ("expected term, but got error:" ++++ s)
|
opTT2CommandArg _ (AError s) = AError ("expected term, but got error:" ++++ s)
|
||||||
opTT2CommandArg _ a = AError ("expected term, but got:" ++++ prCommandArg a)
|
opTT2CommandArg _ a = AError ("expected term, but got:" ++++ prCommandArg a)
|
||||||
|
|||||||
@@ -17,3 +17,5 @@ wideSnake _ x = case x of
|
|||||||
in if isSnake CN y' then Thick y' else Wide y'
|
in if isSnake CN y' then Thick y' else Wide y'
|
||||||
_ -> composOp ? ? compos_Tree ? wideSnake x
|
_ -> composOp ? ? compos_Tree ? wideSnake x
|
||||||
|
|
||||||
|
wideSnakeNP : Tree NP -> Tree NP
|
||||||
|
wideSnakeNP = wideSnake NP
|
||||||
|
|||||||
Reference in New Issue
Block a user