summaryrefslogtreecommitdiff
path: root/src/server/PGFService.hs
diff options
context:
space:
mode:
authorkrangelov <kr.angelov@gmail.com>2019-02-26 15:16:36 +0100
committerkrangelov <kr.angelov@gmail.com>2019-02-26 15:16:36 +0100
commit2fdfef13d8cdcfeda0b5fba84ee53b7750879c8f (patch)
tree9a54849cbbd55345b4dceb9eee38e5e096834608 /src/server/PGFService.hs
parenta928e4657e396cde8e11a6e33071927246eb2f7a (diff)
added command c-bracketedLinearize
Diffstat (limited to 'src/server/PGFService.hs')
-rw-r--r--src/server/PGFService.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs
index 50d49d0f9..f9b309079 100644
--- a/src/server/PGFService.hs
+++ b/src/server/PGFService.hs
@@ -153,6 +153,8 @@ cpgfMain qsem command (t,(pgf,pc)) =
"c-parse" -> withQSem qsem $
out t=<< join (parse # input % start % limit % treeopts)
"c-linearize" -> out t=<< lin # tree % to
+ "c-bracketedLinearize"
+ -> out t=<< bracketedLin # tree % to
"c-linearizeAll"-> out t=<< linAll # tree % to
"c-translate" -> withQSem qsem $
out t=<<join(trans # input % to % start % limit%treeopts)
@@ -224,6 +226,10 @@ cpgfMain qsem command (t,(pgf,pc)) =
lin' tree (tos,unlex) =
[makeObj ["to".=to,"text".=unlex (C.linearize c tree)]|(to,c)<-tos]
+ bracketedLin tree to = showJSON (lin' tree to)
+ bracketedLin' tree (tos,unlex) =
+ [makeObj ["to".=to,"brackets".=showJSON (C.bracketedLinearize c tree)]|(to,c)<-tos]
+
trans input@((from,_),_) to start mlimit (trie,jsontree) =
do parses <- parse' start mlimit input
return $
@@ -978,6 +984,15 @@ instance JSON PGF.BracketedString where
makeObj ["cat".=cat, "fid".=fid, "index".=index, "fun".=fun, "children".=bs]
showJSON (PGF.Leaf s) = makeObj ["token".=s]
+#if C_RUNTIME
+instance JSON C.BracketedString where
+ readJSON x = return (C.Leaf "")
+ showJSON (C.Bracket cat fid index fun bs) =
+ makeObj ["cat".=cat, "fid".=fid, "index".=index, "fun".=fun, "children".=bs]
+ showJSON C.BIND = makeObj ["bind".=True]
+ showJSON (C.Leaf s) = makeObj ["token".=s]
+#endif
+
-- * PGF utilities
{-
cat :: PGF -> Maybe PGF.Type -> PGF.Type