BNFC-meta 0.4.0.3 → 0.5
raw patch · 8 files changed
+22/−11 lines, 8 filesdep ~template-haskellPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: template-haskell
API changes (from Hackage documentation)
- Language.LBNF.Compiletime: instance Eq Posn
- Language.LBNF.Compiletime: instance IsChar Char
- Language.LBNF.Compiletime: instance IsChar a => Literal [a]
- Language.LBNF.Compiletime: instance Literal Char
- Language.LBNF.Compiletime: instance Literal Double
- Language.LBNF.Compiletime: instance Literal Integer
- Language.LBNF.Compiletime: instance Ord Posn
- Language.LBNF.Compiletime: instance Show Posn
- Language.LBNF.Grammar: instance Eq Arg
- Language.LBNF.Grammar: instance Eq Cat
- Language.LBNF.Grammar: instance Eq Def
- Language.LBNF.Grammar: instance Eq Exp
- Language.LBNF.Grammar: instance Eq Grammar
- Language.LBNF.Grammar: instance Eq HsTyp
- Language.LBNF.Grammar: instance Eq Ident
- Language.LBNF.Grammar: instance Eq Item
- Language.LBNF.Grammar: instance Eq Label
- Language.LBNF.Grammar: instance Eq MIdent
- Language.LBNF.Grammar: instance Eq MinimumSize
- Language.LBNF.Grammar: instance Eq RHS
- Language.LBNF.Grammar: instance Eq Reg
- Language.LBNF.Grammar: instance Eq Tok
- Language.LBNF.Grammar: instance Eq Token
- Language.LBNF.Grammar: instance Functor AlexLastAcc
- Language.LBNF.Grammar: instance Ord Arg
- Language.LBNF.Grammar: instance Ord Cat
- Language.LBNF.Grammar: instance Ord Def
- Language.LBNF.Grammar: instance Ord Exp
- Language.LBNF.Grammar: instance Ord Grammar
- Language.LBNF.Grammar: instance Ord HsTyp
- Language.LBNF.Grammar: instance Ord Ident
- Language.LBNF.Grammar: instance Ord Item
- Language.LBNF.Grammar: instance Ord Label
- Language.LBNF.Grammar: instance Ord MIdent
- Language.LBNF.Grammar: instance Ord MinimumSize
- Language.LBNF.Grammar: instance Ord RHS
- Language.LBNF.Grammar: instance Ord Reg
- Language.LBNF.Grammar: instance Ord Tok
- Language.LBNF.Grammar: instance Ord Token
- Language.LBNF.Grammar: instance Print Arg
- Language.LBNF.Grammar: instance Print Cat
- Language.LBNF.Grammar: instance Print Def
- Language.LBNF.Grammar: instance Print Exp
- Language.LBNF.Grammar: instance Print Grammar
- Language.LBNF.Grammar: instance Print HsTyp
- Language.LBNF.Grammar: instance Print Ident
- Language.LBNF.Grammar: instance Print Item
- Language.LBNF.Grammar: instance Print Label
- Language.LBNF.Grammar: instance Print MIdent
- Language.LBNF.Grammar: instance Print MinimumSize
- Language.LBNF.Grammar: instance Print RHS
- Language.LBNF.Grammar: instance Print Reg
- Language.LBNF.Grammar: instance Show Arg
- Language.LBNF.Grammar: instance Show BTree
- Language.LBNF.Grammar: instance Show Cat
- Language.LBNF.Grammar: instance Show Def
- Language.LBNF.Grammar: instance Show Exp
- Language.LBNF.Grammar: instance Show Grammar
- Language.LBNF.Grammar: instance Show HsTyp
- Language.LBNF.Grammar: instance Show Ident
- Language.LBNF.Grammar: instance Show Item
- Language.LBNF.Grammar: instance Show Label
- Language.LBNF.Grammar: instance Show MIdent
- Language.LBNF.Grammar: instance Show MinimumSize
- Language.LBNF.Grammar: instance Show RHS
- Language.LBNF.Grammar: instance Show Reg
- Language.LBNF.Grammar: instance Show Tok
- Language.LBNF.Grammar: instance Show Token
- Language.LBNF.Runtime: instance Applicative ParseMonad
- Language.LBNF.Runtime: instance Eq a => Eq (ParseMonad a)
- Language.LBNF.Runtime: instance Functor ParseMonad
- Language.LBNF.Runtime: instance Monad ParseMonad
- Language.LBNF.Runtime: instance Ord a => Ord (ParseMonad a)
- Language.LBNF.Runtime: instance Print Char
- Language.LBNF.Runtime: instance Print Double
- Language.LBNF.Runtime: instance Print Integer
- Language.LBNF.Runtime: instance Print PrintPlain
- Language.LBNF.Runtime: instance Print a => Print [a]
- Language.LBNF.Runtime: instance Read a => Read (ParseMonad a)
- Language.LBNF.Runtime: instance Show a => Show (ParseMonad a)
+ Language.LBNF.Compiletime: infixl 9 !
+ Language.LBNF.Compiletime: instance GHC.Classes.Eq Language.LBNF.Compiletime.Posn
+ Language.LBNF.Compiletime: instance GHC.Classes.Ord Language.LBNF.Compiletime.Posn
+ Language.LBNF.Compiletime: instance GHC.Show.Show Language.LBNF.Compiletime.Posn
+ Language.LBNF.Compiletime: instance Language.LBNF.Compiletime.IsChar GHC.Types.Char
+ Language.LBNF.Compiletime: instance Language.LBNF.Compiletime.IsChar a => Language.LBNF.Compiletime.Literal [a]
+ Language.LBNF.Compiletime: instance Language.LBNF.Compiletime.Literal GHC.Integer.Type.Integer
+ Language.LBNF.Compiletime: instance Language.LBNF.Compiletime.Literal GHC.Types.Char
+ Language.LBNF.Compiletime: instance Language.LBNF.Compiletime.Literal GHC.Types.Double
+ Language.LBNF.Grammar: instance GHC.Base.Functor Language.LBNF.Grammar.AlexLastAcc
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Arg
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Cat
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Def
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Exp
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Grammar
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.HsTyp
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Ident
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Item
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Label
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.MIdent
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.MinimumSize
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.RHS
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Reg
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Tok
+ Language.LBNF.Grammar: instance GHC.Classes.Eq Language.LBNF.Grammar.Token
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Arg
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Cat
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Def
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Exp
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Grammar
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.HsTyp
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Ident
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Item
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Label
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.MIdent
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.MinimumSize
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.RHS
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Reg
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Tok
+ Language.LBNF.Grammar: instance GHC.Classes.Ord Language.LBNF.Grammar.Token
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Arg
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.BTree
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Cat
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Def
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Exp
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Grammar
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.HsTyp
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Ident
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Item
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Label
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.MIdent
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.MinimumSize
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.RHS
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Reg
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Tok
+ Language.LBNF.Grammar: instance GHC.Show.Show Language.LBNF.Grammar.Token
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Arg
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Cat
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Def
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Exp
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Grammar
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.HsTyp
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Ident
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Item
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Label
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.MIdent
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.MinimumSize
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.RHS
+ Language.LBNF.Grammar: instance Language.LBNF.Runtime.Print Language.LBNF.Grammar.Reg
+ Language.LBNF.Runtime: instance GHC.Base.Applicative Language.LBNF.Runtime.ParseMonad
+ Language.LBNF.Runtime: instance GHC.Base.Functor Language.LBNF.Runtime.ParseMonad
+ Language.LBNF.Runtime: instance GHC.Base.Monad Language.LBNF.Runtime.ParseMonad
+ Language.LBNF.Runtime: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.LBNF.Runtime.ParseMonad a)
+ Language.LBNF.Runtime: instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.LBNF.Runtime.ParseMonad a)
+ Language.LBNF.Runtime: instance GHC.Read.Read a => GHC.Read.Read (Language.LBNF.Runtime.ParseMonad a)
+ Language.LBNF.Runtime: instance GHC.Show.Show a => GHC.Show.Show (Language.LBNF.Runtime.ParseMonad a)
+ Language.LBNF.Runtime: instance Language.LBNF.Runtime.Print GHC.Integer.Type.Integer
+ Language.LBNF.Runtime: instance Language.LBNF.Runtime.Print GHC.Types.Char
+ Language.LBNF.Runtime: instance Language.LBNF.Runtime.Print GHC.Types.Double
+ Language.LBNF.Runtime: instance Language.LBNF.Runtime.Print Language.LBNF.Runtime.PrintPlain
+ Language.LBNF.Runtime: instance Language.LBNF.Runtime.Print a => Language.LBNF.Runtime.Print [a]
Files
- BNFC-meta.cabal +7/−2
- Bootstrap/Bootstrap.hs +3/−0
- Language/Haskell/TH/Hide.hs +2/−1
- Language/LBNF/CFtoAbstract.hs +5/−3
- Language/LBNF/CFtoLayout.hs +2/−2
- examples/jll/JavaletteLight.hs +1/−1
- examples/typesafe/Example.hs +1/−1
- examples/typesafe/Typesafe.hs +1/−1
BNFC-meta.cabal view
@@ -1,5 +1,5 @@ Name: BNFC-meta-version: 0.4.0.3+version: 0.5 cabal-Version: >= 1.6 build-type: Simple license: GPL-2@@ -37,11 +37,16 @@ examples/typesafe/Typesafe.hs Bootstrap/Bootstrap.hs +source-repository head+ type: git+ location: https://github.com/JonasDuregard/BNFC-meta++ Library Build-Depends: base>=4.2&&<5 , array>=0.4&&<0.6- , template-haskell >=2.4&&<2.11+ , template-haskell >=2.11&&<2.12 , haskell-src-meta >= 0.5 && < 1.0 , happy-meta >= 0.2.0.4 && < 0.3 , alex-meta >= 0.3.0.5 && < 0.4
Bootstrap/Bootstrap.hs view
@@ -25,6 +25,7 @@ import System.FilePath +-- This was required for some reason but I don't recall why /Jonas package = "BNFC-meta-0.2.1" nfile = file ++ ".new.bak"@@ -32,6 +33,8 @@ bfile = file ++ ".bak" bbfile = bfile ++ ".bak" +-- Running this code will generate a new LBNF quasi-quoter file using +-- an existing installation of BNFC-meta. It's all very meta. main = do c <- getCode ("Language.LBNF.Grammar") g doesFileExist bfile >>= \b -> when b $ copyFile bfile bbfile
Language/Haskell/TH/Hide.hs view
@@ -2,6 +2,7 @@ import Data.List(partition) import Language.Haskell.TH +-- Takes a list of declaration and puts them all in a where-clause, exporting only some of them by pattern-matching on a tuple. export :: [Name] -> [Dec] -> Q [Dec] export el = buildClause el . partition whereable where whereable :: Dec -> Bool@@ -19,7 +20,7 @@ (map return wh) return $ v : tl - +-- GHC has a limit on tuple size... splitTup :: ([a] -> a) -> [a] -> a splitTup tup ls = case splitAt 60 ls of (_,[]) -> tup ls
Language/LBNF/CFtoAbstract.hs view
@@ -43,19 +43,21 @@ prData :: [Name] -> Data -> Q Dec prData deriv (cat,rules) = - dataD (return []) (mkName cat) [] (map cons rules) deriv where+ dataD (return []) (mkName cat) [] Nothing (map cons rules) deriv' where cons (fun,cats) = normalC (mkName fun) $ either (map typ) (const str) cats typ = strictType notStrict . fixname str = [typ "String"]+ deriv' = mapM conT deriv + -- deriv = [''Eq,''Ord,''Show] prSpecialData :: [Name] -> CF -> Cat -> Q Dec prSpecialData deriv cf cat =- newtypeD (return []) (mkName cat) [] con deriv where+ newtypeD (return []) (mkName cat) [] Nothing con deriv' where con = normalC (mkName cat) $ [typ] typ = strictType notStrict $ contentSpec cf cat-+ deriv' = mapM conT deriv contentSpec :: CF -> Cat -> Q Type contentSpec cf cat = if isPositionCat cf cat
Language/LBNF/CFtoLayout.hs view
@@ -67,8 +67,8 @@ (id [''Token, 'Err, ''Posn, 'PT, ''Tok, 'TS, 'Pn, ''Block, 'Implicit, 'Explicit]) (map mkName ["Token", "Err", "Posn", "PT", "Tok", "TS", "Pn", "Block", "Implicit","Explicit"]) in fmap mkRename $ - fmap (DataD [] (mkName "Block") [] [NormalC (mkName "Implicit") [(NotStrict,ConT ''Int)],- NormalC (mkName "Explicit") []] [''Show]:)+ fmap (DataD [] (mkName "Block") [] Nothing [NormalC (mkName "Implicit") [(Bang NoSourceUnpackedness NoSourceStrictness,ConT ''Int)],+ NormalC (mkName "Explicit") []] [ConT ''Show]:) (makedecs top lay stop (sort (reservedWords cf ++ symbols cf))) -- Hack to make haddock work
examples/jll/JavaletteLight.hs view
@@ -5,7 +5,7 @@ import Language.LBNF.Compiletime import Language.LBNF(lbnf, dumpCode, bnfc)-bnfc [lbnf|+dumpCode [lbnf| Fun. Prog ::= Typ Ident "(" ")" "{" [Stm] "}" ;
examples/typesafe/Example.hs view
@@ -7,7 +7,7 @@ -- All variables are meta-variables. -- Variables must be declared in the function parameters -- Boolean and numeric variables are type checked by Haskell.-prg n tmp x = [$prog|+prg n tmp x = [prog| f() { n = 0; x := True ;
examples/typesafe/Typesafe.hs view
@@ -7,7 +7,7 @@ import Language.LBNF -bnfc [$lbnf|+bnfc [lbnf| antiquote "[" ":" ":]" ;