1
0
forked from GitHub/gf-core

removed dep. on GFCCRaw

This commit is contained in:
aarne
2007-12-14 09:25:18 +00:00
parent de0fe5c10a
commit 61a9bdbe34
25 changed files with 41 additions and 125 deletions

View File

@@ -19,7 +19,7 @@ import GF.GFCC.Linearize
import GF.GFCC.Generate
import GF.GFCC.Macros
import GF.GFCC.DataGFCC
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import GF.GFCC.Raw.ConvertGFCC
import GF.GFCC.Raw.ParGFCCRaw
import GF.Command.PPrTree

14
src/GF/GFCC/CId.hs Normal file
View File

@@ -0,0 +1,14 @@
module GF.GFCC.CId (
module GF.GFCC.Raw.AbsGFCCRaw,
prCId,
cId
) where
import GF.GFCC.Raw.AbsGFCCRaw (CId(CId))
prCId :: CId -> String
prCId (CId s) = s
cId :: String -> CId
cId = CId

View File

@@ -1,6 +1,6 @@
module GF.GFCC.CheckGFCC (checkGFCC, checkGFCCio, checkGFCCmaybe) where
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import GF.GFCC.Macros
import GF.GFCC.DataGFCC
import GF.GFCC.ErrM

View File

@@ -1,6 +1,6 @@
module GF.GFCC.DataGFCC where
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import GF.Infra.CompactPrint
import GF.Text.UTF8

View File

@@ -2,7 +2,7 @@ module GF.GFCC.Generate where
import GF.GFCC.Macros
import GF.GFCC.DataGFCC
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import qualified Data.Map as M
import System.Random

View File

@@ -2,7 +2,7 @@ module GF.GFCC.Linearize where
import GF.GFCC.Macros
import GF.GFCC.DataGFCC
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import Data.Map
import Data.List

View File

@@ -1,6 +1,6 @@
module GF.GFCC.Macros where
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import GF.GFCC.DataGFCC
----import GF.GFCC.PrintGFCC
import Data.Map

View File

@@ -1,6 +1,6 @@
module GF.GFCC.OptimizeGFCC where
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
import GF.GFCC.DataGFCC
import GF.Data.Operations

View File

@@ -59,7 +59,7 @@ toGFCC (Grm [
toType :: RExp -> Type
toType e = case e of
App cat [App (CId "hypo") hypos, App (CId "arg") exps] ->
App cat [App (CId "H") hypos, App (CId "X") exps] ->
DTyp (lmap toHypo hypos) cat (lmap toExp exps)
_ -> error $ "type " ++ show e
@@ -70,7 +70,7 @@ toHypo e = case e of
toExp :: RExp -> Exp
toExp e = case e of
App fun [App (CId "abs") xs, App (CId "arg") exps] ->
App fun [App (CId "B") xs, App (CId "X") exps] ->
DTr [x | AId x <- xs] (AC fun) (lmap toExp exps)
App (CId "Eq") _ -> EEq [] ----
AMet -> DTr [] (AM 0) []
@@ -125,8 +125,8 @@ fromType :: Type -> RExp
fromType e = case e of
DTyp hypos cat exps ->
App cat [
App (CId "hypo") (lmap fromHypo hypos),
App (CId "arg") (lmap fromExp exps)]
App (CId "H") (lmap fromHypo hypos),
App (CId "X") (lmap fromExp exps)]
fromHypo :: Hypo -> RExp
fromHypo e = case e of
@@ -135,7 +135,7 @@ fromHypo e = case e of
fromExp :: Exp -> RExp
fromExp e = case e of
DTr xs (AC fun) exps ->
App fun [App (CId "abs") (lmap AId xs), App (CId "arg") (lmap fromExp exps)]
App fun [App (CId "B") (lmap AId xs), App (CId "X") (lmap fromExp exps)]
DTr xs (AM _) exps -> AMet ----
EEq _ -> App (CId "Eq") [] ----
_ -> error $ "exp " ++ show e

View File

@@ -10,101 +10,3 @@ AMet. RExp ::= "?" ;
terminator RExp "" ;
token CId (('_' | letter) (letter | digit | '\'' | '_')*) ;
{-
Grm. Grammar ::=
"grammar" CId "(" [CId] ")" "(" [Flag] ")" ";"
Abstract ";"
[Concrete] ;
Abs. Abstract ::=
"abstract" "{"
"flags" [Flag]
"fun" [FunDef]
"cat" [CatDef]
"}" ;
Cnc. Concrete ::=
"concrete" CId "{"
"flags" [Flag]
"lin" [LinDef]
"oper" [LinDef]
"lincat" [LinDef]
"lindef" [LinDef]
"printname" [LinDef]
"param" [LinDef] -- lincats with param value names
"}" ;
Flg. Flag ::= CId "=" String ;
Cat. CatDef ::= CId "[" [Hypo] "]" ;
Fun. FunDef ::= CId ":" Type "=" Exp ;
Lin. LinDef ::= CId "=" Term ;
DTyp. Type ::= "[" [Hypo] "]" CId [Exp] ; -- dependent type
DTr. Exp ::= "[" "(" [CId] ")" Atom [Exp] "]" ; -- term with bindings
AC. Atom ::= CId ;
AS. Atom ::= String ;
AI. Atom ::= Integer ;
AF. Atom ::= Double ;
AM. Atom ::= "?" Integer ;
R. Term ::= "[" [Term] "]" ; -- record/table
P. Term ::= "(" Term "!" Term ")" ; -- projection/selection
S. Term ::= "(" [Term] ")" ; -- concatenated sequence
K. Term ::= Tokn ; -- token
V. Term ::= "$" Integer ; -- argument
C. Term ::= Integer ; -- parameter value/label
F. Term ::= CId ; -- global constant
FV. Term ::= "[|" [Term] "|]" ; -- free variation
W. Term ::= "(" String "+" Term ")" ; -- prefix + suffix table
TM. Term ::= "?" ; -- lin of metavariable
KS. Tokn ::= String ;
KP. Tokn ::= "[" "pre" [String] "[" [Variant] "]" "]" ;
Var. Variant ::= [String] "/" [String] ;
RP. Term ::= "(" Term "@" Term ")"; -- DEPRECATED: record parameter alias
terminator Concrete ";" ;
terminator Flag ";" ;
terminator CatDef ";" ;
terminator FunDef ";" ;
terminator LinDef ";" ;
separator CId "," ;
separator Term "," ;
terminator Exp "" ;
terminator String "" ;
separator Variant "," ;
-- the following are needed if dependent types or HOAS or defs are present
Hyp. Hypo ::= CId ":" Type ;
AV. Atom ::= "$" CId ;
EEq. Exp ::= "{" [Equation] "}" ; -- list of pattern eqs; primitive: []
Equ. Equation ::= [Exp] "->" Exp ; -- patterns are encoded as exps
separator Hypo "," ;
terminator Equation ";" ;
-}

View File

@@ -8,7 +8,7 @@ module GF.GFCC.ShowLinearize (
import GF.GFCC.Linearize
import GF.GFCC.Macros
import GF.GFCC.DataGFCC
import GF.GFCC.Raw.AbsGFCCRaw (CId (..))
import GF.GFCC.CId
--import GF.GFCC.PrintGFCC ----
import GF.Data.Operations