diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc index 39a8b29f1..34427f9a5 100644 --- a/src/runtime/haskell-bind/PGF2.hsc +++ b/src/runtime/haskell-bind/PGF2.hsc @@ -515,7 +515,7 @@ nerc pgf (lang,concr) lin_idx sentence offset = expr = mkApp "SymbPN" [mkApp "MkSymb" [mkStr name]] end_offset = length sentence-length rest name = trimRight (concat capwords) - ls = [((l,getFunctionType pgf l),p)|(l,_,p)<-lookupMorpho concr name] + ls = [((l,functionCat l),p)|(l,_,p)<-lookupMorpho concr name] ((lemma,cat),_) = maximumBy (compare `on` snd) ls _ -> Nothing where @@ -526,8 +526,7 @@ nerc pgf (lang,concr) lin_idx sentence offset = Just (y,xs') -> (y:ys,xs'') where (ys,xs'') = consume munch xs' - getFunctionType :: PGF -> String -> Cat - getFunctionType = undefined + functionCat f = case functionType pgf f of DTyp _ cat _ -> cat -- | Callback to parse arbitrary words as chunks (from -- ../java/org/grammaticalframework/pgf/UnknownLiteralCallback.java) @@ -540,6 +539,9 @@ chunk _ (_,concr) lin_idx sentence offset = expr = mkApp "MkSymb" [mkStr (trimRight word)] _ -> Nothing + +-- More helper functions + trimRight = reverse . dropWhile isSpace . reverse capitalized = capitalized' isUpper diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs index d610df45d..b2fd4fc89 100644 --- a/src/server/PGFService.hs +++ b/src/server/PGFService.hs @@ -155,8 +155,8 @@ cpgfMain command (t,(pgf,pc)) = return $ maybe id take mlimit . drop start # cparse where - cparse = C.parse concr cat input - --cparse = C.parseWithHeuristics concr cat input (-1) callbacks + --cparse = C.parse concr cat input + cparse = C.parseWithHeuristics concr cat input (-1) callbacks callbacks = maybe [] cb $ lookup (C.abstractName pgf) C.literalCallbacks cb fs = [(cat,f pgf (from,concr))|(cat,f)<-fs] {-