diff --git a/src/GF/FCFG/AbsFCFG.hs b/src/GF/FCFG/AbsFCFG.hs deleted file mode 100644 index c7b2c4057..000000000 --- a/src/GF/FCFG/AbsFCFG.hs +++ /dev/null @@ -1,82 +0,0 @@ -module GF.FCFG.AbsFCFG where - --- Haskell module generated by the BNF converter - -newtype Ident = Ident String deriving (Eq,Ord,Show) -data FGrammar = - FGr [FRule] - deriving (Eq,Ord,Show) - -data FRule = - FR Abstract [[FSymbol]] - deriving (Eq,Ord,Show) - -data Abstract = - Abs FCat [FCat] Name - deriving (Eq,Ord,Show) - -data FSymbol = - FSymCat FCat Integer Integer - | FSymTok String - deriving (Eq,Ord,Show) - -data FCat = - FC Integer Ident [[PathEl]] [PathTerm] - deriving (Eq,Ord,Show) - -data PathEl = - PLabel Label - | PTerm Term - deriving (Eq,Ord,Show) - -data PathTerm = - PtT [PathEl] Term - deriving (Eq,Ord,Show) - -data Name = - Nm Ident [Profile] - deriving (Eq,Ord,Show) - -data Profile = - Unify [Integer] - | Const Forest - deriving (Eq,Ord,Show) - -data Forest = - FMeta - | FNode Ident [[Forest]] - | FString String - | FInt Integer - | FFloat Double - deriving (Eq,Ord,Show) - -data Term = - Arg Integer Ident [PathEl] - | Constr CIdent [Term] - | Rec [Assoc] - | Proj Term Label - | Tbl [Case] - | Select Term Term - | Vars [Term] - | Concat Term Term - | Tok String - | Empty - deriving (Eq,Ord,Show) - -data Case = - Cas Term Term - deriving (Eq,Ord,Show) - -data Assoc = - Ass Label Term - deriving (Eq,Ord,Show) - -data Label = - L Ident - | LV Integer - deriving (Eq,Ord,Show) - -data CIdent = - CIQ Ident Ident - deriving (Eq,Ord,Show) - diff --git a/src/GF/FCFG/FCFG.cf b/src/GF/FCFG/FCFG.cf deleted file mode 100644 index a0b375083..000000000 --- a/src/GF/FCFG/FCFG.cf +++ /dev/null @@ -1,131 +0,0 @@ --- a portable format for FCFG (Peter Ljunglöf's MCFG modified by Krasimir Anglelov) --- Aarne Ranta September 2006 - -FGr. FGrammar ::= [FRule] ; -FR. FRule ::= Abstract ":=" [[FSymbol]] ; -Abs. Abstract ::= FCat "->" [FCat] "." Name ; -FSymCat. FSymbol ::= "(" FCat Integer Integer ")" ; -FSymTok. FSymbol ::= String ; -FC. FCat ::= "(" Integer Ident "[" [[PathEl]] "]" "[" [PathTerm] "]" ")" ; -PLabel. PathEl ::= Label ; -PTerm. PathEl ::= Term ; -PtT. PathTerm ::= "(" [PathEl] "," Term ")" ; -Nm. Name ::= Ident "[" [Profile] "]" ; -Unify. Profile ::= "[" [Integer] "]" ; -Const. Profile ::= Forest ; - -FMeta. Forest ::= "?" ; -FNode. Forest ::= "(" Ident [[Forest]] ")" ; -FString. Forest ::= String ; -FInt. Forest ::= Integer ; -FFloat. Forest ::= Double ; - -Arg. Term ::= "(" Integer Ident [PathEl] ")" ; -Constr. Term ::= "(" CIdent "-" [Term] ")" ; -Rec. Term ::= "[" [Assoc] "]" ; -Proj. Term ::= "(" Term "." Label ")" ; -Tbl. Term ::= "[-" [Case] "-]" ; -Select. Term ::= "(" Term "!" Term ")" ; -Vars. Term ::= "[|" [Term] "|]" ; -Concat. Term ::= "(" Term "++" Term ")" ; -Tok. Term ::= String ; -Empty. Term ::= "(" ")" ; - -Cas. Case ::= Term "=>" Term ; -Ass. Assoc ::= Label "=" Term ; - -L. Label ::= Ident ; -LV. Label ::= "$" Integer ; -CIQ. CIdent ::= Ident "." Ident ; - -terminator FRule ";" ; -terminator [FSymbol] "|" ; -terminator FSymbol "" ; -terminator FCat "" ; -terminator [Forest] "," ; -terminator Forest "" ; -terminator PathTerm "" ; -terminator Profile "" ; -terminator Integer "" ; -terminator Term "," ; -terminator Assoc "," ; -terminator Case "," ; -terminator [PathEl] "," ; -terminator PathEl "." ; - - --- type FGrammar = [FRule] --- data FRule = FRule Abstract (Array Int (Array Int FSymbol)) --- data Abstract = Abs FCat [FCat] Name --- data FSymbol = FSymCat FCat Int Int --- | FSymTok String --- data FCat = FCat Int Ident [Path] [(Path,Term)] --- newtype Path = Path [Either Label Term] --- type Name = Name Ident [Profile] --- type Label = AbsGFC.Label --- data Profile = Unify [Int] | Constant SyntaxForest --- SyntaxForest = FMeta --- | FNode Ident [[SyntaxForest]] --- | FString String --- | FInt Integer --- | FFloat Double -{- -data Term - = Arg Int Ident Path -- ^ argument variable, the 'Path' is a path - -- pointing into the term - | Constr :^ [Term] -- ^ constructor - | Rec [(Label, Term)] -- ^ record - | Term :. Label -- ^ record projection - | Tbl [(Term, Term)] -- ^ table of patterns\/terms - | Term :! Term -- ^ table selection - | Variants [Term] -- ^ variants - | Term :++ Term -- ^ concatenation - | Token String -- ^ single token - | Empty -- ^ empty string --} - - - - - --- type FGrammar = FCFGrammar FCat Name Token --- type FRule = FCFRule FCat Name Token --- type FCFGrammar cat name tok = [FCFRule cat name tok] --- data FCFRule cat name tok = --- FRule (Abstract cat name) (Array FLabel (Array FPointPos (FSymbol cat tok))) --- data Abstract cat name = Abs cat [cat] name --- data FSymbol cat tok = FSymCat cat FLabel Int | FSymTok tok --- type FLabel = Int --- type FPointPos = Int --- data FCat = FCat Int SCat [SPath] [(SPath,STerm)] --- newtype Path c t = Path [Either Label (Term c t)] --- type SCat = Ident.Ident --- type Fun = Ident.Ident --- type SPath = Path SCat Token --- type STerm = Term SCat Token --- type Name = NameProfile Fun --- data NameProfile a = Name a [Profile (SyntaxForest a)] --- SyntaxForest n = FMeta --- | FNode n [[SyntaxForest n]] --- | FString String --- | FInt Integer --- | FFloat Double --- type Token = String --- type Label = AbsGFC.Label --- data Profile a = Unify [Int] | Constant a --- type Constr = AbsGFC.CIdent -{- -data Term c t - = Arg Int c (Path c t) -- ^ argument variable, the 'Path' is a path - -- pointing into the term - | Constr :^ [Term c t] -- ^ constructor - | Rec [(Label, Term c t)] -- ^ record - | Term c t :. Label -- ^ record projection - | Tbl [(Term c t, Term c t)] -- ^ table of patterns\/terms - | Term c t :! Term c t -- ^ table selection - | Variants [Term c t] -- ^ variants - | Term c t :++ Term c t -- ^ concatenation - | Token t -- ^ single token - | Empty -- ^ empty string --} - diff --git a/src/GF/FCFG/FromFCFG.hs b/src/GF/FCFG/FromFCFG.hs deleted file mode 100644 index f8fffbe7b..000000000 --- a/src/GF/FCFG/FromFCFG.hs +++ /dev/null @@ -1,105 +0,0 @@ ----------------------------------------------------------------------- --- | --- Maintainer : Aarne Ranta --- Stability : (stable) --- Portability : (portable) --- --- mapping to GF-internal FGrammar from bnfc-defined FCFG ------------------------------------------------------------------------------ - -module GF.FCFG.ToFCFG (getFGrammar) where - -import GF.Formalism.FCFG -import GF.Formalism.SimpleGFC -import GF.Conversion.Types -import GF.Infra.Ident -import qualified GF.FCFG.AbsFCFG as F - -import GF.FCFG.ParFCFG (pFGrammar, myLexer) - -import qualified GF.Canon.AbsGFC as C - -import Control.Monad (liftM) -import Data.List (groupBy) -import Data.Array - -import GF.Formalism.Utilities -import GF.Formalism.GCFG - -import GF.Data.Operations -import GF.Infra.Print - - --- this is the main function used -getFGrammar :: FilePath -> IO (FCFGrammar FCat Name Token) -getFGrammar f = - readFile f >>= err error (return . fgrammar) . pFGrammar . myLexer - -fgrammar :: F.FGrammar -> FCFGrammar FCat Name Token -fgrammar (F.FGr rs) = map frule rs - -frule :: F.FRule -> FCFRule FCat Name Token -frule (F.FR ab rhs) = - FRule (abstract ab) - (arr [arr [fsymbol sym | sym <- syms] | syms <- rhs]) - -arr xs = listArray (0,length xs - 1) xs - -abstract :: F.Abstract -> Abstract FCat Name -abstract (F.Abs cat cats n) = Abs (fcat cat) (map fcat cats) (name n) - -fsymbol :: F.FSymbol -> FSymbol FCat Token -fsymbol fs = case fs of - F.FSymCat fc i j -> FSymCat (fcat fc) (fromInteger i) (fromInteger j) - F.FSymTok s -> FSymTok s - -fcat :: F.FCat -> FCat -fcat (F.FC i id ps pts) = - FCat (fromInteger i) (ident id) (map path ps) - [ (path p, term t) | F.PtT p t <- pts] - -name :: F.Name -> Name -name (F.Nm id profs) = Name (ident id) (map profile profs) - -pathel :: F.PathEl -> Either C.Label (Term SCat Token) -pathel lt = case lt of - F.PLabel lab -> Left $ label lab - F.PTerm trm -> Right $ term trm - -path = Path . map pathel - -profile :: F.Profile -> Profile (SyntaxForest Fun) -profile p = case p of - F.Unify is -> Unify (map fromInteger is) - F.Const sf -> Constant (forest sf) - -forest :: F.Forest -> SyntaxForest Fun -forest f = case f of - F.FMeta -> FMeta - F.FNode id fss -> FNode (ident id) (map (map forest) fss) - F.FString s -> FString s - F.FInt i -> FInt i - F.FFloat d -> FFloat d - -term :: F.Term -> Term SCat Token -term tr = case tr of - F.Arg i id p -> Arg (fromInteger i) (ident id) (path p) - F.Rec rs -> Rec [(label l, term t) | F.Ass l t <- rs] - F.Tbl cs -> Tbl [(term p, term v) | F.Cas p v <- cs] - F.Constr c ts -> (constr c) :^ (map term ts) - F.Proj t l -> (term t) :. (label l) - F.Concat t u -> (term t) :++ (term u) - F.Select t u -> (term t) :! (term u) - F.Vars ts -> Variants $ map term ts - F.Tok s -> Token s - F.Empty -> Empty - -label :: F.Label -> C.Label -label b = case b of - F.L x -> C.L $ ident x - F.LV i -> C.LV i - -ident :: F.Ident -> Ident -ident (F.Ident x) = identC x --- should other constructors be used? - -constr (F.CIQ m c) = C.CIQ (ident m) (ident c) diff --git a/src/GF/FCFG/LexFCFG.hs b/src/GF/FCFG/LexFCFG.hs deleted file mode 100644 index 67de7f144..000000000 --- a/src/GF/FCFG/LexFCFG.hs +++ /dev/null @@ -1,346 +0,0 @@ -{-# OPTIONS -fglasgow-exts -cpp #-} -{-# LINE 3 "LexFCFG.x" #-} -{-# OPTIONS -fno-warn-incomplete-patterns #-} -module GF.FCFG.LexFCFG where - - - -#if __GLASGOW_HASKELL__ >= 603 -#include "ghcconfig.h" -#else -#include "config.h" -#endif -#if __GLASGOW_HASKELL__ >= 503 -import Data.Array -import Data.Char (ord) -import Data.Array.Base (unsafeAt) -#else -import Array -import Char (ord) -#endif -#if __GLASGOW_HASKELL__ >= 503 -import GHC.Exts -#else -import GlaExts -#endif -alex_base :: AlexAddr -alex_base = AlexA# "\x01\x00\x00\x00\x39\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x45\x00\x00\x00\xeb\xff\xff\xff\x0b\x00\x00\x00\x0d\x00\x00\x00\x25\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\xd4\x00\x00\x00\x37\x00\x00\x00\xe6\x00\x00\x00\xf1\x00\x00\x00\x1c\x01\x00\x00\x6b\x01\x00\x00\x78\x01\x00\x00"# - -alex_table :: AlexAddr -alex_table = AlexA# "\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x00\x03\x00\x0c\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x03\x00\x03\x00\xff\xff\x09\x00\x03\x00\x04\x00\x03\x00\xff\xff\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x08\x00\x03\x00\xff\xff\x07\x00\xff\xff\x03\x00\xff\xff\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x03\x00\x03\x00\x03\x00\x03\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x05\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\x02\x00\x00\x00\x00\x00\x11\x00\x03\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x0e\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0c\x00\x00\x00\xff\xff\x00\x00\x0a\x00\x0c\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\xff\xff\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x13\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0d\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x12\x00\x00\x00\x00\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -alex_check :: AlexAddr -alex_check = AlexA# "\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x3e\x00\x5d\x00\x3e\x00\x3d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x20\x00\xff\xff\xff\xff\x2e\x00\x5d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\x7c\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xd7\x00\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x22\x00\xff\xff\xf7\x00\xff\xff\x5f\x00\x27\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x65\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\x5c\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xff\xff\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# - -alex_deflt :: AlexAddr -alex_deflt = AlexA# "\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# - -alex_accept = listArray (0::Int,19) [[],[],[(AlexAccSkip)],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_1))],[],[],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_3))],[],[],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[],[],[]] -{-# LINE 32 "LexFCFG.x" #-} - -tok f p s = f p s - -share :: String -> String -share = id - -data Tok = - TS !String -- reserved words and symbols - | TL !String -- string literals - | TI !String -- integer literals - | TV !String -- identifiers - | TD !String -- double precision float literals - | TC !String -- character literals - - deriving (Eq,Show,Ord) - -data Token = - PT Posn Tok - | Err Posn - deriving (Eq,Show,Ord) - -tokenPos (PT (Pn _ l _) _ :_) = "line " ++ show l -tokenPos (Err (Pn _ l _) :_) = "line " ++ show l -tokenPos _ = "end of file" - -posLineCol (Pn _ l c) = (l,c) -mkPosToken t@(PT p _) = (posLineCol p, prToken t) - -prToken t = case t of - PT _ (TS s) -> s - PT _ (TI s) -> s - PT _ (TV s) -> s - PT _ (TD s) -> s - PT _ (TC s) -> s - - _ -> show t - -data BTree = N | B String Tok BTree BTree deriving (Show) - -eitherResIdent :: (String -> Tok) -> String -> Tok -eitherResIdent tv s = treeFind resWords - where - treeFind N = tv s - treeFind (B a t left right) | s < a = treeFind left - | s > a = treeFind right - | s == a = t - -resWords = N - where b s = B s (TS s) - -unescapeInitTail :: String -> String -unescapeInitTail = unesc . tail where - unesc s = case s of - '\\':c:cs | elem c ['\"', '\\', '\''] -> c : unesc cs - '\\':'n':cs -> '\n' : unesc cs - '\\':'t':cs -> '\t' : unesc cs - '"':[] -> [] - c:cs -> c : unesc cs - _ -> [] - -------------------------------------------------------------------- --- Alex wrapper code. --- A modified "posn" wrapper. -------------------------------------------------------------------- - -data Posn = Pn !Int !Int !Int - deriving (Eq, Show,Ord) - -alexStartPos :: Posn -alexStartPos = Pn 0 1 1 - -alexMove :: Posn -> Char -> Posn -alexMove (Pn a l c) '\t' = Pn (a+1) l (((c+7) `div` 8)*8+1) -alexMove (Pn a l c) '\n' = Pn (a+1) (l+1) 1 -alexMove (Pn a l c) _ = Pn (a+1) l (c+1) - -type AlexInput = (Posn, -- current position, - Char, -- previous char - String) -- current input string - -tokens :: String -> [Token] -tokens str = go (alexStartPos, '\n', str) - where - go :: (Posn, Char, String) -> [Token] - go inp@(pos, _, str) = - case alexScan inp 0 of - AlexEOF -> [] - AlexError (pos, _, _) -> [Err pos] - AlexSkip inp' len -> go inp' - AlexToken inp' len act -> act pos (take len str) : (go inp') - -alexGetChar :: AlexInput -> Maybe (Char,AlexInput) -alexGetChar (p, c, []) = Nothing -alexGetChar (p, _, (c:s)) = - let p' = alexMove p c - in p' `seq` Just (c, (p', c, s)) - -alexInputPrevChar :: AlexInput -> Char -alexInputPrevChar (p, c, s) = c - -alex_action_1 = tok (\p s -> PT p (TS $ share s)) -alex_action_2 = tok (\p s -> PT p (eitherResIdent (TV . share) s)) -alex_action_3 = tok (\p s -> PT p (TL $ share $ unescapeInitTail s)) -alex_action_4 = tok (\p s -> PT p (TI $ share s)) -alex_action_5 = tok (\p s -> PT p (TD $ share s)) -{-# LINE 1 "GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "GenericTemplate.hs" #-} --- ----------------------------------------------------------------------------- --- ALEX TEMPLATE --- --- This code is in the PUBLIC DOMAIN; you may copy it freely and use --- it for any purpose whatsoever. - --- ----------------------------------------------------------------------------- --- INTERNALS and main scanner engine - - -{-# LINE 35 "GenericTemplate.hs" #-} - - - - - - - - - - - - -data AlexAddr = AlexA# Addr# - -#if __GLASGOW_HASKELL__ < 503 -uncheckedShiftL# = shiftL# -#endif - -{-# INLINE alexIndexInt16OffAddr #-} -alexIndexInt16OffAddr (AlexA# arr) off = -#ifdef WORDS_BIGENDIAN - narrow16Int# i - where - i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) - high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) - low = int2Word# (ord# (indexCharOffAddr# arr off')) - off' = off *# 2# -#else - indexInt16OffAddr# arr off -#endif - - - - - -{-# INLINE alexIndexInt32OffAddr #-} -alexIndexInt32OffAddr (AlexA# arr) off = -#ifdef WORDS_BIGENDIAN - narrow32Int# i - where - i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#` - (b2 `uncheckedShiftL#` 16#) `or#` - (b1 `uncheckedShiftL#` 8#) `or#` b0) - b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#))) - b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#))) - b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) - b0 = int2Word# (ord# (indexCharOffAddr# arr off')) - off' = off *# 4# -#else - indexInt32OffAddr# arr off -#endif - - - - - -#if __GLASGOW_HASKELL__ < 503 -quickIndex arr i = arr ! i -#else --- GHC >= 503, unsafeAt is available from Data.Array.Base. -quickIndex = unsafeAt -#endif - - - - --- ----------------------------------------------------------------------------- --- Main lexing routines - -data AlexReturn a - = AlexEOF - | AlexError !AlexInput - | AlexSkip !AlexInput !Int - | AlexToken !AlexInput !Int a - --- alexScan :: AlexInput -> StartCode -> Maybe (AlexInput,Int,act) -alexScan input (I# (sc)) - = alexScanUser undefined input (I# (sc)) - -alexScanUser user input (I# (sc)) - = case alex_scan_tkn user input 0# input sc AlexNone of - (AlexNone, input') -> - case alexGetChar input of - Nothing -> - - - - AlexEOF - Just _ -> - - - - AlexError input' - - (AlexLastSkip input len, _) -> - - - - AlexSkip input len - - (AlexLastAcc k input len, _) -> - - - - AlexToken input len k - - --- Push the input through the DFA, remembering the most recent accepting --- state it encountered. - -alex_scan_tkn user orig_input len input s last_acc = - input `seq` -- strict in the input - case s of - -1# -> (last_acc, input) - _ -> alex_scan_tkn' user orig_input len input s last_acc - -alex_scan_tkn' user orig_input len input s last_acc = - let - new_acc = check_accs (alex_accept `quickIndex` (I# (s))) - in - new_acc `seq` - case alexGetChar input of - Nothing -> (new_acc, input) - Just (c, new_input) -> - - - - let - base = alexIndexInt32OffAddr alex_base s - (I# (ord_c)) = ord c - offset = (base +# ord_c) - check = alexIndexInt16OffAddr alex_check offset - - new_s = if (offset >=# 0#) && (check ==# ord_c) - then alexIndexInt16OffAddr alex_table offset - else alexIndexInt16OffAddr alex_deflt s - in - alex_scan_tkn user orig_input (len +# 1#) new_input new_s new_acc - - where - check_accs [] = last_acc - check_accs (AlexAcc a : _) = AlexLastAcc a input (I# (len)) - check_accs (AlexAccSkip : _) = AlexLastSkip input (I# (len)) - check_accs (AlexAccPred a pred : rest) - | pred user orig_input (I# (len)) input - = AlexLastAcc a input (I# (len)) - check_accs (AlexAccSkipPred pred : rest) - | pred user orig_input (I# (len)) input - = AlexLastSkip input (I# (len)) - check_accs (_ : rest) = check_accs rest - -data AlexLastAcc a - = AlexNone - | AlexLastAcc a !AlexInput !Int - | AlexLastSkip !AlexInput !Int - -data AlexAcc a user - = AlexAcc a - | AlexAccSkip - | AlexAccPred a (AlexAccPred user) - | AlexAccSkipPred (AlexAccPred user) - -type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool - --- ----------------------------------------------------------------------------- --- Predicates on a rule - -alexAndPred p1 p2 user in1 len in2 - = p1 user in1 len in2 && p2 user in1 len in2 - ---alexPrevCharIsPred :: Char -> AlexAccPred _ -alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input - ---alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ -alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input - ---alexRightContext :: Int -> AlexAccPred _ -alexRightContext (I# (sc)) user _ _ input = - case alex_scan_tkn user input 0# input sc AlexNone of - (AlexNone, _) -> False - _ -> True - -- TODO: there's no need to find the longest - -- match when checking the right context, just - -- the first match will do. - --- used by wrappers -iUnbox (I# (i)) = i diff --git a/src/GF/FCFG/ParFCFG.hs b/src/GF/FCFG/ParFCFG.hs deleted file mode 100644 index 53eb1c832..000000000 --- a/src/GF/FCFG/ParFCFG.hs +++ /dev/null @@ -1,1273 +0,0 @@ -{-# OPTIONS -fglasgow-exts -cpp #-} -{-# OPTIONS -fno-warn-incomplete-patterns -fno-warn-overlapping-patterns #-} -module GF.FCFG.ParFCFG where -import GF.FCFG.AbsFCFG -import GF.FCFG.LexFCFG -import GF.Data.ErrM -import Data.Array -#if __GLASGOW_HASKELL__ >= 503 -import GHC.Exts -#else -import GlaExts -#endif - --- parser produced by Happy Version 1.15 - -newtype HappyAbsSyn = HappyAbsSyn (() -> ()) -happyIn32 :: (Integer) -> (HappyAbsSyn ) -happyIn32 x = unsafeCoerce# x -{-# INLINE happyIn32 #-} -happyOut32 :: (HappyAbsSyn ) -> (Integer) -happyOut32 x = unsafeCoerce# x -{-# INLINE happyOut32 #-} -happyIn33 :: (String) -> (HappyAbsSyn ) -happyIn33 x = unsafeCoerce# x -{-# INLINE happyIn33 #-} -happyOut33 :: (HappyAbsSyn ) -> (String) -happyOut33 x = unsafeCoerce# x -{-# INLINE happyOut33 #-} -happyIn34 :: (Ident) -> (HappyAbsSyn ) -happyIn34 x = unsafeCoerce# x -{-# INLINE happyIn34 #-} -happyOut34 :: (HappyAbsSyn ) -> (Ident) -happyOut34 x = unsafeCoerce# x -{-# INLINE happyOut34 #-} -happyIn35 :: (Double) -> (HappyAbsSyn ) -happyIn35 x = unsafeCoerce# x -{-# INLINE happyIn35 #-} -happyOut35 :: (HappyAbsSyn ) -> (Double) -happyOut35 x = unsafeCoerce# x -{-# INLINE happyOut35 #-} -happyIn36 :: (FGrammar) -> (HappyAbsSyn ) -happyIn36 x = unsafeCoerce# x -{-# INLINE happyIn36 #-} -happyOut36 :: (HappyAbsSyn ) -> (FGrammar) -happyOut36 x = unsafeCoerce# x -{-# INLINE happyOut36 #-} -happyIn37 :: (FRule) -> (HappyAbsSyn ) -happyIn37 x = unsafeCoerce# x -{-# INLINE happyIn37 #-} -happyOut37 :: (HappyAbsSyn ) -> (FRule) -happyOut37 x = unsafeCoerce# x -{-# INLINE happyOut37 #-} -happyIn38 :: (Abstract) -> (HappyAbsSyn ) -happyIn38 x = unsafeCoerce# x -{-# INLINE happyIn38 #-} -happyOut38 :: (HappyAbsSyn ) -> (Abstract) -happyOut38 x = unsafeCoerce# x -{-# INLINE happyOut38 #-} -happyIn39 :: (FSymbol) -> (HappyAbsSyn ) -happyIn39 x = unsafeCoerce# x -{-# INLINE happyIn39 #-} -happyOut39 :: (HappyAbsSyn ) -> (FSymbol) -happyOut39 x = unsafeCoerce# x -{-# INLINE happyOut39 #-} -happyIn40 :: (FCat) -> (HappyAbsSyn ) -happyIn40 x = unsafeCoerce# x -{-# INLINE happyIn40 #-} -happyOut40 :: (HappyAbsSyn ) -> (FCat) -happyOut40 x = unsafeCoerce# x -{-# INLINE happyOut40 #-} -happyIn41 :: (PathEl) -> (HappyAbsSyn ) -happyIn41 x = unsafeCoerce# x -{-# INLINE happyIn41 #-} -happyOut41 :: (HappyAbsSyn ) -> (PathEl) -happyOut41 x = unsafeCoerce# x -{-# INLINE happyOut41 #-} -happyIn42 :: (PathTerm) -> (HappyAbsSyn ) -happyIn42 x = unsafeCoerce# x -{-# INLINE happyIn42 #-} -happyOut42 :: (HappyAbsSyn ) -> (PathTerm) -happyOut42 x = unsafeCoerce# x -{-# INLINE happyOut42 #-} -happyIn43 :: (Name) -> (HappyAbsSyn ) -happyIn43 x = unsafeCoerce# x -{-# INLINE happyIn43 #-} -happyOut43 :: (HappyAbsSyn ) -> (Name) -happyOut43 x = unsafeCoerce# x -{-# INLINE happyOut43 #-} -happyIn44 :: (Profile) -> (HappyAbsSyn ) -happyIn44 x = unsafeCoerce# x -{-# INLINE happyIn44 #-} -happyOut44 :: (HappyAbsSyn ) -> (Profile) -happyOut44 x = unsafeCoerce# x -{-# INLINE happyOut44 #-} -happyIn45 :: (Forest) -> (HappyAbsSyn ) -happyIn45 x = unsafeCoerce# x -{-# INLINE happyIn45 #-} -happyOut45 :: (HappyAbsSyn ) -> (Forest) -happyOut45 x = unsafeCoerce# x -{-# INLINE happyOut45 #-} -happyIn46 :: (Term) -> (HappyAbsSyn ) -happyIn46 x = unsafeCoerce# x -{-# INLINE happyIn46 #-} -happyOut46 :: (HappyAbsSyn ) -> (Term) -happyOut46 x = unsafeCoerce# x -{-# INLINE happyOut46 #-} -happyIn47 :: (Case) -> (HappyAbsSyn ) -happyIn47 x = unsafeCoerce# x -{-# INLINE happyIn47 #-} -happyOut47 :: (HappyAbsSyn ) -> (Case) -happyOut47 x = unsafeCoerce# x -{-# INLINE happyOut47 #-} -happyIn48 :: (Assoc) -> (HappyAbsSyn ) -happyIn48 x = unsafeCoerce# x -{-# INLINE happyIn48 #-} -happyOut48 :: (HappyAbsSyn ) -> (Assoc) -happyOut48 x = unsafeCoerce# x -{-# INLINE happyOut48 #-} -happyIn49 :: (Label) -> (HappyAbsSyn ) -happyIn49 x = unsafeCoerce# x -{-# INLINE happyIn49 #-} -happyOut49 :: (HappyAbsSyn ) -> (Label) -happyOut49 x = unsafeCoerce# x -{-# INLINE happyOut49 #-} -happyIn50 :: (CIdent) -> (HappyAbsSyn ) -happyIn50 x = unsafeCoerce# x -{-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> (CIdent) -happyOut50 x = unsafeCoerce# x -{-# INLINE happyOut50 #-} -happyIn51 :: ([FRule]) -> (HappyAbsSyn ) -happyIn51 x = unsafeCoerce# x -{-# INLINE happyIn51 #-} -happyOut51 :: (HappyAbsSyn ) -> ([FRule]) -happyOut51 x = unsafeCoerce# x -{-# INLINE happyOut51 #-} -happyIn52 :: ([[FSymbol]]) -> (HappyAbsSyn ) -happyIn52 x = unsafeCoerce# x -{-# INLINE happyIn52 #-} -happyOut52 :: (HappyAbsSyn ) -> ([[FSymbol]]) -happyOut52 x = unsafeCoerce# x -{-# INLINE happyOut52 #-} -happyIn53 :: ([FSymbol]) -> (HappyAbsSyn ) -happyIn53 x = unsafeCoerce# x -{-# INLINE happyIn53 #-} -happyOut53 :: (HappyAbsSyn ) -> ([FSymbol]) -happyOut53 x = unsafeCoerce# x -{-# INLINE happyOut53 #-} -happyIn54 :: ([FCat]) -> (HappyAbsSyn ) -happyIn54 x = unsafeCoerce# x -{-# INLINE happyIn54 #-} -happyOut54 :: (HappyAbsSyn ) -> ([FCat]) -happyOut54 x = unsafeCoerce# x -{-# INLINE happyOut54 #-} -happyIn55 :: ([[Forest]]) -> (HappyAbsSyn ) -happyIn55 x = unsafeCoerce# x -{-# INLINE happyIn55 #-} -happyOut55 :: (HappyAbsSyn ) -> ([[Forest]]) -happyOut55 x = unsafeCoerce# x -{-# INLINE happyOut55 #-} -happyIn56 :: ([Forest]) -> (HappyAbsSyn ) -happyIn56 x = unsafeCoerce# x -{-# INLINE happyIn56 #-} -happyOut56 :: (HappyAbsSyn ) -> ([Forest]) -happyOut56 x = unsafeCoerce# x -{-# INLINE happyOut56 #-} -happyIn57 :: ([PathTerm]) -> (HappyAbsSyn ) -happyIn57 x = unsafeCoerce# x -{-# INLINE happyIn57 #-} -happyOut57 :: (HappyAbsSyn ) -> ([PathTerm]) -happyOut57 x = unsafeCoerce# x -{-# INLINE happyOut57 #-} -happyIn58 :: ([Profile]) -> (HappyAbsSyn ) -happyIn58 x = unsafeCoerce# x -{-# INLINE happyIn58 #-} -happyOut58 :: (HappyAbsSyn ) -> ([Profile]) -happyOut58 x = unsafeCoerce# x -{-# INLINE happyOut58 #-} -happyIn59 :: ([Integer]) -> (HappyAbsSyn ) -happyIn59 x = unsafeCoerce# x -{-# INLINE happyIn59 #-} -happyOut59 :: (HappyAbsSyn ) -> ([Integer]) -happyOut59 x = unsafeCoerce# x -{-# INLINE happyOut59 #-} -happyIn60 :: ([Term]) -> (HappyAbsSyn ) -happyIn60 x = unsafeCoerce# x -{-# INLINE happyIn60 #-} -happyOut60 :: (HappyAbsSyn ) -> ([Term]) -happyOut60 x = unsafeCoerce# x -{-# INLINE happyOut60 #-} -happyIn61 :: ([Assoc]) -> (HappyAbsSyn ) -happyIn61 x = unsafeCoerce# x -{-# INLINE happyIn61 #-} -happyOut61 :: (HappyAbsSyn ) -> ([Assoc]) -happyOut61 x = unsafeCoerce# x -{-# INLINE happyOut61 #-} -happyIn62 :: ([Case]) -> (HappyAbsSyn ) -happyIn62 x = unsafeCoerce# x -{-# INLINE happyIn62 #-} -happyOut62 :: (HappyAbsSyn ) -> ([Case]) -happyOut62 x = unsafeCoerce# x -{-# INLINE happyOut62 #-} -happyIn63 :: ([[PathEl]]) -> (HappyAbsSyn ) -happyIn63 x = unsafeCoerce# x -{-# INLINE happyIn63 #-} -happyOut63 :: (HappyAbsSyn ) -> ([[PathEl]]) -happyOut63 x = unsafeCoerce# x -{-# INLINE happyOut63 #-} -happyIn64 :: ([PathEl]) -> (HappyAbsSyn ) -happyIn64 x = unsafeCoerce# x -{-# INLINE happyIn64 #-} -happyOut64 :: (HappyAbsSyn ) -> ([PathEl]) -happyOut64 x = unsafeCoerce# x -{-# INLINE happyOut64 #-} -happyInTok :: Token -> (HappyAbsSyn ) -happyInTok x = unsafeCoerce# x -{-# INLINE happyInTok #-} -happyOutTok :: (HappyAbsSyn ) -> Token -happyOutTok x = unsafeCoerce# x -{-# INLINE happyOutTok #-} - -happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\x47\x01\x47\x01\x2f\x00\x47\x01\x82\x00\x46\x01\x3c\x01\x37\x00\x3f\x00\xb2\x00\xb2\x00\xd8\x00\xd8\x00\x3c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x01\x00\x00\xfd\xff\x3a\x01\x1d\x00\xd2\x00\x1d\x00\x1a\x00\x03\x00\x0a\x00\x09\x00\x3a\x01\x02\x00\x0f\x00\x3a\x01\x02\x00\x39\x01\x38\x01\x00\x00\x00\x00\x38\x01\x36\x01\x35\x01\x37\x01\x00\x00\x34\x01\x33\x01\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x01\x00\x00\x00\x00\x00\x00\x33\x01\x2e\x01\x00\x00\x00\x00\x2d\x01\x00\x00\x00\x00\x32\x01\x2c\x01\x2c\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x2c\x01\x2b\x01\x00\x00\x29\x01\x30\x01\x28\x01\x31\x01\x27\x01\x2f\x01\x17\x01\x2a\x01\x26\x01\x00\x00\x00\x00\x1b\x01\x15\x01\x69\x00\x00\x00\x4c\x00\x00\x00\xa5\x00\x9a\x00\x5d\x00\x15\x01\xd0\x00\x25\x01\x00\x00\xb2\x00\xb2\x00\x00\x00\x13\x01\x12\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x01\x22\x01\x21\x01\x5b\x00\x07\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\xff\xb2\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x01\x00\x00\x28\x00\xb2\x00\x20\x01\x11\x01\xf7\x00\x6a\x00\x00\x00\x0d\x01\x1f\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x46\x00\x1d\x01\x1c\x01\x1a\x01\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x18\x01\x00\x00\x63\x00\x14\x01\x00\x00\x00\x00"# - -happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\xfe\xff\xf0\x00\xf1\x00\xa0\x00\x10\x01\xb9\x00\x0c\x01\xb3\x00\xcb\x00\xd9\x00\xe1\x00\x88\x00\x9d\x00\x38\x00\x40\x00\xfb\x00\x09\x01\x05\x01\x06\x01\x04\x01\xff\x00\xf6\x00\xf9\x00\xfa\x00\xf8\x00\xf3\x00\xf4\x00\xf2\x00\xed\x00\x00\x00\x00\x00\xa1\x00\xeb\x00\x75\x00\x8c\x00\xe0\x00\x08\x01\xc3\x00\x02\x01\xd1\x00\xee\x00\x01\x01\x64\x00\xef\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\xea\x00\xe7\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\xe8\x00\xdd\x00\xe9\x00\xe5\x00\xa1\x00\xca\x00\xcd\x00\xae\x00\xe0\x00\x75\x00\x8c\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xde\x00\xda\x00\x00\x00\xbd\x00\x64\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x2b\x00\xd5\x00\xc7\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\xc3\x00\xab\x00\x00\x00\x7b\x00\x47\x00\x24\x00\x00\x00\x55\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\xf6\xff\xfa\xff\x00\x00\x00\x00\x00\x00"# - -happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xbe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xff\xbc\xff\xba\xff\xb8\xff\xb6\xff\xb4\xff\xb2\xff\xb0\xff\xae\xff\xac\xff\xaa\xff\xa8\xff\xa6\xff\xa4\xff\x00\x00\xe2\xff\x00\x00\xa4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xff\x00\x00\x00\x00\xba\xff\x00\x00\x00\x00\x00\x00\xe0\xff\xc1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\x00\x00\x00\x00\x00\x00\xaa\xff\xa8\xff\xac\xff\xe1\xff\x00\x00\xcf\xff\xd0\xff\xce\xff\x00\x00\x00\x00\xd2\xff\xdf\xff\x00\x00\xd3\xff\xae\xff\x00\x00\x00\x00\x00\x00\xa4\xff\x00\x00\xd7\xff\xd8\xff\x00\x00\x00\x00\xda\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x00\x00\xbc\xff\xb8\xff\x00\x00\x00\x00\x00\x00\xb0\xff\x00\x00\xb6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\xff\x00\x00\x00\x00\xc0\xff\x00\x00\x00\x00\xb9\xff\xb7\xff\x00\x00\xb3\xff\xb1\xff\xaf\xff\xad\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xa5\xff\xa7\xff\xa9\xff\xab\xff\xb5\xff\xbb\xff\xbf\xff\xc2\xff\xc3\xff\xac\xff\x00\x00\x00\x00\x00\x00\xa4\xff\xcb\xff\xc9\xff\xc7\xff\xb4\xff\xd4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\xff\xbd\xff\x00\x00\x00\x00\xa6\xff\x00\x00\xd5\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\xca\xff\xc8\xff\xc6\xff\xcd\xff\xd6\xff\xa4\xff\xdb\xff\xdc\xff\x00\x00\xb2\xff\x00\x00\x00\x00\xd9\xff"# - -happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x04\x00\x04\x00\x06\x00\x0a\x00\x13\x00\x04\x00\x04\x00\x0b\x00\x06\x00\x18\x00\x0e\x00\x09\x00\x04\x00\x04\x00\x19\x00\x13\x00\x13\x00\x09\x00\x04\x00\x17\x00\x18\x00\x04\x00\x20\x00\x1b\x00\x16\x00\x17\x00\x1f\x00\x19\x00\x1b\x00\x1b\x00\x16\x00\x17\x00\x04\x00\x19\x00\x06\x00\x1b\x00\x1b\x00\x17\x00\x15\x00\x0b\x00\x17\x00\x1b\x00\x0e\x00\x04\x00\x02\x00\x06\x00\x07\x00\x16\x00\x09\x00\x04\x00\x04\x00\x17\x00\x1b\x00\x08\x00\x09\x00\x1b\x00\x15\x00\x02\x00\x04\x00\x11\x00\x06\x00\x16\x00\x17\x00\x09\x00\x19\x00\x02\x00\x04\x00\x16\x00\x17\x00\x17\x00\x19\x00\x09\x00\x11\x00\x04\x00\x05\x00\x06\x00\x16\x00\x17\x00\x08\x00\x19\x00\x0b\x00\x12\x00\x07\x00\x0e\x00\x16\x00\x17\x00\x02\x00\x19\x00\x13\x00\x00\x00\x01\x00\x02\x00\x17\x00\x18\x00\x04\x00\x0b\x00\x06\x00\x16\x00\x08\x00\x07\x00\x01\x00\x0b\x00\x04\x00\x0e\x00\x0e\x00\x07\x00\x07\x00\x12\x00\x04\x00\x13\x00\x06\x00\x13\x00\x08\x00\x17\x00\x18\x00\x0b\x00\x18\x00\x01\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x00\x00\x13\x00\x18\x00\x14\x00\x0b\x00\x17\x00\x18\x00\x0e\x00\x0e\x00\x0f\x00\x1b\x00\x04\x00\x01\x00\x06\x00\x01\x00\x16\x00\x17\x00\x18\x00\x0b\x00\x02\x00\x20\x00\x0e\x00\x04\x00\x05\x00\x06\x00\x0e\x00\x13\x00\x0e\x00\x0f\x00\x0b\x00\x17\x00\x18\x00\x0e\x00\x10\x00\x11\x00\x04\x00\x02\x00\x06\x00\x01\x00\x01\x00\x02\x00\x17\x00\x0b\x00\x0c\x00\x07\x00\x0e\x00\x04\x00\x09\x00\x06\x00\x01\x00\x10\x00\x11\x00\x0e\x00\x0b\x00\x17\x00\x11\x00\x0e\x00\x0f\x00\x02\x00\x04\x00\x1c\x00\x06\x00\x0e\x00\x01\x00\x02\x00\x17\x00\x0b\x00\x0b\x00\x02\x00\x0e\x00\x02\x00\x09\x00\x00\x00\x01\x00\x17\x00\x03\x00\x0e\x00\x01\x00\x17\x00\x11\x00\x00\x00\x01\x00\x00\x00\x03\x00\x0c\x00\x0d\x00\x00\x00\x01\x00\x03\x00\x03\x00\x0e\x00\x01\x00\x0c\x00\x0d\x00\x00\x00\x01\x00\x01\x00\x03\x00\x0d\x00\x0d\x00\x01\x00\x10\x00\x01\x00\x01\x00\x0e\x00\x1a\x00\x13\x00\x0d\x00\x02\x00\x0e\x00\x00\x00\x18\x00\x13\x00\x0e\x00\x1b\x00\x0e\x00\x0e\x00\x18\x00\x05\x00\x06\x00\x16\x00\x08\x00\x05\x00\x06\x00\x06\x00\x08\x00\x08\x00\x03\x00\x04\x00\x14\x00\x08\x00\x00\x00\x20\x00\x1c\x00\x1b\x00\x02\x00\x00\x00\x15\x00\x1e\x00\x18\x00\x1d\x00\x00\x00\x08\x00\x03\x00\x20\x00\x0a\x00\x20\x00\x13\x00\x19\x00\x1d\x00\x1f\x00\x1e\x00\x1a\x00\x1c\x00\x1b\x00\x0a\x00\x18\x00\x08\x00\x05\x00\x15\x00\x17\x00\x16\x00\x14\x00\x06\x00\x05\x00\x07\x00\x05\x00\x05\x00\x05\x00\x05\x00\x18\x00\x06\x00\x16\x00\x05\x00\x08\x00\x08\x00\x18\x00\x08\x00\x18\x00\x04\x00\x0a\x00\x01\x00\x16\x00\x1b\x00\x02\x00\x04\x00\xff\xff\xff\xff\xff\xff\x06\x00\xff\xff\x14\x00\xff\xff\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x1b\x00\x1b\x00\x1b\x00\x11\x00\x18\x00\x1b\x00\x1b\x00\x12\x00\x04\x00\x04\x00\x16\x00\xff\xff\x1b\x00\xff\xff\x1b\x00\x16\x00\xff\xff\x1b\x00\x18\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"# - -happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x39\x00\x58\x00\x3a\x00\x73\x00\x33\x00\x51\x00\x43\x00\x3b\x00\x48\x00\x30\x00\x3c\x00\x44\x00\x43\x00\x4c\x00\xac\x00\x33\x00\x59\x00\x44\x00\x54\x00\x3d\x00\x30\x00\x54\x00\x79\x00\xff\xff\x1f\x00\x3d\x00\xa7\x00\x45\x00\xff\xff\xff\xff\x1f\x00\x3d\x00\x39\x00\x45\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\x82\x00\x3b\x00\x3d\x00\xff\xff\x3c\x00\x43\x00\x30\x00\x48\x00\x9b\x00\x1f\x00\x44\x00\x43\x00\x54\x00\x3d\x00\xff\xff\x81\x00\x44\x00\xff\xff\x6e\x00\x30\x00\x43\x00\x9f\x00\x48\x00\x1f\x00\x3d\x00\x44\x00\x45\x00\x2d\x00\x43\x00\x1f\x00\x3d\x00\x3d\x00\x45\x00\x44\x00\x31\x00\x39\x00\xa6\x00\x3a\x00\x1f\x00\x3d\x00\x70\x00\x45\x00\x3b\x00\x2e\x00\x8f\x00\x3c\x00\x1f\x00\x3d\x00\x48\x00\x45\x00\x33\x00\x66\x00\x35\x00\x2d\x00\x3d\x00\x30\x00\x39\x00\xa9\x00\x3a\x00\x1f\x00\x7d\x00\x8b\x00\x51\x00\x3b\x00\x4c\x00\x67\x00\x3c\x00\xae\x00\x6f\x00\x68\x00\x39\x00\x33\x00\x3a\x00\x33\x00\x91\x00\x3d\x00\x30\x00\x3b\x00\x30\x00\x35\x00\x3c\x00\x39\x00\x6a\x00\x3a\x00\x97\x00\x33\x00\x71\x00\xdd\xff\x3b\x00\x3d\x00\x30\x00\x3c\x00\x36\x00\x78\x00\xdd\xff\x39\x00\x35\x00\x3a\x00\x35\x00\x1f\x00\x3d\x00\x30\x00\x3b\x00\x30\x00\x9c\x00\x3c\x00\x39\x00\xa2\x00\x3a\x00\x76\x00\x33\x00\x36\x00\x37\x00\x3b\x00\x3d\x00\x30\x00\x3c\x00\x77\x00\x34\x00\x39\x00\x30\x00\x3a\x00\x51\x00\x35\x00\x30\x00\x3d\x00\x3b\x00\x8c\x00\x52\x00\x3c\x00\x39\x00\x7a\x00\x3a\x00\x35\x00\x33\x00\x34\x00\x4d\x00\x3b\x00\x3d\x00\x4e\x00\x3c\x00\x8d\x00\x48\x00\x39\x00\xa0\x00\x3a\x00\x99\x00\x35\x00\x30\x00\x3d\x00\x3b\x00\x49\x00\x82\x00\x3c\x00\x89\x00\x4c\x00\x3e\x00\x3f\x00\x8d\x00\x40\x00\x4d\x00\x35\x00\x3d\x00\x4e\x00\x3e\x00\x3f\x00\x75\x00\x40\x00\x74\x00\x46\x00\x3e\x00\x3f\x00\x87\x00\x40\x00\x9d\x00\x35\x00\x45\x00\x46\x00\x3e\x00\x3f\x00\x35\x00\x40\x00\x88\x00\x72\x00\x35\x00\x89\x00\x35\x00\x35\x00\x9e\x00\x8f\x00\x33\x00\x41\x00\x91\x00\x83\x00\x92\x00\x30\x00\x33\x00\x84\x00\xff\xff\x76\x00\x3d\x00\x30\x00\x5a\x00\x57\x00\x93\x00\x55\x00\x56\x00\x57\x00\x54\x00\x55\x00\x55\x00\x97\x00\x51\x00\x94\x00\x5d\x00\x5e\x00\x5f\x00\x63\x00\x61\x00\x62\x00\x6c\x00\x6e\x00\x64\x00\x71\x00\x65\x00\x75\x00\x70\x00\x7c\x00\x79\x00\x73\x00\x1f\x00\x2c\x00\x26\x00\x22\x00\x20\x00\x21\x00\x25\x00\x23\x00\x24\x00\x4a\x00\x27\x00\x4f\x00\xaf\x00\x2a\x00\x28\x00\x29\x00\x2b\x00\xac\x00\xa3\x00\xab\x00\xa4\x00\xa5\x00\xa7\x00\xa9\x00\x30\x00\x99\x00\x1f\x00\x9c\x00\x7e\x00\x7f\x00\x30\x00\x80\x00\x30\x00\x51\x00\x86\x00\x5c\x00\x1f\x00\xff\xff\x5d\x00\x51\x00\x00\x00\x00\x00\x00\x00\x61\x00\x00\x00\x96\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\xff\xff\xff\xff\xff\xff\x6b\x00\x30\x00\xff\xff\xff\xff\x6c\x00\x4c\x00\x51\x00\x1f\x00\x00\x00\xff\xff\x00\x00\xff\xff\x1f\x00\x00\x00\xff\xff\x30\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -happyReduceArr = array (29, 92) [ - (29 , happyReduce_29), - (30 , happyReduce_30), - (31 , happyReduce_31), - (32 , happyReduce_32), - (33 , happyReduce_33), - (34 , happyReduce_34), - (35 , happyReduce_35), - (36 , happyReduce_36), - (37 , happyReduce_37), - (38 , happyReduce_38), - (39 , happyReduce_39), - (40 , happyReduce_40), - (41 , happyReduce_41), - (42 , happyReduce_42), - (43 , happyReduce_43), - (44 , happyReduce_44), - (45 , happyReduce_45), - (46 , happyReduce_46), - (47 , happyReduce_47), - (48 , happyReduce_48), - (49 , happyReduce_49), - (50 , happyReduce_50), - (51 , happyReduce_51), - (52 , happyReduce_52), - (53 , happyReduce_53), - (54 , happyReduce_54), - (55 , happyReduce_55), - (56 , happyReduce_56), - (57 , happyReduce_57), - (58 , happyReduce_58), - (59 , happyReduce_59), - (60 , happyReduce_60), - (61 , happyReduce_61), - (62 , happyReduce_62), - (63 , happyReduce_63), - (64 , happyReduce_64), - (65 , happyReduce_65), - (66 , happyReduce_66), - (67 , happyReduce_67), - (68 , happyReduce_68), - (69 , happyReduce_69), - (70 , happyReduce_70), - (71 , happyReduce_71), - (72 , happyReduce_72), - (73 , happyReduce_73), - (74 , happyReduce_74), - (75 , happyReduce_75), - (76 , happyReduce_76), - (77 , happyReduce_77), - (78 , happyReduce_78), - (79 , happyReduce_79), - (80 , happyReduce_80), - (81 , happyReduce_81), - (82 , happyReduce_82), - (83 , happyReduce_83), - (84 , happyReduce_84), - (85 , happyReduce_85), - (86 , happyReduce_86), - (87 , happyReduce_87), - (88 , happyReduce_88), - (89 , happyReduce_89), - (90 , happyReduce_90), - (91 , happyReduce_91), - (92 , happyReduce_92) - ] - -happy_n_terms = 28 :: Int -happy_n_nonterms = 33 :: Int - -happyReduce_29 = happySpecReduce_1 0# happyReduction_29 -happyReduction_29 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TI happy_var_1)) -> - happyIn32 - ((read happy_var_1) :: Integer - )} - -happyReduce_30 = happySpecReduce_1 1# happyReduction_30 -happyReduction_30 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TL happy_var_1)) -> - happyIn33 - (happy_var_1 - )} - -happyReduce_31 = happySpecReduce_1 2# happyReduction_31 -happyReduction_31 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TV happy_var_1)) -> - happyIn34 - (Ident happy_var_1 - )} - -happyReduce_32 = happySpecReduce_1 3# happyReduction_32 -happyReduction_32 happy_x_1 - = case happyOutTok happy_x_1 of { (PT _ (TD happy_var_1)) -> - happyIn35 - ((read happy_var_1) :: Double - )} - -happyReduce_33 = happySpecReduce_1 4# happyReduction_33 -happyReduction_33 happy_x_1 - = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn36 - (FGr (reverse happy_var_1) - )} - -happyReduce_34 = happySpecReduce_3 5# happyReduction_34 -happyReduction_34 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn37 - (FR happy_var_1 (reverse happy_var_3) - )}} - -happyReduce_35 = happyReduce 5# 6# happyReduction_35 -happyReduction_35 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut40 happy_x_1 of { happy_var_1 -> - case happyOut54 happy_x_3 of { happy_var_3 -> - case happyOut43 happy_x_5 of { happy_var_5 -> - happyIn38 - (Abs happy_var_1 (reverse happy_var_3) happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_36 = happyReduce 5# 7# happyReduction_36 -happyReduction_36 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut40 happy_x_2 of { happy_var_2 -> - case happyOut32 happy_x_3 of { happy_var_3 -> - case happyOut32 happy_x_4 of { happy_var_4 -> - happyIn39 - (FSymCat happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_37 = happySpecReduce_1 7# happyReduction_37 -happyReduction_37 happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn39 - (FSymTok happy_var_1 - )} - -happyReduce_38 = happyReduce 10# 8# happyReduction_38 -happyReduction_38 (happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut32 happy_x_2 of { happy_var_2 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - case happyOut63 happy_x_5 of { happy_var_5 -> - case happyOut57 happy_x_8 of { happy_var_8 -> - happyIn40 - (FC happy_var_2 happy_var_3 (reverse happy_var_5) (reverse happy_var_8) - ) `HappyStk` happyRest}}}} - -happyReduce_39 = happySpecReduce_1 9# happyReduction_39 -happyReduction_39 happy_x_1 - = case happyOut49 happy_x_1 of { happy_var_1 -> - happyIn41 - (PLabel happy_var_1 - )} - -happyReduce_40 = happySpecReduce_1 9# happyReduction_40 -happyReduction_40 happy_x_1 - = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn41 - (PTerm happy_var_1 - )} - -happyReduce_41 = happyReduce 5# 10# happyReduction_41 -happyReduction_41 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut64 happy_x_2 of { happy_var_2 -> - case happyOut46 happy_x_4 of { happy_var_4 -> - happyIn42 - (PtT (reverse happy_var_2) happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_42 = happyReduce 4# 11# happyReduction_42 -happyReduction_42 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut58 happy_x_3 of { happy_var_3 -> - happyIn43 - (Nm happy_var_1 (reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_43 = happySpecReduce_3 12# happyReduction_43 -happyReduction_43 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut59 happy_x_2 of { happy_var_2 -> - happyIn44 - (Unify (reverse happy_var_2) - )} - -happyReduce_44 = happySpecReduce_1 12# happyReduction_44 -happyReduction_44 happy_x_1 - = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn44 - (Const happy_var_1 - )} - -happyReduce_45 = happySpecReduce_1 13# happyReduction_45 -happyReduction_45 happy_x_1 - = happyIn45 - (FMeta - ) - -happyReduce_46 = happyReduce 4# 13# happyReduction_46 -happyReduction_46 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut34 happy_x_2 of { happy_var_2 -> - case happyOut55 happy_x_3 of { happy_var_3 -> - happyIn45 - (FNode happy_var_2 (reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_47 = happySpecReduce_1 13# happyReduction_47 -happyReduction_47 happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn45 - (FString happy_var_1 - )} - -happyReduce_48 = happySpecReduce_1 13# happyReduction_48 -happyReduction_48 happy_x_1 - = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn45 - (FInt happy_var_1 - )} - -happyReduce_49 = happySpecReduce_1 13# happyReduction_49 -happyReduction_49 happy_x_1 - = case happyOut35 happy_x_1 of { happy_var_1 -> - happyIn45 - (FFloat happy_var_1 - )} - -happyReduce_50 = happyReduce 5# 14# happyReduction_50 -happyReduction_50 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut32 happy_x_2 of { happy_var_2 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - case happyOut64 happy_x_4 of { happy_var_4 -> - happyIn46 - (Arg happy_var_2 happy_var_3 (reverse happy_var_4) - ) `HappyStk` happyRest}}} - -happyReduce_51 = happyReduce 5# 14# happyReduction_51 -happyReduction_51 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut50 happy_x_2 of { happy_var_2 -> - case happyOut60 happy_x_4 of { happy_var_4 -> - happyIn46 - (Constr happy_var_2 (reverse happy_var_4) - ) `HappyStk` happyRest}} - -happyReduce_52 = happySpecReduce_3 14# happyReduction_52 -happyReduction_52 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_2 of { happy_var_2 -> - happyIn46 - (Rec (reverse happy_var_2) - )} - -happyReduce_53 = happyReduce 5# 14# happyReduction_53 -happyReduction_53 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut49 happy_x_4 of { happy_var_4 -> - happyIn46 - (Proj happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_54 = happySpecReduce_3 14# happyReduction_54 -happyReduction_54 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut62 happy_x_2 of { happy_var_2 -> - happyIn46 - (Tbl (reverse happy_var_2) - )} - -happyReduce_55 = happyReduce 5# 14# happyReduction_55 -happyReduction_55 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut46 happy_x_4 of { happy_var_4 -> - happyIn46 - (Select happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_56 = happySpecReduce_3 14# happyReduction_56 -happyReduction_56 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut60 happy_x_2 of { happy_var_2 -> - happyIn46 - (Vars (reverse happy_var_2) - )} - -happyReduce_57 = happyReduce 5# 14# happyReduction_57 -happyReduction_57 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut46 happy_x_4 of { happy_var_4 -> - happyIn46 - (Concat happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_58 = happySpecReduce_1 14# happyReduction_58 -happyReduction_58 happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn46 - (Tok happy_var_1 - )} - -happyReduce_59 = happySpecReduce_2 14# happyReduction_59 -happyReduction_59 happy_x_2 - happy_x_1 - = happyIn46 - (Empty - ) - -happyReduce_60 = happySpecReduce_3 15# happyReduction_60 -happyReduction_60 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn47 - (Cas happy_var_1 happy_var_3 - )}} - -happyReduce_61 = happySpecReduce_3 16# happyReduction_61 -happyReduction_61 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn48 - (Ass happy_var_1 happy_var_3 - )}} - -happyReduce_62 = happySpecReduce_1 17# happyReduction_62 -happyReduction_62 happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn49 - (L happy_var_1 - )} - -happyReduce_63 = happySpecReduce_2 17# happyReduction_63 -happyReduction_63 happy_x_2 - happy_x_1 - = case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn49 - (LV happy_var_2 - )} - -happyReduce_64 = happySpecReduce_3 18# happyReduction_64 -happyReduction_64 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut34 happy_x_3 of { happy_var_3 -> - happyIn50 - (CIQ happy_var_1 happy_var_3 - )}} - -happyReduce_65 = happySpecReduce_0 19# happyReduction_65 -happyReduction_65 = happyIn51 - ([] - ) - -happyReduce_66 = happySpecReduce_3 19# happyReduction_66 -happyReduction_66 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut37 happy_x_2 of { happy_var_2 -> - happyIn51 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_67 = happySpecReduce_0 20# happyReduction_67 -happyReduction_67 = happyIn52 - ([] - ) - -happyReduce_68 = happySpecReduce_3 20# happyReduction_68 -happyReduction_68 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut52 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_2 of { happy_var_2 -> - happyIn52 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_69 = happySpecReduce_0 21# happyReduction_69 -happyReduction_69 = happyIn53 - ([] - ) - -happyReduce_70 = happySpecReduce_2 21# happyReduction_70 -happyReduction_70 happy_x_2 - happy_x_1 - = case happyOut53 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_2 of { happy_var_2 -> - happyIn53 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_71 = happySpecReduce_0 22# happyReduction_71 -happyReduction_71 = happyIn54 - ([] - ) - -happyReduce_72 = happySpecReduce_2 22# happyReduction_72 -happyReduction_72 happy_x_2 - happy_x_1 - = case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_2 of { happy_var_2 -> - happyIn54 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_73 = happySpecReduce_0 23# happyReduction_73 -happyReduction_73 = happyIn55 - ([] - ) - -happyReduce_74 = happySpecReduce_3 23# happyReduction_74 -happyReduction_74 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn55 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_75 = happySpecReduce_0 24# happyReduction_75 -happyReduction_75 = happyIn56 - ([] - ) - -happyReduce_76 = happySpecReduce_2 24# happyReduction_76 -happyReduction_76 happy_x_2 - happy_x_1 - = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn56 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_77 = happySpecReduce_0 25# happyReduction_77 -happyReduction_77 = happyIn57 - ([] - ) - -happyReduce_78 = happySpecReduce_2 25# happyReduction_78 -happyReduction_78 happy_x_2 - happy_x_1 - = case happyOut57 happy_x_1 of { happy_var_1 -> - case happyOut42 happy_x_2 of { happy_var_2 -> - happyIn57 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_79 = happySpecReduce_0 26# happyReduction_79 -happyReduction_79 = happyIn58 - ([] - ) - -happyReduce_80 = happySpecReduce_2 26# happyReduction_80 -happyReduction_80 happy_x_2 - happy_x_1 - = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut44 happy_x_2 of { happy_var_2 -> - happyIn58 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_81 = happySpecReduce_0 27# happyReduction_81 -happyReduction_81 = happyIn59 - ([] - ) - -happyReduce_82 = happySpecReduce_2 27# happyReduction_82 -happyReduction_82 happy_x_2 - happy_x_1 - = case happyOut59 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn59 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_83 = happySpecReduce_0 28# happyReduction_83 -happyReduction_83 = happyIn60 - ([] - ) - -happyReduce_84 = happySpecReduce_3 28# happyReduction_84 -happyReduction_84 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - happyIn60 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_85 = happySpecReduce_0 29# happyReduction_85 -happyReduction_85 = happyIn61 - ([] - ) - -happyReduce_86 = happySpecReduce_3 29# happyReduction_86 -happyReduction_86 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn61 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_87 = happySpecReduce_0 30# happyReduction_87 -happyReduction_87 = happyIn62 - ([] - ) - -happyReduce_88 = happySpecReduce_3 30# happyReduction_88 -happyReduction_88 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_2 of { happy_var_2 -> - happyIn62 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_89 = happySpecReduce_0 31# happyReduction_89 -happyReduction_89 = happyIn63 - ([] - ) - -happyReduce_90 = happySpecReduce_3 31# happyReduction_90 -happyReduction_90 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut63 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn63 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyReduce_91 = happySpecReduce_0 32# happyReduction_91 -happyReduction_91 = happyIn64 - ([] - ) - -happyReduce_92 = happySpecReduce_3 32# happyReduction_92 -happyReduction_92 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut64 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn64 - (flip (:) happy_var_1 happy_var_2 - )}} - -happyNewToken action sts stk [] = - happyDoAction 27# (error "reading EOF!") action sts stk [] - -happyNewToken action sts stk (tk:tks) = - let cont i = happyDoAction i tk action sts stk tks in - case tk of { - PT _ (TS ":=") -> cont 1#; - PT _ (TS "->") -> cont 2#; - PT _ (TS ".") -> cont 3#; - PT _ (TS "(") -> cont 4#; - PT _ (TS ")") -> cont 5#; - PT _ (TS "[") -> cont 6#; - PT _ (TS "]") -> cont 7#; - PT _ (TS ",") -> cont 8#; - PT _ (TS "?") -> cont 9#; - PT _ (TS "-") -> cont 10#; - PT _ (TS "[-") -> cont 11#; - PT _ (TS "-]") -> cont 12#; - PT _ (TS "!") -> cont 13#; - PT _ (TS "[|") -> cont 14#; - PT _ (TS "|]") -> cont 15#; - PT _ (TS "++") -> cont 16#; - PT _ (TS "=>") -> cont 17#; - PT _ (TS "=") -> cont 18#; - PT _ (TS "$") -> cont 19#; - PT _ (TS ";") -> cont 20#; - PT _ (TS "|") -> cont 21#; - PT _ (TI happy_dollar_dollar) -> cont 22#; - PT _ (TL happy_dollar_dollar) -> cont 23#; - PT _ (TV happy_dollar_dollar) -> cont 24#; - PT _ (TD happy_dollar_dollar) -> cont 25#; - _ -> cont 26#; - _ -> happyError' (tk:tks) - } - -happyError_ tk tks = happyError' (tk:tks) - -happyThen :: () => Err a -> (a -> Err b) -> Err b -happyThen = (thenM) -happyReturn :: () => a -> Err a -happyReturn = (returnM) -happyThen1 m k tks = (thenM) m (\a -> k a tks) -happyReturn1 :: () => a -> b -> Err a -happyReturn1 = \a tks -> (returnM) a -happyError' :: () => [Token] -> Err a -happyError' = happyError - -pFGrammar tks = happySomeParser where - happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut36 x)) - -pFRule tks = happySomeParser where - happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut37 x)) - -pAbstract tks = happySomeParser where - happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut38 x)) - -pFSymbol tks = happySomeParser where - happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut39 x)) - -pFCat tks = happySomeParser where - happySomeParser = happyThen (happyParse 4# tks) (\x -> happyReturn (happyOut40 x)) - -pPathEl tks = happySomeParser where - happySomeParser = happyThen (happyParse 5# tks) (\x -> happyReturn (happyOut41 x)) - -pPathTerm tks = happySomeParser where - happySomeParser = happyThen (happyParse 6# tks) (\x -> happyReturn (happyOut42 x)) - -pName tks = happySomeParser where - happySomeParser = happyThen (happyParse 7# tks) (\x -> happyReturn (happyOut43 x)) - -pProfile tks = happySomeParser where - happySomeParser = happyThen (happyParse 8# tks) (\x -> happyReturn (happyOut44 x)) - -pForest tks = happySomeParser where - happySomeParser = happyThen (happyParse 9# tks) (\x -> happyReturn (happyOut45 x)) - -pTerm tks = happySomeParser where - happySomeParser = happyThen (happyParse 10# tks) (\x -> happyReturn (happyOut46 x)) - -pCase tks = happySomeParser where - happySomeParser = happyThen (happyParse 11# tks) (\x -> happyReturn (happyOut47 x)) - -pAssoc tks = happySomeParser where - happySomeParser = happyThen (happyParse 12# tks) (\x -> happyReturn (happyOut48 x)) - -pLabel tks = happySomeParser where - happySomeParser = happyThen (happyParse 13# tks) (\x -> happyReturn (happyOut49 x)) - -pCIdent tks = happySomeParser where - happySomeParser = happyThen (happyParse 14# tks) (\x -> happyReturn (happyOut50 x)) - -pListFRule tks = happySomeParser where - happySomeParser = happyThen (happyParse 15# tks) (\x -> happyReturn (happyOut51 x)) - -pListListFSymbol tks = happySomeParser where - happySomeParser = happyThen (happyParse 16# tks) (\x -> happyReturn (happyOut52 x)) - -pListFSymbol tks = happySomeParser where - happySomeParser = happyThen (happyParse 17# tks) (\x -> happyReturn (happyOut53 x)) - -pListFCat tks = happySomeParser where - happySomeParser = happyThen (happyParse 18# tks) (\x -> happyReturn (happyOut54 x)) - -pListListForest tks = happySomeParser where - happySomeParser = happyThen (happyParse 19# tks) (\x -> happyReturn (happyOut55 x)) - -pListForest tks = happySomeParser where - happySomeParser = happyThen (happyParse 20# tks) (\x -> happyReturn (happyOut56 x)) - -pListPathTerm tks = happySomeParser where - happySomeParser = happyThen (happyParse 21# tks) (\x -> happyReturn (happyOut57 x)) - -pListProfile tks = happySomeParser where - happySomeParser = happyThen (happyParse 22# tks) (\x -> happyReturn (happyOut58 x)) - -pListInteger tks = happySomeParser where - happySomeParser = happyThen (happyParse 23# tks) (\x -> happyReturn (happyOut59 x)) - -pListTerm tks = happySomeParser where - happySomeParser = happyThen (happyParse 24# tks) (\x -> happyReturn (happyOut60 x)) - -pListAssoc tks = happySomeParser where - happySomeParser = happyThen (happyParse 25# tks) (\x -> happyReturn (happyOut61 x)) - -pListCase tks = happySomeParser where - happySomeParser = happyThen (happyParse 26# tks) (\x -> happyReturn (happyOut62 x)) - -pListListPathEl tks = happySomeParser where - happySomeParser = happyThen (happyParse 27# tks) (\x -> happyReturn (happyOut63 x)) - -pListPathEl tks = happySomeParser where - happySomeParser = happyThen (happyParse 28# tks) (\x -> happyReturn (happyOut64 x)) - -happySeq = happyDontSeq - -returnM :: a -> Err a -returnM = return - -thenM :: Err a -> (a -> Err b) -> Err b -thenM = (>>=) - -happyError :: [Token] -> Err a -happyError ts = - Bad $ "syntax error at " ++ tokenPos ts ++ - case ts of - [] -> [] - [Err _] -> " due to lexer error" - _ -> " before " ++ unwords (map prToken (take 4 ts)) - -myLexer = tokens -{-# LINE 1 "GenericTemplate.hs" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "" #-} -{-# LINE 1 "GenericTemplate.hs" #-} --- $Id$ - - -{-# LINE 28 "GenericTemplate.hs" #-} - - -data Happy_IntList = HappyCons Int# Happy_IntList - - - - - - -{-# LINE 49 "GenericTemplate.hs" #-} - - -{-# LINE 59 "GenericTemplate.hs" #-} - - - - - - - - - - -infixr 9 `HappyStk` -data HappyStk a = HappyStk a (HappyStk a) - ------------------------------------------------------------------------------ --- starting the parse - -happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll - ------------------------------------------------------------------------------ --- Accepting the parse - --- If the current token is 0#, it means we've just accepted a partial --- parse (a %partial parser). We must ignore the saved token on the top of --- the stack in this case. -happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = - happyReturn1 ans -happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans) - ------------------------------------------------------------------------------ --- Arrays only: do the next action - - - -happyDoAction i tk st - = {- nothing -} - - - case action of - 0# -> {- nothing -} - happyFail i tk st - -1# -> {- nothing -} - happyAccept i tk st - n | (n <# (0# :: Int#)) -> {- nothing -} - - (happyReduceArr ! rule) i tk st - where rule = (I# ((negateInt# ((n +# (1# :: Int#)))))) - n -> {- nothing -} - - - happyShift new_state i tk st - where new_state = (n -# (1# :: Int#)) - where off = indexShortOffAddr happyActOffsets st - off_i = (off +# i) - check = if (off_i >=# (0# :: Int#)) - then (indexShortOffAddr happyCheck off_i ==# i) - else False - action | check = indexShortOffAddr happyTable off_i - | otherwise = indexShortOffAddr happyDefActions st - - - - - - - - - - - -indexShortOffAddr (HappyA# arr) off = -#if __GLASGOW_HASKELL__ > 500 - narrow16Int# i -#elif __GLASGOW_HASKELL__ == 500 - intToInt16# i -#else - (i `iShiftL#` 16#) `iShiftRA#` 16# -#endif - where -#if __GLASGOW_HASKELL__ >= 503 - i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low) -#else - i = word2Int# ((high `shiftL#` 8#) `or#` low) -#endif - high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#))) - low = int2Word# (ord# (indexCharOffAddr# arr off')) - off' = off *# 2# - - - - - -data HappyAddr = HappyA# Addr# - - - - ------------------------------------------------------------------------------ --- HappyState data type (not arrays) - -{-# LINE 170 "GenericTemplate.hs" #-} - ------------------------------------------------------------------------------ --- Shifting a token - -happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = - let i = (case unsafeCoerce# x of { (I# (i)) -> i }) in --- trace "shifting the error token" $ - happyDoAction i tk new_state (HappyCons (st) (sts)) (stk) - -happyShift new_state i tk st sts stk = - happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk) - --- happyReduce is specialised for the common cases. - -happySpecReduce_0 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_0 nt fn j tk st@((action)) sts stk - = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk) - -happySpecReduce_1 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk') - = let r = fn v1 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_2 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk') - = let r = fn v1 v2 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_3 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk') - = let r = fn v1 v2 v3 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happyReduce k i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyReduce k nt fn j tk st sts stk - = case happyDrop (k -# (1# :: Int#)) sts of - sts1@((HappyCons (st1@(action)) (_))) -> - let r = fn stk in -- it doesn't hurt to always seq here... - happyDoSeq r (happyGoto nt j tk st1 sts1 r) - -happyMonadReduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonadReduce k nt fn j tk st sts stk = - happyThen1 (fn stk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - -happyDrop 0# l = l -happyDrop n (HappyCons (_) (t)) = happyDrop (n -# (1# :: Int#)) t - -happyDropStk 0# l = l -happyDropStk n (x `HappyStk` xs) = happyDropStk (n -# (1#::Int#)) xs - ------------------------------------------------------------------------------ --- Moving to a new state after a reduction - - -happyGoto nt j tk st = - {- nothing -} - happyDoAction j tk new_state - where off = indexShortOffAddr happyGotoOffsets st - off_i = (off +# nt) - new_state = indexShortOffAddr happyTable off_i - - - - ------------------------------------------------------------------------------ --- Error recovery (0# is the error token) - --- parse error if we are in recovery and we fail again -happyFail 0# tk old_st _ stk = --- trace "failing" $ - happyError_ tk - -{- We don't need state discarding for our restricted implementation of - "error". In fact, it can cause some bogus parses, so I've disabled it - for now --SDM - --- discard a state -happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) = --- trace ("discarding state, depth " ++ show (length stk)) $ - happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk)) --} - --- Enter error recovery: generate an error token, --- save the old token and carry on. -happyFail i tk (action) sts stk = --- trace "entering error recovery" $ - happyDoAction 0# tk action sts ( (unsafeCoerce# (I# (i))) `HappyStk` stk) - --- Internal happy errors: - -notHappyAtAll = error "Internal Happy error\n" - ------------------------------------------------------------------------------ --- Hack to get the typechecker to accept our action functions - - -happyTcHack :: Int# -> a -> a -happyTcHack x y = y -{-# INLINE happyTcHack #-} - - ------------------------------------------------------------------------------ --- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq --- otherwise it emits --- happySeq = happyDontSeq - -happyDoSeq, happyDontSeq :: a -> b -> b -happyDoSeq a b = a `seq` b -happyDontSeq a b = b - ------------------------------------------------------------------------------ --- Don't inline any functions from the template. GHC has a nasty habit --- of deciding to inline happyGoto everywhere, which increases the size of --- the generated parser quite a bit. - - -{-# NOINLINE happyDoAction #-} -{-# NOINLINE happyTable #-} -{-# NOINLINE happyCheck #-} -{-# NOINLINE happyActOffsets #-} -{-# NOINLINE happyGotoOffsets #-} -{-# NOINLINE happyDefActions #-} - -{-# NOINLINE happyShift #-} -{-# NOINLINE happySpecReduce_0 #-} -{-# NOINLINE happySpecReduce_1 #-} -{-# NOINLINE happySpecReduce_2 #-} -{-# NOINLINE happySpecReduce_3 #-} -{-# NOINLINE happyReduce #-} -{-# NOINLINE happyMonadReduce #-} -{-# NOINLINE happyGoto #-} -{-# NOINLINE happyFail #-} - --- end of Happy Template. diff --git a/src/GF/FCFG/PrintFCFG.hs b/src/GF/FCFG/PrintFCFG.hs deleted file mode 100644 index 7489227a7..000000000 --- a/src/GF/FCFG/PrintFCFG.hs +++ /dev/null @@ -1,210 +0,0 @@ -{-# OPTIONS -fno-warn-incomplete-patterns #-} -module GF.FCFG.PrintFCFG where - --- pretty-printer generated by the BNF converter - -import GF.FCFG.AbsFCFG -import Data.Char - --- the top-level printing method -printTree :: Print a => a -> String -printTree = render . prt 0 - -type Doc = [ShowS] -> [ShowS] - -doc :: ShowS -> Doc -doc = (:) - -render :: Doc -> String -render d = rend 0 (map ($ "") $ d []) "" where - rend i ss = case ss of - "[" :ts -> showChar '[' . rend i ts - "(" :ts -> showChar '(' . rend i ts - "{" :ts -> showChar '{' . new (i+1) . rend (i+1) ts - "}" : ";":ts -> new (i-1) . space "}" . showChar ';' . new (i-1) . rend (i-1) ts - "}" :ts -> new (i-1) . showChar '}' . new (i-1) . rend (i-1) ts - ";" :ts -> showChar ';' . new i . rend i ts - t : "," :ts -> showString t . space "," . rend i ts - t : ")" :ts -> showString t . showChar ')' . rend i ts - t : "]" :ts -> showString t . showChar ']' . rend i ts - t :ts -> space t . rend i ts - _ -> id - new i = showChar '\n' . replicateS (2*i) (showChar ' ') . dropWhile isSpace - space t = showString t . (\s -> if null s then "" else (' ':s)) - -parenth :: Doc -> Doc -parenth ss = doc (showChar '(') . ss . doc (showChar ')') - -concatS :: [ShowS] -> ShowS -concatS = foldr (.) id - -concatD :: [Doc] -> Doc -concatD = foldr (.) id - -replicateS :: Int -> ShowS -> ShowS -replicateS n f = concatS (replicate n f) - --- the printer class does the job -class Print a where - prt :: Int -> a -> Doc - prtList :: [a] -> Doc - prtList = concatD . map (prt 0) - -instance Print a => Print [a] where - prt _ = prtList - -instance Print Char where - prt _ s = doc (showChar '\'' . mkEsc '\'' s . showChar '\'') - prtList s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"') - -mkEsc :: Char -> Char -> ShowS -mkEsc q s = case s of - _ | s == q -> showChar '\\' . showChar s - '\\'-> showString "\\\\" - '\n' -> showString "\\n" - '\t' -> showString "\\t" - _ -> showChar s - -prPrec :: Int -> Int -> Doc -> Doc -prPrec i j = if j (concatD []) - x:xs -> (concatD [prt 0 x , prt 0 xs]) - - -instance Print Double where - prt _ x = doc (shows x) - - -instance Print Ident where - prt _ (Ident i) = doc (showString i) - - - -instance Print FGrammar where - prt i e = case e of - FGr frules -> prPrec i 0 (concatD [prt 0 frules]) - - -instance Print FRule where - prt i e = case e of - FR abstract fsymbolss -> prPrec i 0 (concatD [prt 0 abstract , doc (showString ":=") , prt 0 fsymbolss]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , doc (showString ";") , prt 0 xs]) - -instance Print Abstract where - prt i e = case e of - Abs fcat fcats name -> prPrec i 0 (concatD [prt 0 fcat , doc (showString "->") , prt 0 fcats , doc (showString ".") , prt 0 name]) - - -instance Print FSymbol where - prt i e = case e of - FSymCat fcat n0 n -> prPrec i 0 (concatD [doc (showString "(") , prt 0 fcat , prt 0 n0 , prt 0 n , doc (showString ")")]) - FSymTok str -> prPrec i 0 (concatD [prt 0 str]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , prt 0 xs]) - -instance Print FCat where - prt i e = case e of - FC n id pathelss pathterms -> prPrec i 0 (concatD [doc (showString "(") , prt 0 n , prt 0 id , doc (showString "[") , prt 0 pathelss , doc (showString "]") , doc (showString "[") , prt 0 pathterms , doc (showString "]") , doc (showString ")")]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , prt 0 xs]) - -instance Print PathEl where - prt i e = case e of - PLabel label -> prPrec i 0 (concatD [prt 0 label]) - PTerm term -> prPrec i 0 (concatD [prt 0 term]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , doc (showString ".") , prt 0 xs]) - -instance Print PathTerm where - prt i e = case e of - PtT pathels term -> prPrec i 0 (concatD [doc (showString "(") , prt 0 pathels , doc (showString ",") , prt 0 term , doc (showString ")")]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , prt 0 xs]) - -instance Print Name where - prt i e = case e of - Nm id profiles -> prPrec i 0 (concatD [prt 0 id , doc (showString "[") , prt 0 profiles , doc (showString "]")]) - - -instance Print Profile where - prt i e = case e of - Unify ns -> prPrec i 0 (concatD [doc (showString "[") , prt 0 ns , doc (showString "]")]) - Const forest -> prPrec i 0 (concatD [prt 0 forest]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , prt 0 xs]) - -instance Print Forest where - prt i e = case e of - FMeta -> prPrec i 0 (concatD [doc (showString "?")]) - FNode id forestss -> prPrec i 0 (concatD [doc (showString "(") , prt 0 id , prt 0 forestss , doc (showString ")")]) - FString str -> prPrec i 0 (concatD [prt 0 str]) - FInt n -> prPrec i 0 (concatD [prt 0 n]) - FFloat d -> prPrec i 0 (concatD [prt 0 d]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , prt 0 xs]) - -instance Print Term where - prt i e = case e of - Arg n id pathels -> prPrec i 0 (concatD [doc (showString "(") , prt 0 n , prt 0 id , prt 0 pathels , doc (showString ")")]) - Constr cident terms -> prPrec i 0 (concatD [doc (showString "(") , prt 0 cident , doc (showString "-") , prt 0 terms , doc (showString ")")]) - Rec assocs -> prPrec i 0 (concatD [doc (showString "[") , prt 0 assocs , doc (showString "]")]) - Proj term label -> prPrec i 0 (concatD [doc (showString "(") , prt 0 term , doc (showString ".") , prt 0 label , doc (showString ")")]) - Tbl cases -> prPrec i 0 (concatD [doc (showString "[-") , prt 0 cases , doc (showString "-]")]) - Select term0 term -> prPrec i 0 (concatD [doc (showString "(") , prt 0 term0 , doc (showString "!") , prt 0 term , doc (showString ")")]) - Vars terms -> prPrec i 0 (concatD [doc (showString "[|") , prt 0 terms , doc (showString "|]")]) - Concat term0 term -> prPrec i 0 (concatD [doc (showString "(") , prt 0 term0 , doc (showString "++") , prt 0 term , doc (showString ")")]) - Tok str -> prPrec i 0 (concatD [prt 0 str]) - Empty -> prPrec i 0 (concatD [doc (showString "(") , doc (showString ")")]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) - -instance Print Case where - prt i e = case e of - Cas term0 term -> prPrec i 0 (concatD [prt 0 term0 , doc (showString "=>") , prt 0 term]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) - -instance Print Assoc where - prt i e = case e of - Ass label term -> prPrec i 0 (concatD [prt 0 label , doc (showString "=") , prt 0 term]) - - prtList es = case es of - [] -> (concatD []) - x:xs -> (concatD [prt 0 x , doc (showString ",") , prt 0 xs]) - -instance Print Label where - prt i e = case e of - L id -> prPrec i 0 (concatD [prt 0 id]) - LV n -> prPrec i 0 (concatD [doc (showString "$") , prt 0 n]) - - -instance Print CIdent where - prt i e = case e of - CIQ id0 id -> prPrec i 0 (concatD [prt 0 id0 , doc (showString ".") , prt 0 id]) - - - diff --git a/src/GF/FCFG/ToFCFG.hs b/src/GF/FCFG/ToFCFG.hs deleted file mode 100644 index 57e67113d..000000000 --- a/src/GF/FCFG/ToFCFG.hs +++ /dev/null @@ -1,101 +0,0 @@ ----------------------------------------------------------------------- --- | --- Maintainer : Aarne Ranta --- Stability : (stable) --- Portability : (portable) --- --- mapping from GF-internal FGrammar to bnfc-defined FCFG ------------------------------------------------------------------------------ - -module GF.FCFG.ToFCFG (printFGrammar) where - -import GF.Formalism.FCFG -import GF.Formalism.SimpleGFC -import GF.Infra.Ident -import qualified GF.FCFG.AbsFCFG as F - -import GF.FCFG.PrintFCFG (printTree) - -import qualified GF.Canon.AbsGFC as C - -import Control.Monad (liftM) -import Data.List (groupBy) -import Data.Array - -import GF.Formalism.Utilities -import GF.Formalism.GCFG - -import GF.Infra.Print - -type FToken = String - --- this is the main function used -printFGrammar :: FGrammar -> String -printFGrammar = undefined {- printTree . fgrammar - -fgrammar :: FCFGrammar FCat Name FToken -> F.FGrammar -fgrammar = F.FGr . map frule - -frule :: FCFRule FCat Name FToken -> F.FRule -frule (FRule ab rhs) = - F.FR (abstract ab) [[fsymbol sym | (_,sym) <- assocs syms] | (_,syms) <- assocs rhs] - -abstract :: Abstract FCat Name -> F.Abstract -abstract (Abs cat cats n) = F.Abs (fcat cat) (map fcat cats) (name n) - -fsymbol :: FSymbol FCat FToken -> F.FSymbol -fsymbol fs = case fs of - FSymCat fc i j -> F.FSymCat (fcat fc) (toInteger i) (toInteger j) - FSymTok s -> F.FSymTok s - -fcat :: FCat -> F.FCat -fcat (FCat i id ps pts) = - F.FC (toInteger i) (ident id) [map pathel p | Path p <- ps] - [F.PtT (map pathel p) (term t) | (Path p,t) <- pts] - -name :: Name -> F.Name -name (Name id profs) = F.Nm (ident id) (map profile profs) - -pathel :: Either C.Label (Term SCat FToken) -> F.PathEl -pathel lt = case lt of - Left lab -> F.PLabel $ label lab - Right trm -> F.PTerm $ term trm - -path (Path p) = map pathel p - -profile :: Profile (SyntaxForest Fun) -> F.Profile -profile p = case p of - Unify is -> F.Unify (map toInteger is) - Constant sf -> F.Const (forest sf) - -forest :: SyntaxForest Fun -> F.Forest -forest f = case f of - FMeta -> F.FMeta - FNode id fss -> F.FNode (ident id) (map (map forest) fss) - FString s -> F.FString s - FInt i -> F.FInt i - FFloat d -> F.FFloat d - -term :: Term SCat FToken -> F.Term -term tr = case tr of - Arg i id p -> F.Arg (toInteger i) (ident id) (path p) - Rec rs -> F.Rec [F.Ass (label l) (term t) | (l,t) <- rs] - Tbl cs -> F.Tbl [F.Cas (term p) (term v) | (p,v) <- cs] - c :^ ts -> F.Constr (constr c) (map term ts) - t :. l -> F.Proj (term t) (label l) - t :++ u -> F.Concat (term t) (term u) - t :! u -> F.Select (term t) (term u) - Variants ts -> F.Vars $ map term ts - Token s -> F.Tok s - Empty -> F.Empty - -label :: C.Label -> F.Label -label b = case b of - C.L x -> F.L $ ident x - C.LV i -> F.LV i - -ident :: Ident -> F.Ident -ident = F.Ident . prIdent --- is information lost? - -constr (C.CIQ m c) = F.CIQ (ident m) (ident c) --} \ No newline at end of file diff --git a/src/GF/UseGrammar/Custom.hs b/src/GF/UseGrammar/Custom.hs index ea115b207..c1b9caa19 100644 --- a/src/GF/UseGrammar/Custom.hs +++ b/src/GF/UseGrammar/Custom.hs @@ -40,7 +40,6 @@ import qualified GF.Canon.GFCC.DataGFCC as DataGFCC import qualified GF.Canon.CanonToJS as JS (prCanon2js) import qualified GF.Source.AbsGF as GF import qualified GF.Grammar.MMacros as MM -import GF.FCFG.ToFCFG import GF.Grammar.AbsCompute import GF.Grammar.TypeCheck import GF.UseGrammar.Generate @@ -301,7 +300,6 @@ customGrammarPrinter = -- grammar conversions: ,(strCI "mcfg", \_ -> Prt.prt . stateMCFG) ,(strCI "fcfg", \_ -> Prt.prt . stateFCFG) - ,(strCI "bfcfg", \_ -> printFGrammar . stateFCFG) ,(strCI "cfg", \_ -> Prt.prt . stateCFG) ,(strCI "pinfo", \_ -> Prt.prt . statePInfo) ,(strCI "abstract", \_ -> Prt.prtAfter "\n" . Cnv.gfc2abstract . stateGrammarLang)