summaryrefslogtreecommitdiff
path: root/src/runtime/haskell/PGF
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2013-10-30 12:53:36 +0000
committerkr.angelov <kr.angelov@gmail.com>2013-10-30 12:53:36 +0000
commit042243f08a321cd8ed5918ba94e83f22a8552adb (patch)
treee7c1e17cebe2d7d674f8df54ffda14a829e0ff21 /src/runtime/haskell/PGF
parent122c40bb3b4cc4ca077f00ab3b484ae9066fd2be (diff)
added the linref construction in GF. The PGF version number is now bumped
Diffstat (limited to 'src/runtime/haskell/PGF')
-rw-r--r--src/runtime/haskell/PGF/Binary.hs7
-rw-r--r--src/runtime/haskell/PGF/Data.hs1
-rw-r--r--src/runtime/haskell/PGF/Printer.hs6
3 files changed, 10 insertions, 4 deletions
diff --git a/src/runtime/haskell/PGF/Binary.hs b/src/runtime/haskell/PGF/Binary.hs
index e293da99c..bf8fe2824 100644
--- a/src/runtime/haskell/PGF/Binary.hs
+++ b/src/runtime/haskell/PGF/Binary.hs
@@ -14,7 +14,7 @@ import qualified Data.Set as Set
import Control.Monad
pgfMajorVersion, pgfMinorVersion :: Word16
-(pgfMajorVersion, pgfMinorVersion) = (1,0)
+(pgfMajorVersion, pgfMinorVersion) = (2,0)
instance Binary PGF where
put pgf = do putWord16be pgfMajorVersion
@@ -56,6 +56,7 @@ instance Binary Concr where
putArray2 (sequences cnc)
putArray (cncfuns cnc)
put (lindefs cnc)
+ put (linrefs cnc)
put (productions cnc)
put (cnccats cnc)
put (totalCats cnc)
@@ -64,11 +65,13 @@ instance Binary Concr where
sequences <- getArray2
cncfuns <- getArray
lindefs <- get
+ linrefs <- get
productions <- get
cnccats <- get
totalCats <- get
return (Concr{ cflags=cflags, printnames=printnames
- , sequences=sequences, cncfuns=cncfuns, lindefs=lindefs
+ , sequences=sequences, cncfuns=cncfuns
+ , lindefs=lindefs, linrefs=linrefs
, productions=productions
, pproductions = IntMap.empty
, lproductions = Map.empty
diff --git a/src/runtime/haskell/PGF/Data.hs b/src/runtime/haskell/PGF/Data.hs
index 06ace4565..19df9d0ed 100644
--- a/src/runtime/haskell/PGF/Data.hs
+++ b/src/runtime/haskell/PGF/Data.hs
@@ -41,6 +41,7 @@ data Concr = Concr {
printnames :: Map.Map CId String, -- printname of a cat or a fun
cncfuns :: Array FunId CncFun,
lindefs :: IntMap.IntMap [FunId],
+ linrefs :: IntMap.IntMap [FunId],
sequences :: Array SeqId Sequence,
productions :: IntMap.IntMap (Set.Set Production), -- the original productions loaded from the PGF file
pproductions :: IntMap.IntMap (Set.Set Production), -- productions needed for parsing
diff --git a/src/runtime/haskell/PGF/Printer.hs b/src/runtime/haskell/PGF/Printer.hs
index 9385e81c4..5d85255d0 100644
--- a/src/runtime/haskell/PGF/Printer.hs
+++ b/src/runtime/haskell/PGF/Printer.hs
@@ -47,7 +47,9 @@ ppCnc name cnc =
text "productions" $$
nest 2 (vcat [ppProduction (fcat,prod) | (fcat,set) <- IntMap.toList (productions cnc), prod <- Set.toList set]) $$
text "lindefs" $$
- nest 2 (vcat (map ppLinDef (IntMap.toList (lindefs cnc)))) $$
+ nest 2 (vcat (map ppFunList (IntMap.toList (lindefs cnc)))) $$
+ text "linrefs" $$
+ nest 2 (vcat (map ppFunList (IntMap.toList (linrefs cnc)))) $$
text "lin" $$
nest 2 (vcat (map ppCncFun (assocs (cncfuns cnc)))) $$
text "sequences" $$
@@ -73,7 +75,7 @@ ppProduction (fid,PConst _ _ ss) =
ppCncFun (funid,CncFun fun arr) =
ppFunId funid <+> text ":=" <+> parens (hcat (punctuate comma (map ppSeqId (elems arr)))) <+> brackets (ppCId fun)
-ppLinDef (fid,funids) =
+ppFunList (fid,funids) =
ppFId fid <+> text "->" <+> hcat (punctuate comma (map ppFunId funids))
ppSeq (seqid,seq) =