1
0
forked from GitHub/gf-core

updated gfcc to new gfcc, now with parsing

This commit is contained in:
aarne
2007-10-05 13:01:05 +00:00
parent 122546b9d6
commit 074ef6e09f
3 changed files with 15 additions and 19 deletions

View File

@@ -24,8 +24,8 @@ import GF.GFCC.ParGFCC
import GF.GFCC.ErrM import GF.GFCC.ErrM
----import GF.Parsing.FCFG import GF.Parsing.FCFG
----import GF.Conversion.SimpleToFCFG (convertGrammar,FCat(..)) import GF.Conversion.SimpleToFCFG (convertGrammar,FCat(..))
--import GF.Data.Operations --import GF.Data.Operations
--import GF.Infra.UseIO --import GF.Infra.UseIO
@@ -42,8 +42,7 @@ import System.Directory (doesFileExist)
-- Interface -- Interface
--------------------------------------------------- ---------------------------------------------------
----data MultiGrammar = MultiGrammar {gfcc :: GFCC, parsers :: [(Language,FCFPInfo)]} data MultiGrammar = MultiGrammar {gfcc :: GFCC, parsers :: [(Language,FCFPInfo)]}
data MultiGrammar = MultiGrammar {gfcc :: GFCC, parsers :: [(Language,())]}
type Language = String type Language = String
type Category = String type Category = String
type Tree = Exp type Tree = Exp
@@ -76,22 +75,20 @@ startCat :: MultiGrammar -> Category
file2grammar f = do file2grammar f = do
gfcc <- file2gfcc f gfcc <- file2gfcc f
---- let fcfgs = convertGrammar gfcc let fcfgs = convertGrammar gfcc
---- return (MultiGrammar gfcc [(lang, buildFCFPInfo fcfg) | (CId lang,fcfg) <- fcfgs]) return (MultiGrammar gfcc [(lang, buildFCFPInfo fcfg) | (CId lang,fcfg) <- fcfgs])
return (MultiGrammar gfcc [])
file2gfcc f = file2gfcc f =
readFileIf f >>= err (error) (return . mkGFCC) . pGrammar . myLexer readFileIf f >>= err (error) (return . mkGFCC) . pGrammar . myLexer
linearize mgr lang = GF.GFCC.Linearize.linearize (gfcc mgr) (CId lang) linearize mgr lang = GF.GFCC.Linearize.linearize (gfcc mgr) (CId lang)
parse mgr lang cat s = error "no parser" parse mgr lang cat s =
----parse mgr lang cat s = case lookup lang (parsers mgr) of
---- case lookup lang (parsers mgr) of Nothing -> error "no parser"
---- Nothing -> error "no parser" Just pinfo -> case parseFCF "bottomup" pinfo (CId cat) (words s) of
---- Just pinfo -> case parseFCF "bottomup" pinfo (CId cat) (words s) of Ok x -> x
---- Ok x -> x Bad s -> error s
---- Bad s -> error s
linearizeAll mgr = map snd . linearizeAllLang mgr linearizeAll mgr = map snd . linearizeAllLang mgr
linearizeAllLang mgr t = linearizeAllLang mgr t =

View File

@@ -20,6 +20,7 @@ realize trm = case trm of
KP s _ -> unwords s ---- prefix choice TODO KP s _ -> unwords s ---- prefix choice TODO
W s t -> s ++ realize t W s t -> s ++ realize t
FV ts -> realize (ts !! 0) ---- other variants TODO FV ts -> realize (ts !! 0) ---- other variants TODO
RP _ r -> realize r ---- DEPREC
TM -> "?" TM -> "?"
_ -> "ERROR " ++ show trm ---- debug _ -> "ERROR " ++ show trm ---- debug
@@ -40,6 +41,7 @@ compute :: GFCC -> CId -> [Term] -> Term -> Term
compute mcfg lang args = comp where compute mcfg lang args = comp where
comp trm = case trm of comp trm = case trm of
P r p -> proj (comp r) (comp p) P r p -> proj (comp r) (comp p)
RP i t -> RP (comp i) (comp t) ---- DEPREC
W s t -> W s (comp t) W s t -> W s (comp t)
R ts -> R $ lmap comp ts R ts -> R $ lmap comp ts
V i -> idx args i -- already computed V i -> idx args i -- already computed
@@ -67,11 +69,13 @@ compute mcfg lang args = comp where
getIndex t = case t of getIndex t = case t of
C i -> i C i -> i
RP p _ -> getIndex p ---- DEPREC
TM -> 0 -- default value for parameter TM -> 0 -- default value for parameter
_ -> error ("ERROR in grammar compiler: index from " ++ show t) 0 _ -> error ("ERROR in grammar compiler: index from " ++ show t) 0
getField t i = case t of getField t i = case t of
R rs -> idx rs i R rs -> idx rs i
RP _ r -> getField r i ---- DEPREC
TM -> TM TM -> TM
_ -> error ("ERROR in grammar compiler: field from " ++ show t) t _ -> error ("ERROR in grammar compiler: field from " ++ show t) t

View File

@@ -199,11 +199,6 @@ gfc:
mv gfc ../bin/ mv gfc ../bin/
gfcc: gfcc:
$(GHMAKE) $(GHCOPTFLAGS) -o gfcc GF/Canon/GFCC/Shell.hs
strip gfcc
mv gfcc ../bin/
newgfcc:
$(GHMAKE) $(GHCOPTFLAGS) -o gfcc GF/Devel/Shell.hs $(GHMAKE) $(GHCOPTFLAGS) -o gfcc GF/Devel/Shell.hs
strip gfcc strip gfcc
mv gfcc ../bin/ mv gfcc ../bin/