language-c99-simple 0.2.1 → 0.2.2
raw patch · 4 files changed
+27/−17 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Language.C99.Simple.AST: SizeOf :: Expr -> Expr
+ Language.C99.Simple.AST: SizeOfType :: TypeName -> Expr
- Language.C99.Simple.Translate: arrowexpr :: Expr -> [Char] -> PostfixExpr
+ Language.C99.Simple.Translate: arrowexpr :: Expr -> String -> PostfixExpr
- Language.C99.Simple.Translate: dotexpr :: Expr -> [Char] -> PostfixExpr
+ Language.C99.Simple.Translate: dotexpr :: Expr -> String -> PostfixExpr
Files
- ChangeLog.md +5/−0
- language-c99-simple.cabal +1/−1
- src/Language/C99/Simple/AST.hs +3/−0
- src/Language/C99/Simple/Translate.hs +18/−16
ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for language-c99-simple +## 0.2.2 -- 2022-08-28++* Added support for `sizeof` (#12).++ ## 0.2.1 -- 2022-08-15 * Bump version number for release (#10).
language-c99-simple.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: language-c99-simple-version: 0.2.1+version: 0.2.2 synopsis: C-like AST to simplify writing C99 programs. description: This package is a wrapper on top of 'language-c99'. It provides a simpler
src/Language/C99/Simple/AST.hs view
@@ -124,6 +124,9 @@ | AssignOp AssignOp Expr Expr + | SizeOf Expr+ | SizeOfType TypeName+ data UnaryOp = Inc | Dec | Ref
src/Language/C99/Simple/Translate.hs view
@@ -201,22 +201,24 @@ transexpr :: Expr -> C.Expr transexpr e = case e of- Ident i -> wrap $ C.PrimIdent $ ident i- LitBool b -> wrap $ litbool b- LitInt i -> wrap $ litint i- LitFloat f -> wrap $ litfloat f- LitDouble d -> wrap $ litdouble d- LitString s -> wrap $ litstring s- Index arr idx -> wrap $ indexexpr arr idx- Funcall fun args -> wrap $ funcall fun args- Dot e field -> wrap $ dotexpr e field- Arrow e field -> wrap $ arrowexpr e field- InitVal ty init -> wrap $ initexpr ty init- UnaryOp op e -> wrap $ unaryop op e- Cast ty e -> wrap $ castexpr ty e- BinaryOp op e1 e2 -> binaryop op e1 e2- AssignOp op e1 e2 -> wrap $ assignop op e1 e2- Cond c e1 e2 -> wrap $ condexpr c e1 e2+ Ident i -> wrap $ C.PrimIdent $ ident i+ LitBool b -> wrap $ litbool b+ LitInt i -> wrap $ litint i+ LitFloat f -> wrap $ litfloat f+ LitDouble d -> wrap $ litdouble d+ LitString s -> wrap $ litstring s+ Index arr idx -> wrap $ indexexpr arr idx+ Funcall fun args -> wrap $ funcall fun args+ Dot e field -> wrap $ dotexpr e field+ Arrow e field -> wrap $ arrowexpr e field+ InitVal ty init -> wrap $ initexpr ty init+ UnaryOp op e -> wrap $ unaryop op e+ Cast ty e -> wrap $ castexpr ty e+ BinaryOp op e1 e2 -> binaryop op e1 e2+ AssignOp op e1 e2 -> wrap $ assignop op e1 e2+ Cond c e1 e2 -> wrap $ condexpr c e1 e2+ SizeOf e -> wrap $ C.UnarySizeExpr (wrap $ transexpr e)+ SizeOfType ty -> wrap $ C.UnarySizeType (transtypename ty) unaryop :: UnaryOp -> Expr -> C.UnaryExpr