language-c-quote 0.7.5 → 0.7.6
raw patch · 8 files changed
+129/−78 lines, 8 files
Files
- Language/C/Parser/Parser.y +24/−7
- Language/C/Quote.hs +4/−0
- Language/C/Quote/C.hs +20/−14
- Language/C/Quote/CUDA.hs +20/−14
- Language/C/Quote/GCC.hs +20/−14
- Language/C/Quote/ObjC.hs +20/−14
- Language/C/Quote/OpenCL.hs +20/−14
- language-c-quote.cabal +1/−1
Language/C/Parser/Parser.y view
@@ -259,9 +259,11 @@ %name parseType type_declaration %name parseParam parameter_declaration+%name parseParams parameter_list %name parseInit initializer %name parseStm statement+%name parseStms statement_list %name parseBlockItem block_item %name parseUnit translation_unit@@ -422,7 +424,7 @@ ; return $ BlockLit (BlockVoid (srclocOf $1)) $2 items ($1 `srcspan` $3) } }- | '^' '(' parameter_list ')' attributes_opt compound_statement+ | '^' '(' parameter_list_ ')' attributes_opt compound_statement {% do { assertObjCEnabled ($1 <--> $6) "To use blocks, enable Objective-C support" ; let Block items _ = $6 ; return $ BlockLit (BlockParam (rev $3) ($2 `srcspan` $4)) $5 items ($1 `srcspan` $6)@@ -1536,26 +1538,30 @@ parameter_type_list :: { Params } parameter_type_list :- parameter_list+ parameter_list_ { let params = rev $1 in Params params False (srclocOf params) }- | parameter_list ',' '...'+ | parameter_list_ ',' '...' { let params = rev $1 in Params params True (params `srcspan` $3) } -parameter_list :: { RevList Param }-parameter_list:+parameter_list :: { [Param] }+parameter_list :+ parameter_list_ { rev $1 }++parameter_list_ :: { RevList Param }+parameter_list_ : parameter_declaration { rsingleton $1 } | ANTI_PARAMS { rsingleton (AntiParams (getANTI_PARAMS $1) (srclocOf $1)) }- | parameter_list ',' parameter_declaration+ | parameter_list_ ',' parameter_declaration { rcons $3 $1 }- | parameter_list ',' ANTI_PARAMS+ | parameter_list_ ',' ANTI_PARAMS { rcons (AntiParams (getANTI_PARAMS $3) (srclocOf $3)) $1 } parameter_declaration :: { Param }@@ -1778,6 +1784,17 @@ | objc_at_statement { $1 } | ANTI_PRAGMA { AntiPragma (getANTI_PRAGMA $1) (srclocOf $1) } | ANTI_STM { AntiStm (getANTI_STM $1) (srclocOf $1) }++statement_list :: { [Stm] }+statement_list :+ statement_list_ { rev $1 }++statement_list_ :: { RevList Stm }+statement_list_ :+ statement { rsingleton $1 }+ | ANTI_STMS { rsingleton (AntiStms (getANTI_STMS $1) (srclocOf $1)) }+ | statement_list_ statement { rcons $2 $1 }+ | statement_list_ ANTI_STMS { rcons (AntiStms (getANTI_STMS $2) (srclocOf $2)) $1 } labeled_statement :: { Stm } labeled_statement :
Language/C/Quote.hs view
@@ -39,6 +39,8 @@ -- -- [@cstm@] Statement, of type @'Stm'@. --+-- [@cstms@] A list of statements, of type @['Stm']@.+-- -- [@citem@] Block item, of type @'BlockItem'@. A block item is either a -- declaration or a statement. --@@ -47,6 +49,8 @@ -- [@cinit@] Initializer, of type @'Initializer'@. -- -- [@cparam@] Declaration of a function parameter, of type @'Param'@.+--+-- [@cparams@] Declaration of function parameters, of type @'[Param]'@. -- -- [@csdecl@] Declaration of a struct member, of type @'FieldGroup'@. --
Language/C/Quote/C.hs view
@@ -7,6 +7,8 @@ -- Maintainer : mainland@cs.drexel.edu module Language.C.Quote.C (+ ToIdent(..),+ ToConst(..), ToExp(..), cexp, cedecl,@@ -15,8 +17,10 @@ cenum, cty, cparam,+ cparams, cinit, cstm,+ cstms, citem, cunit, cfun@@ -24,7 +28,7 @@ import qualified Language.C.Parser as P import qualified Language.C.Syntax as C-import Language.C.Quote.Base (ToExp(..), quasiquote)+import Language.C.Quote.Base (ToIdent(..), ToConst(..), ToExp(..), quasiquote) import Language.Haskell.TH.Quote (QuasiQuoter) exts :: [C.Extensions]@@ -33,17 +37,19 @@ typenames :: [String] typenames = [] -cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, csdecl, cstm :: QuasiQuoter+cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, cparams, csdecl, cstm, cstms :: QuasiQuoter citem, cty, cunit :: QuasiQuoter-cdecl = quasiquote exts typenames P.parseDecl-cedecl = quasiquote exts typenames P.parseEdecl-cenum = quasiquote exts typenames P.parseEnum-cexp = quasiquote exts typenames P.parseExp-cfun = quasiquote exts typenames P.parseFunc-cinit = quasiquote exts typenames P.parseInit-cparam = quasiquote exts typenames P.parseParam-csdecl = quasiquote exts typenames P.parseStructDecl-cstm = quasiquote exts typenames P.parseStm-citem = quasiquote exts typenames P.parseBlockItem-cty = quasiquote exts typenames P.parseType-cunit = quasiquote exts typenames P.parseUnit+cdecl = quasiquote exts typenames P.parseDecl+cedecl = quasiquote exts typenames P.parseEdecl+cenum = quasiquote exts typenames P.parseEnum+cexp = quasiquote exts typenames P.parseExp+cfun = quasiquote exts typenames P.parseFunc+cinit = quasiquote exts typenames P.parseInit+cparam = quasiquote exts typenames P.parseParam+cparams = quasiquote exts typenames P.parseParams+csdecl = quasiquote exts typenames P.parseStructDecl+cstm = quasiquote exts typenames P.parseStm+cstms = quasiquote exts typenames P.parseStms+citem = quasiquote exts typenames P.parseBlockItem+cty = quasiquote exts typenames P.parseType+cunit = quasiquote exts typenames P.parseUnit
Language/C/Quote/CUDA.hs view
@@ -7,6 +7,8 @@ -- Maintainer : mainland@cs.drexel.edu module Language.C.Quote.CUDA (+ ToIdent(..),+ ToConst(..), ToExp(..), cexp, cedecl,@@ -15,8 +17,10 @@ cenum, cty, cparam,+ cparams, cinit, cstm,+ cstms, citem, cunit, cfun@@ -24,7 +28,7 @@ import qualified Language.C.Parser as P import qualified Language.C.Syntax as C-import Language.C.Quote.Base (ToExp(..), quasiquote)+import Language.C.Quote.Base (ToIdent(..), ToConst(..), ToExp(..), quasiquote) import Language.Haskell.TH.Quote (QuasiQuoter) exts :: [C.Extensions]@@ -41,17 +45,19 @@ typeN :: Int -> String -> [String] typeN k typename = [typename ++ show n | n <- [1..k]] -cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, csdecl, cstm :: QuasiQuoter+cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, cparams, csdecl, cstm, cstms :: QuasiQuoter citem, cty, cunit :: QuasiQuoter-cdecl = quasiquote exts typenames P.parseDecl-cedecl = quasiquote exts typenames P.parseEdecl-cenum = quasiquote exts typenames P.parseEnum-cexp = quasiquote exts typenames P.parseExp-cfun = quasiquote exts typenames P.parseFunc-cinit = quasiquote exts typenames P.parseInit-cparam = quasiquote exts typenames P.parseParam-csdecl = quasiquote exts typenames P.parseStructDecl-cstm = quasiquote exts typenames P.parseStm-citem = quasiquote exts typenames P.parseBlockItem-cty = quasiquote exts typenames P.parseType-cunit = quasiquote exts typenames P.parseUnit+cdecl = quasiquote exts typenames P.parseDecl+cedecl = quasiquote exts typenames P.parseEdecl+cenum = quasiquote exts typenames P.parseEnum+cexp = quasiquote exts typenames P.parseExp+cfun = quasiquote exts typenames P.parseFunc+cinit = quasiquote exts typenames P.parseInit+cparam = quasiquote exts typenames P.parseParam+cparams = quasiquote exts typenames P.parseParams+csdecl = quasiquote exts typenames P.parseStructDecl+cstm = quasiquote exts typenames P.parseStm+cstms = quasiquote exts typenames P.parseStms+citem = quasiquote exts typenames P.parseBlockItem+cty = quasiquote exts typenames P.parseType+cunit = quasiquote exts typenames P.parseUnit
Language/C/Quote/GCC.hs view
@@ -7,6 +7,8 @@ -- Maintainer : mainland@cs.drexel.edu module Language.C.Quote.GCC (+ ToIdent(..),+ ToConst(..), ToExp(..), cexp, cedecl,@@ -15,8 +17,10 @@ cenum, cty, cparam,+ cparams, cinit, cstm,+ cstms, citem, cunit, cfun@@ -24,7 +28,7 @@ import qualified Language.C.Parser as P import qualified Language.C.Syntax as C-import Language.C.Quote.Base (ToExp(..), quasiquote)+import Language.C.Quote.Base (ToIdent(..), ToConst(..), ToExp(..), quasiquote) import Language.Haskell.TH.Quote (QuasiQuoter) exts :: [C.Extensions]@@ -33,17 +37,19 @@ typenames :: [String] typenames = [] -cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, csdecl, cstm :: QuasiQuoter+cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, cparams, csdecl, cstm, cstms :: QuasiQuoter citem, cty, cunit :: QuasiQuoter-cdecl = quasiquote exts typenames P.parseDecl-cedecl = quasiquote exts typenames P.parseEdecl-cenum = quasiquote exts typenames P.parseEnum-cexp = quasiquote exts typenames P.parseExp-cfun = quasiquote exts typenames P.parseFunc-cinit = quasiquote exts typenames P.parseInit-cparam = quasiquote exts typenames P.parseParam-csdecl = quasiquote exts typenames P.parseStructDecl-cstm = quasiquote exts typenames P.parseStm-citem = quasiquote exts typenames P.parseBlockItem-cty = quasiquote exts typenames P.parseType-cunit = quasiquote exts typenames P.parseUnit+cdecl = quasiquote exts typenames P.parseDecl+cedecl = quasiquote exts typenames P.parseEdecl+cenum = quasiquote exts typenames P.parseEnum+cexp = quasiquote exts typenames P.parseExp+cfun = quasiquote exts typenames P.parseFunc+cinit = quasiquote exts typenames P.parseInit+cparam = quasiquote exts typenames P.parseParam+cparams = quasiquote exts typenames P.parseParams+csdecl = quasiquote exts typenames P.parseStructDecl+cstm = quasiquote exts typenames P.parseStm+cstms = quasiquote exts typenames P.parseStms+citem = quasiquote exts typenames P.parseBlockItem+cty = quasiquote exts typenames P.parseType+cunit = quasiquote exts typenames P.parseUnit
Language/C/Quote/ObjC.hs view
@@ -8,6 +8,8 @@ -- Maintainer : mainland@cs.drexel.edu module Language.C.Quote.ObjC (+ ToIdent(..),+ ToConst(..), ToExp(..), cexp, cedecl,@@ -16,8 +18,10 @@ cenum, cty, cparam,+ cparams, cinit, cstm,+ cstms, citem, cunit, cfun@@ -25,7 +29,7 @@ import qualified Language.C.Parser as P import qualified Language.C.Syntax as C-import Language.C.Quote.Base (ToExp(..), quasiquote)+import Language.C.Quote.Base (ToIdent(..), ToConst(..), ToExp(..), quasiquote) import Language.Haskell.TH.Quote (QuasiQuoter) exts :: [C.Extensions]@@ -34,17 +38,19 @@ typenames :: [String] typenames = ["id"] -cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, csdecl, cstm :: QuasiQuoter+cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, cparams, csdecl, cstm, cstms :: QuasiQuoter citem, cty, cunit :: QuasiQuoter-cdecl = quasiquote exts typenames P.parseDecl-cedecl = quasiquote exts typenames P.parseEdecl-cenum = quasiquote exts typenames P.parseEnum-cexp = quasiquote exts typenames P.parseExp-cfun = quasiquote exts typenames P.parseFunc-cinit = quasiquote exts typenames P.parseInit-cparam = quasiquote exts typenames P.parseParam-csdecl = quasiquote exts typenames P.parseStructDecl-cstm = quasiquote exts typenames P.parseStm-citem = quasiquote exts typenames P.parseBlockItem-cty = quasiquote exts typenames P.parseType-cunit = quasiquote exts typenames P.parseUnit+cdecl = quasiquote exts typenames P.parseDecl+cedecl = quasiquote exts typenames P.parseEdecl+cenum = quasiquote exts typenames P.parseEnum+cexp = quasiquote exts typenames P.parseExp+cfun = quasiquote exts typenames P.parseFunc+cinit = quasiquote exts typenames P.parseInit+cparam = quasiquote exts typenames P.parseParam+cparams = quasiquote exts typenames P.parseParams+csdecl = quasiquote exts typenames P.parseStructDecl+cstm = quasiquote exts typenames P.parseStm+cstms = quasiquote exts typenames P.parseStms+citem = quasiquote exts typenames P.parseBlockItem+cty = quasiquote exts typenames P.parseType+cunit = quasiquote exts typenames P.parseUnit
Language/C/Quote/OpenCL.hs view
@@ -6,6 +6,8 @@ -- Maintainer : mainland@cs.drexel.edu module Language.C.Quote.OpenCL (+ ToIdent(..),+ ToConst(..), ToExp(..), cexp, cedecl,@@ -14,8 +16,10 @@ cenum, cty, cparam,+ cparams, cinit, cstm,+ cstms, citem, cunit, cfun@@ -23,7 +27,7 @@ import qualified Language.C.Parser as P import qualified Language.C.Syntax as C-import Language.C.Quote.Base (ToExp(..), quasiquote)+import Language.C.Quote.Base (ToIdent(..), ToConst(..), ToExp(..), quasiquote) import Language.Haskell.TH.Quote (QuasiQuoter) exts :: [C.Extensions]@@ -45,17 +49,19 @@ typeN :: String -> [String] typeN typename = [typename ++ show n | n <- [2, 3, 4, 8, 16 :: Integer]] -cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, csdecl, cstm :: QuasiQuoter+cdecl, cedecl, cenum, cexp, cfun, cinit, cparam, cparams, csdecl, cstm, cstms :: QuasiQuoter citem, cty, cunit :: QuasiQuoter-cdecl = quasiquote exts typenames P.parseDecl-cedecl = quasiquote exts typenames P.parseEdecl-cenum = quasiquote exts typenames P.parseEnum-cexp = quasiquote exts typenames P.parseExp-cfun = quasiquote exts typenames P.parseFunc-cinit = quasiquote exts typenames P.parseInit-cparam = quasiquote exts typenames P.parseParam-csdecl = quasiquote exts typenames P.parseStructDecl-cstm = quasiquote exts typenames P.parseStm-citem = quasiquote exts typenames P.parseBlockItem-cty = quasiquote exts typenames P.parseType-cunit = quasiquote exts typenames P.parseUnit+cdecl = quasiquote exts typenames P.parseDecl+cedecl = quasiquote exts typenames P.parseEdecl+cenum = quasiquote exts typenames P.parseEnum+cexp = quasiquote exts typenames P.parseExp+cfun = quasiquote exts typenames P.parseFunc+cinit = quasiquote exts typenames P.parseInit+cparam = quasiquote exts typenames P.parseParam+cparams = quasiquote exts typenames P.parseParams+csdecl = quasiquote exts typenames P.parseStructDecl+cstm = quasiquote exts typenames P.parseStm+cstms = quasiquote exts typenames P.parseStms+citem = quasiquote exts typenames P.parseBlockItem+cty = quasiquote exts typenames P.parseType+cunit = quasiquote exts typenames P.parseUnit
language-c-quote.cabal view
@@ -1,5 +1,5 @@ name: language-c-quote-version: 0.7.5+version: 0.7.6 cabal-version: >= 1.10 license: BSD3 license-file: LICENSE