cimple 0.0.20 → 0.0.21
raw patch · 9 files changed
+21/−4 lines, 9 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.Cimple: KwOwner :: LexemeClass
+ Language.Cimple: TyOwner :: a -> NodeF lexeme a
Files
- cimple.cabal +2/−2
- src/Language/Cimple/Ast.hs +1/−0
- src/Language/Cimple/Lexer.x +1/−0
- src/Language/Cimple/MapAst.hs +2/−0
- src/Language/Cimple/Parser.y +8/−1
- src/Language/Cimple/Pretty.hs +3/−1
- src/Language/Cimple/Tokens.hs +1/−0
- src/Language/Cimple/TraverseAst.hs +2/−0
- test/Language/CimpleSpec.hs +1/−0
cimple.cabal view
@@ -1,12 +1,12 @@ name: cimple-version: 0.0.20+version: 0.0.21 synopsis: Simple C-like programming language homepage: https://toktok.github.io/ license: GPL-3 license-file: LICENSE author: Iphigenia Df <iphydf@gmail.com> maintainer: Iphigenia Df <iphydf@gmail.com>-copyright: Copyright (c) 2016-2022, Iphigenia Df+copyright: Copyright (c) 2016-2024, Iphigenia Df category: Data stability: Experimental cabal-version: >=1.10
src/Language/Cimple/Ast.hs view
@@ -105,6 +105,7 @@ | TyBitwise a | TyForce a | TyConst a+ | TyOwner a | TyPointer a | TyStruct lexeme | TyFunc lexeme
src/Language/Cimple/Lexer.x view
@@ -167,6 +167,7 @@ <0,ppSC> "if" { mkL KwIf } <0,ppSC> "non_null" { mkL KwNonNull } <0,ppSC> "nullable" { mkL KwNullable }+<0,ppSC> "owner" { mkL KwOwner } <0,ppSC> "return" { mkL KwReturn } <0,ppSC> "sizeof" { mkL KwSizeof } <0,ppSC> "static" { mkL KwStatic }
src/Language/Cimple/MapAst.hs view
@@ -333,6 +333,8 @@ Fix <$> (TyForce <$> recurse ty) TyConst ty -> Fix <$> (TyConst <$> recurse ty)+ TyOwner ty ->+ Fix <$> (TyOwner <$> recurse ty) TyPointer ty -> Fix <$> (TyPointer <$> recurse ty) TyStruct name ->
src/Language/Cimple/Parser.y view
@@ -60,6 +60,7 @@ if { L _ KwIf _ } non_null { L _ KwNonNull _ } nullable { L _ KwNullable _ }+ owner { L _ KwOwner _ } return { L _ KwReturn _ } sizeof { L _ KwSizeof _ } static { L _ KwStatic _ }@@ -687,6 +688,11 @@ | const LeafType '*' const { tyConst (tyPointer (tyConst $2)) } | const LeafType '*' const '*' { tyPointer (tyConst (tyPointer (tyConst $2))) } | const LeafType '*' const '*' const { tyConst (tyPointer (tyConst (tyPointer (tyConst $2)))) }+| LeafType '*' owner { tyOwner (tyPointer $1) }+| LeafType '*' const owner { tyOwner (tyConst (tyPointer $1)) }+| LeafType '*' '*' owner { tyOwner (tyPointer (tyPointer $1)) }+| LeafType '*' owner '*' { tyPointer (tyOwner (tyPointer $1)) }+| LeafType '*' owner '*' owner { tyOwner (tyPointer (tyOwner (tyPointer $1))) } LeafType :: { NonTerm } LeafType@@ -762,9 +768,10 @@ type Term = Lexeme Text type NonTerm = Node Term -tyPointer, tyConst :: NonTerm -> NonTerm+tyPointer, tyConst, tyOwner :: NonTerm -> NonTerm tyPointer = Fix . TyPointer tyConst = Fix . TyConst+tyOwner = Fix . TyOwner lexwrap :: (Lexeme Text -> Alex a) -> Alex a lexwrap = (alexMonadScan >>=)
src/Language/Cimple/Pretty.hs view
@@ -44,6 +44,7 @@ kwIf = dullred $ text "if" kwNonNull = dullgreen $ text "non_null" kwNullable = dullgreen $ text "nullable"+kwOwner = dullgreen $ text "owner" kwReturn = dullred $ text "return" kwSizeof = dullred $ text "sizeof" kwStaticAssert = dullred $ text "static_assert"@@ -153,7 +154,7 @@ spaceWords = \case (L c p s:ws) -> L c p (" "<>s):continue ws- [] -> []+ [] -> [] where continue [] = [] continue (w@(L _ CmtEnd _):ws) = w:continue ws@@ -408,6 +409,7 @@ TyForce ty -> kwForce <+> ty TyPointer ty -> ty <> char '*' TyConst ty -> ty <+> kwConst+ TyOwner ty -> ty <+> kwOwner TyUserDefined l -> dullgreen $ ppLexeme l TyStd l -> dullgreen $ ppLexeme l TyFunc l -> dullgreen $ ppLexeme l
src/Language/Cimple/Tokens.hs view
@@ -30,6 +30,7 @@ | KwIf | KwNonNull | KwNullable+ | KwOwner | KwReturn | KwSizeof | KwStatic
src/Language/Cimple/TraverseAst.hs view
@@ -432,6 +432,8 @@ recurse ty TyConst ty -> recurse ty+ TyOwner ty ->+ recurse ty TyPointer ty -> recurse ty TyStruct name ->
test/Language/CimpleSpec.hs view
@@ -41,6 +41,7 @@ KwIf -> "if" KwNonNull -> "non_null" KwNullable -> "nullable"+ KwOwner -> "owner" KwReturn -> "return" KwSizeof -> "sizeof" KwStatic -> "static"