cimple-0.0.9: Simple C-like programming language
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Cimple

Documentation

traverseAst :: (TraverseAst itext otext a, Applicative f) => AstActions f itext otext -> a -> f (Mapped itext otext a) Source #

doFiles :: AstActions f itext otext -> [(FilePath, [Node (Lexeme itext)])] -> f [(FilePath, [Node (Lexeme otext)])] -> f [(FilePath, [Node (Lexeme otext)])] Source #

doFile :: AstActions f itext otext -> (FilePath, [Node (Lexeme itext)]) -> f (FilePath, [Node (Lexeme otext)]) -> f (FilePath, [Node (Lexeme otext)]) Source #

doNodes :: AstActions f itext otext -> FilePath -> [Node (Lexeme itext)] -> f [Node (Lexeme otext)] -> f [Node (Lexeme otext)] Source #

doNode :: AstActions f itext otext -> FilePath -> Node (Lexeme itext) -> f (Node (Lexeme otext)) -> f (Node (Lexeme otext)) Source #

doLexemes :: AstActions f itext otext -> FilePath -> [Lexeme itext] -> f [Lexeme otext] -> f [Lexeme otext] Source #

doLexeme :: AstActions f itext otext -> FilePath -> Lexeme itext -> f (Lexeme otext) -> f (Lexeme otext) Source #

doText :: AstActions f itext otext -> FilePath -> itext -> f otext Source #

astActions :: Applicative f => (itext -> f otext) -> AstActions f itext otext Source #

type TextActions f itext otext = AstActions f itext otext Source #

textActions :: Applicative f => (itext -> f otext) -> TextActions f itext otext Source #

type IdentityActions f text = AstActions f text text Source #

identityActions :: Applicative f => AstActions f text text Source #

data LexemeClass Source #

Instances

Instances details
FromJSON LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

ToJSON LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

Generic LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

Associated Types

type Rep LexemeClass :: Type -> Type

Methods

from :: LexemeClass -> Rep LexemeClass x

to :: Rep LexemeClass x -> LexemeClass

Show LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

Methods

showsPrec :: Int -> LexemeClass -> ShowS

show :: LexemeClass -> String

showList :: [LexemeClass] -> ShowS

Eq LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

Methods

(==) :: LexemeClass -> LexemeClass -> Bool

(/=) :: LexemeClass -> LexemeClass -> Bool

Ord LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

type Rep LexemeClass Source # 
Instance details

Defined in Language.Cimple.Tokens

type Rep LexemeClass = D1 ('MetaData "LexemeClass" "Language.Cimple.Tokens" "cimple-0.0.9-inplace" 'False) ((((((C1 ('MetaCons "IdConst" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "IdFuncType" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "IdStdType" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "IdSueType" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "IdVar" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwBreak" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "KwCase" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KwConst" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwContinue" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "KwDefault" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwDo" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "KwElse" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwEnum" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "KwExtern" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KwFor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwGoto" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "KwIf" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KwReturn" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwSizeof" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "KwStatic" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KwStaticAssert" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwStruct" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "KwSwitch" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwTypedef" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "KwUnion" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "KwVla" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "KwVoid" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "KwWhile" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LitFalse" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "LitTrue" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LitChar" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LitInteger" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "LitString" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LitSysInclude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctAmpersand" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PctAmpersandAmpersand" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctAmpersandEq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PctArrow" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctAsterisk" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "PctAsteriskEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctCaret" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctCaretEq" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "PctColon" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctComma" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctEllipsis" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "PctEMark" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctEMarkEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctEq" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PctEqEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctGreater" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PctGreaterEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctGreaterGreater" 'PrefixI 'False) (U1 :: Type -> Type))))))) :+: (((((C1 ('MetaCons "PctGreaterGreaterEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctLBrace" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctLBrack" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "PctLess" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctLessEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctLessLess" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "PctLessLessEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctLParen" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctMinus" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PctMinusEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctMinusMinus" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PctPeriod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctPercent" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "PctPercentEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctPipe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctPipeEq" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "PctPipePipe" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctPlusEq" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "PctPlusPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctQMark" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctRBrace" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PctRBrack" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctRParen" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PctSemicolon" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PctSlash" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "PctSlashEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PctTilde" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PpDefine" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "PpDefined" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PpElif" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PpElse" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "PpEndif" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "PpIf" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PpIfdef" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "PpIfndef" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PpInclude" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "PpNewline" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PpUndef" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "CmtBlock" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CmtIndent" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CmtStart" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "CmtStartBlock" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CmtStartDoc" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CmtSpdxCopyright" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "CmtSpdxLicense" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CmtCode" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CmtWord" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CmtRef" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CmtEnd" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Error" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Eof" 'PrefixI 'False) (U1 :: Type -> Type))))))))

data Alex a Source #

Instances

Instances details
Applicative Alex Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

pure :: a -> Alex a #

(<*>) :: Alex (a -> b) -> Alex a -> Alex b

liftA2 :: (a -> b -> c) -> Alex a -> Alex b -> Alex c

(*>) :: Alex a -> Alex b -> Alex b

(<*) :: Alex a -> Alex b -> Alex a

Functor Alex Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

fmap :: (a -> b) -> Alex a -> Alex b #

(<$) :: a -> Alex b -> Alex a #

Monad Alex Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

(>>=) :: Alex a -> (a -> Alex b) -> Alex b #

(>>) :: Alex a -> Alex b -> Alex b #

return :: a -> Alex a #

data AlexPosn Source #

Constructors

AlexPn !Int !Int !Int 

Instances

Instances details
FromJSON AlexPosn Source # 
Instance details

Defined in Language.Cimple.Lexer

ToJSON AlexPosn Source # 
Instance details

Defined in Language.Cimple.Lexer

Generic AlexPosn 
Instance details

Defined in Language.Cimple.Lexer

Associated Types

type Rep AlexPosn :: Type -> Type

Methods

from :: AlexPosn -> Rep AlexPosn x

to :: Rep AlexPosn x -> AlexPosn

Show AlexPosn Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

showsPrec :: Int -> AlexPosn -> ShowS

show :: AlexPosn -> String

showList :: [AlexPosn] -> ShowS

Eq AlexPosn Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

(==) :: AlexPosn -> AlexPosn -> Bool

(/=) :: AlexPosn -> AlexPosn -> Bool

type Rep AlexPosn 
Instance details

Defined in Language.Cimple.Lexer

type Rep AlexPosn = D1 ('MetaData "AlexPosn" "Language.Cimple.Lexer" "cimple-0.0.9-inplace" 'False) (C1 ('MetaCons "AlexPn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Int))))

data Lexeme text Source #

Constructors

L AlexPosn LexemeClass text 

Instances

Instances details
Foldable Lexeme Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

fold :: Monoid m => Lexeme m -> m

foldMap :: Monoid m => (a -> m) -> Lexeme a -> m

foldMap' :: Monoid m => (a -> m) -> Lexeme a -> m

foldr :: (a -> b -> b) -> b -> Lexeme a -> b

foldr' :: (a -> b -> b) -> b -> Lexeme a -> b

foldl :: (b -> a -> b) -> b -> Lexeme a -> b

foldl' :: (b -> a -> b) -> b -> Lexeme a -> b

foldr1 :: (a -> a -> a) -> Lexeme a -> a

foldl1 :: (a -> a -> a) -> Lexeme a -> a

toList :: Lexeme a -> [a]

null :: Lexeme a -> Bool

length :: Lexeme a -> Int

elem :: Eq a => a -> Lexeme a -> Bool

maximum :: Ord a => Lexeme a -> a

minimum :: Ord a => Lexeme a -> a

sum :: Num a => Lexeme a -> a

product :: Num a => Lexeme a -> a

Traversable Lexeme Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

traverse :: Applicative f => (a -> f b) -> Lexeme a -> f (Lexeme b)

sequenceA :: Applicative f => Lexeme (f a) -> f (Lexeme a)

mapM :: Monad m => (a -> m b) -> Lexeme a -> m (Lexeme b) #

sequence :: Monad m => Lexeme (m a) -> m (Lexeme a) #

Functor Lexeme Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

fmap :: (a -> b) -> Lexeme a -> Lexeme b #

(<$) :: a -> Lexeme b -> Lexeme a #

FromJSON text => FromJSON (Lexeme text) Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

parseJSON :: Value -> Parser (Lexeme text) #

parseJSONList :: Value -> Parser [Lexeme text] #

ToJSON text => ToJSON (Lexeme text) Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

toJSON :: Lexeme text -> Value #

toEncoding :: Lexeme text -> Encoding #

toJSONList :: [Lexeme text] -> Value #

toEncodingList :: [Lexeme text] -> Encoding #

Generic (Lexeme text) Source # 
Instance details

Defined in Language.Cimple.Lexer

Associated Types

type Rep (Lexeme text) :: Type -> Type

Methods

from :: Lexeme text -> Rep (Lexeme text) x

to :: Rep (Lexeme text) x -> Lexeme text

Show text => Show (Lexeme text) Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

showsPrec :: Int -> Lexeme text -> ShowS

show :: Lexeme text -> String

showList :: [Lexeme text] -> ShowS

Eq text => Eq (Lexeme text) Source # 
Instance details

Defined in Language.Cimple.Lexer

Methods

(==) :: Lexeme text -> Lexeme text -> Bool

(/=) :: Lexeme text -> Lexeme text -> Bool

type Rep (Lexeme text) Source # 
Instance details

Defined in Language.Cimple.Lexer

type Rep (Lexeme text) = D1 ('MetaData "Lexeme" "Language.Cimple.Lexer" "cimple-0.0.9-inplace" 'False) (C1 ('MetaCons "L" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 AlexPosn) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 LexemeClass) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 text))))

lexemeText :: Lexeme text -> text Source #

lexemeLine :: Lexeme text -> Int Source #

mkL :: Applicative m => LexemeClass -> AlexInput -> Int -> m (Lexeme String) Source #

runAlex :: String -> Alex a -> Either String a Source #

data AssignOp Source #

Instances

Instances details
FromJSON AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

ToJSON AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

Generic AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep AssignOp :: Type -> Type

Methods

from :: AssignOp -> Rep AssignOp x

to :: Rep AssignOp x -> AssignOp

Read AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

readsPrec :: Int -> ReadS AssignOp #

readList :: ReadS [AssignOp] #

readPrec :: ReadPrec AssignOp #

readListPrec :: ReadPrec [AssignOp] #

Show AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> AssignOp -> ShowS

show :: AssignOp -> String

showList :: [AssignOp] -> ShowS

Eq AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: AssignOp -> AssignOp -> Bool

(/=) :: AssignOp -> AssignOp -> Bool

type Rep AssignOp Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep AssignOp = D1 ('MetaData "AssignOp" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) (((C1 ('MetaCons "AopEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AopMul" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AopDiv" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "AopPlus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AopMinus" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: ((C1 ('MetaCons "AopBitAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "AopBitOr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AopBitXor" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "AopMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "AopLsh" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AopRsh" 'PrefixI 'False) (U1 :: Type -> Type)))))

data BinaryOp Source #

Instances

Instances details
FromJSON BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

ToJSON BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Generic BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep BinaryOp :: Type -> Type

Methods

from :: BinaryOp -> Rep BinaryOp x

to :: Rep BinaryOp x -> BinaryOp

Read BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

readsPrec :: Int -> ReadS BinaryOp #

readList :: ReadS [BinaryOp] #

readPrec :: ReadPrec BinaryOp #

readListPrec :: ReadPrec [BinaryOp] #

Show BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> BinaryOp -> ShowS

show :: BinaryOp -> String

showList :: [BinaryOp] -> ShowS

Eq BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: BinaryOp -> BinaryOp -> Bool

(/=) :: BinaryOp -> BinaryOp -> Bool

type Rep BinaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep BinaryOp = D1 ('MetaData "BinaryOp" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) ((((C1 ('MetaCons "BopNe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopEq" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BopOr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopBitXor" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BopBitOr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopAnd" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BopBitAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "BopDiv" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopMul" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "BopMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopPlus" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BopMinus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopLt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "BopLe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopLsh" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "BopGt" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "BopGe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BopRsh" 'PrefixI 'False) (U1 :: Type -> Type))))))

data UnaryOp Source #

Instances

Instances details
FromJSON UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

ToJSON UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Generic UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep UnaryOp :: Type -> Type

Methods

from :: UnaryOp -> Rep UnaryOp x

to :: Rep UnaryOp x -> UnaryOp

Read UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

readsPrec :: Int -> ReadS UnaryOp #

readList :: ReadS [UnaryOp] #

readPrec :: ReadPrec UnaryOp #

readListPrec :: ReadPrec [UnaryOp] #

Show UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> UnaryOp -> ShowS

show :: UnaryOp -> String

showList :: [UnaryOp] -> ShowS

Eq UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: UnaryOp -> UnaryOp -> Bool

(/=) :: UnaryOp -> UnaryOp -> Bool

type Rep UnaryOp Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep UnaryOp = D1 ('MetaData "UnaryOp" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) ((C1 ('MetaCons "UopNot" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "UopNeg" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UopMinus" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "UopAddress" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UopDeref" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "UopIncr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UopDecr" 'PrefixI 'False) (U1 :: Type -> Type))))

data LiteralType Source #

Constructors

Char 
Int 
Bool 
String 
ConstId 

Instances

Instances details
FromJSON LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

ToJSON LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

Generic LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep LiteralType :: Type -> Type

Methods

from :: LiteralType -> Rep LiteralType x

to :: Rep LiteralType x -> LiteralType

Read LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

Show LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> LiteralType -> ShowS

show :: LiteralType -> String

showList :: [LiteralType] -> ShowS

Eq LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: LiteralType -> LiteralType -> Bool

(/=) :: LiteralType -> LiteralType -> Bool

type Rep LiteralType Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep LiteralType = D1 ('MetaData "LiteralType" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) ((C1 ('MetaCons "Char" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Int" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Bool" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "String" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ConstId" 'PrefixI 'False) (U1 :: Type -> Type))))

type Node lexeme = Fix (NodeF lexeme) Source #

data NodeF lexeme a Source #

Constructors

PreprocInclude lexeme 
PreprocDefine lexeme 
PreprocDefineConst lexeme a 
PreprocDefineMacro lexeme [a] a 
PreprocIf a [a] a 
PreprocIfdef lexeme [a] a 
PreprocIfndef lexeme [a] a 
PreprocElse [a] 
PreprocElif a [a] a 
PreprocUndef lexeme 
PreprocDefined lexeme 
PreprocScopedDefine a [a] a 
MacroBodyStmt a 
MacroBodyFunCall a 
MacroParam lexeme 
StaticAssert a lexeme 
LicenseDecl lexeme [a] 
CopyrightDecl lexeme (Maybe lexeme) [lexeme] 
Comment CommentStyle lexeme [lexeme] lexeme 
CommentBlock lexeme 
Commented a a 
ExternC [a] 
CompoundStmt [a] 
Break 
Goto lexeme 
Continue 
Return (Maybe a) 
SwitchStmt a [a] 
IfStmt a a (Maybe a) 
ForStmt a a a a 
WhileStmt a a 
DoWhileStmt a a 
Case a a 
Default a 
Label lexeme a 
VLA a lexeme a 
VarDeclStmt a (Maybe a) 
VarDecl a lexeme [a] 
DeclSpecArray (Maybe a) 
InitialiserList [a] 
UnaryExpr UnaryOp a 
BinaryExpr a BinaryOp a 
TernaryExpr a a a 
AssignExpr a AssignOp a 
ParenExpr a 
CastExpr a a 
CompoundExpr a a 
SizeofExpr a 
SizeofType a 
LiteralExpr LiteralType lexeme 
VarExpr lexeme 
MemberAccess a lexeme 
PointerAccess a lexeme 
ArrayAccess a a 
FunctionCall a [a] 
CommentExpr a a 
EnumConsts (Maybe lexeme) [a] 
EnumDecl lexeme [a] lexeme 
Enumerator lexeme (Maybe a) 
Typedef a lexeme 
TypedefFunction a 
Struct lexeme [a] 
Union lexeme [a] 
MemberDecl a (Maybe lexeme) 
TyConst a 
TyPointer a 
TyStruct lexeme 
TyFunc lexeme 
TyStd lexeme 
TyUserDefined lexeme 
FunctionDecl Scope a 
FunctionDefn Scope a a 
FunctionPrototype a lexeme [a] 
Ellipsis 
ConstDecl a lexeme 
ConstDefn Scope a lexeme a 

Instances

Instances details
Generic1 (NodeF lexeme :: TYPE LiftedRep -> Type) Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep1 (NodeF lexeme) :: k -> Type

Methods

from1 :: forall (a :: k). NodeF lexeme a -> Rep1 (NodeF lexeme) a

to1 :: forall (a :: k). Rep1 (NodeF lexeme) a -> NodeF lexeme a

FromJSON lexeme => FromJSON1 (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

liftParseJSON :: (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (NodeF lexeme a) #

liftParseJSONList :: (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser [NodeF lexeme a] #

ToJSON lexeme => ToJSON1 (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

liftToJSON :: (a -> Value) -> ([a] -> Value) -> NodeF lexeme a -> Value #

liftToJSONList :: (a -> Value) -> ([a] -> Value) -> [NodeF lexeme a] -> Value #

liftToEncoding :: (a -> Encoding) -> ([a] -> Encoding) -> NodeF lexeme a -> Encoding #

liftToEncodingList :: (a -> Encoding) -> ([a] -> Encoding) -> [NodeF lexeme a] -> Encoding #

Foldable (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

fold :: Monoid m => NodeF lexeme m -> m

foldMap :: Monoid m => (a -> m) -> NodeF lexeme a -> m

foldMap' :: Monoid m => (a -> m) -> NodeF lexeme a -> m

foldr :: (a -> b -> b) -> b -> NodeF lexeme a -> b

foldr' :: (a -> b -> b) -> b -> NodeF lexeme a -> b

foldl :: (b -> a -> b) -> b -> NodeF lexeme a -> b

foldl' :: (b -> a -> b) -> b -> NodeF lexeme a -> b

foldr1 :: (a -> a -> a) -> NodeF lexeme a -> a

foldl1 :: (a -> a -> a) -> NodeF lexeme a -> a

toList :: NodeF lexeme a -> [a]

null :: NodeF lexeme a -> Bool

length :: NodeF lexeme a -> Int

elem :: Eq a => a -> NodeF lexeme a -> Bool

maximum :: Ord a => NodeF lexeme a -> a

minimum :: Ord a => NodeF lexeme a -> a

sum :: Num a => NodeF lexeme a -> a

product :: Num a => NodeF lexeme a -> a

Eq lexeme => Eq1 (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

liftEq :: (a -> b -> Bool) -> NodeF lexeme a -> NodeF lexeme b -> Bool

Read lexeme => Read1 (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (NodeF lexeme a)

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [NodeF lexeme a]

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (NodeF lexeme a)

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [NodeF lexeme a]

Show lexeme => Show1 (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> NodeF lexeme a -> ShowS

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [NodeF lexeme a] -> ShowS

Traversable (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

traverse :: Applicative f => (a -> f b) -> NodeF lexeme a -> f (NodeF lexeme b)

sequenceA :: Applicative f => NodeF lexeme (f a) -> f (NodeF lexeme a)

mapM :: Monad m => (a -> m b) -> NodeF lexeme a -> m (NodeF lexeme b) #

sequence :: Monad m => NodeF lexeme (m a) -> m (NodeF lexeme a) #

Functor (NodeF lexeme) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

fmap :: (a -> b) -> NodeF lexeme a -> NodeF lexeme b #

(<$) :: a -> NodeF lexeme b -> NodeF lexeme a #

Generic (NodeF lexeme a) Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep (NodeF lexeme a) :: Type -> Type

Methods

from :: NodeF lexeme a -> Rep (NodeF lexeme a) x

to :: Rep (NodeF lexeme a) x -> NodeF lexeme a

(Read lexeme, Read a) => Read (NodeF lexeme a) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

readsPrec :: Int -> ReadS (NodeF lexeme a) #

readList :: ReadS [NodeF lexeme a] #

readPrec :: ReadPrec (NodeF lexeme a) #

readListPrec :: ReadPrec [NodeF lexeme a] #

(Show lexeme, Show a) => Show (NodeF lexeme a) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> NodeF lexeme a -> ShowS

show :: NodeF lexeme a -> String

showList :: [NodeF lexeme a] -> ShowS

(Eq lexeme, Eq a) => Eq (NodeF lexeme a) Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: NodeF lexeme a -> NodeF lexeme a -> Bool

(/=) :: NodeF lexeme a -> NodeF lexeme a -> Bool

type Rep1 (NodeF lexeme :: TYPE LiftedRep -> Type) Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep1 (NodeF lexeme :: TYPE LiftedRep -> Type) = D1 ('MetaData "NodeF" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) ((((((C1 ('MetaCons "PreprocInclude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "PreprocDefine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "PreprocDefineConst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "PreprocDefineMacro" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))) :+: ((C1 ('MetaCons "PreprocIf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: C1 ('MetaCons "PreprocIfdef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))) :+: (C1 ('MetaCons "PreprocIfndef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "PreprocElse" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])) :+: C1 ('MetaCons "PreprocElif" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))))) :+: (((C1 ('MetaCons "PreprocUndef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "PreprocDefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "PreprocScopedDefine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "MacroBodyStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "MacroBodyFunCall" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))) :+: ((C1 ('MetaCons "MacroParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "StaticAssert" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "LicenseDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])) :+: (C1 ('MetaCons "CopyrightDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe lexeme)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [lexeme]))) :+: C1 ('MetaCons "Comment" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 CommentStyle) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [lexeme]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)))))))) :+: ((((C1 ('MetaCons "CommentBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "Commented" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "ExternC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])) :+: C1 ('MetaCons "CompoundStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])))) :+: ((C1 ('MetaCons "Break" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Goto" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "Continue" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Return" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 Maybe)) :+: C1 ('MetaCons "SwitchStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])))))) :+: (((C1 ('MetaCons "IfStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 Maybe))) :+: C1 ('MetaCons "ForStmt" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))) :+: (C1 ('MetaCons "WhileStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: (C1 ('MetaCons "DoWhileStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "Case" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))) :+: ((C1 ('MetaCons "Default" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "VLA" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "VarDeclStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 Maybe)) :+: C1 ('MetaCons "VarDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []))))))))) :+: (((((C1 ('MetaCons "DeclSpecArray" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 Maybe)) :+: C1 ('MetaCons "InitialiserList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []))) :+: (C1 ('MetaCons "UnaryExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 UnaryOp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "BinaryExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 BinaryOp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))) :+: ((C1 ('MetaCons "TernaryExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: C1 ('MetaCons "AssignExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 AssignOp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))) :+: (C1 ('MetaCons "ParenExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: (C1 ('MetaCons "CastExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "CompoundExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))))) :+: (((C1 ('MetaCons "SizeofExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "SizeofType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "LiteralExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 LiteralType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: (C1 ('MetaCons "VarExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "MemberAccess" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))))) :+: ((C1 ('MetaCons "PointerAccess" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "ArrayAccess" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: (C1 ('MetaCons "FunctionCall" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])) :+: (C1 ('MetaCons "CommentExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "EnumConsts" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe lexeme)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []))))))) :+: ((((C1 ('MetaCons "EnumDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: C1 ('MetaCons "Enumerator" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 Maybe))) :+: (C1 ('MetaCons "Typedef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "TypedefFunction" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))) :+: ((C1 ('MetaCons "Struct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])) :+: C1 ('MetaCons "Union" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 []))) :+: (C1 ('MetaCons "MemberDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe lexeme))) :+: (C1 ('MetaCons "TyConst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :+: C1 ('MetaCons "TyPointer" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))))) :+: (((C1 ('MetaCons "TyStruct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "TyFunc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "TyStd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: (C1 ('MetaCons "TyUserDefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "FunctionDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scope) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))) :+: ((C1 ('MetaCons "FunctionDefn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scope) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)) :+: C1 ('MetaCons "FunctionPrototype" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec1 [])))) :+: (C1 ('MetaCons "Ellipsis" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ConstDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1 :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "ConstDefn" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scope) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1)))))))))
type Rep (NodeF lexeme a) Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep (NodeF lexeme a) = D1 ('MetaData "NodeF" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) ((((((C1 ('MetaCons "PreprocInclude" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "PreprocDefine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "PreprocDefineConst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "PreprocDefineMacro" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))) :+: ((C1 ('MetaCons "PreprocIf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: C1 ('MetaCons "PreprocIfdef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))) :+: (C1 ('MetaCons "PreprocIfndef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "PreprocElse" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])) :+: C1 ('MetaCons "PreprocElif" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))))) :+: (((C1 ('MetaCons "PreprocUndef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "PreprocDefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "PreprocScopedDefine" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "MacroBodyStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "MacroBodyFunCall" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))) :+: ((C1 ('MetaCons "MacroParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "StaticAssert" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "LicenseDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])) :+: (C1 ('MetaCons "CopyrightDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe lexeme)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [lexeme]))) :+: C1 ('MetaCons "Comment" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 CommentStyle) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [lexeme]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)))))))) :+: ((((C1 ('MetaCons "CommentBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "Commented" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "ExternC" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])) :+: C1 ('MetaCons "CompoundStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])))) :+: ((C1 ('MetaCons "Break" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Goto" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "Continue" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Return" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe a))) :+: C1 ('MetaCons "SwitchStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])))))) :+: (((C1 ('MetaCons "IfStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe a)))) :+: C1 ('MetaCons "ForStmt" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))) :+: (C1 ('MetaCons "WhileStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: (C1 ('MetaCons "DoWhileStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "Case" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))) :+: ((C1 ('MetaCons "Default" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "Label" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "VLA" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "VarDeclStmt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe a))) :+: C1 ('MetaCons "VarDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]))))))))) :+: (((((C1 ('MetaCons "DeclSpecArray" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe a))) :+: C1 ('MetaCons "InitialiserList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]))) :+: (C1 ('MetaCons "UnaryExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 UnaryOp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "BinaryExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 BinaryOp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))) :+: ((C1 ('MetaCons "TernaryExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: C1 ('MetaCons "AssignExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 AssignOp) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))) :+: (C1 ('MetaCons "ParenExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: (C1 ('MetaCons "CastExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "CompoundExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))))) :+: (((C1 ('MetaCons "SizeofExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "SizeofType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "LiteralExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 LiteralType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: (C1 ('MetaCons "VarExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "MemberAccess" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))))) :+: ((C1 ('MetaCons "PointerAccess" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "ArrayAccess" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: (C1 ('MetaCons "FunctionCall" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])) :+: (C1 ('MetaCons "CommentExpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "EnumConsts" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe lexeme)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]))))))) :+: ((((C1 ('MetaCons "EnumDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: C1 ('MetaCons "Enumerator" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe a)))) :+: (C1 ('MetaCons "Typedef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "TypedefFunction" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))) :+: ((C1 ('MetaCons "Struct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])) :+: C1 ('MetaCons "Union" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a]))) :+: (C1 ('MetaCons "MemberDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe lexeme))) :+: (C1 ('MetaCons "TyConst" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :+: C1 ('MetaCons "TyPointer" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))))) :+: (((C1 ('MetaCons "TyStruct" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "TyFunc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme))) :+: (C1 ('MetaCons "TyStd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: (C1 ('MetaCons "TyUserDefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "FunctionDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scope) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))) :+: ((C1 ('MetaCons "FunctionDefn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scope) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))) :+: C1 ('MetaCons "FunctionPrototype" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 [a])))) :+: (C1 ('MetaCons "Ellipsis" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ConstDecl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme)) :+: C1 ('MetaCons "ConstDefn" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Scope) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 lexeme) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a))))))))))

data Scope Source #

Constructors

Global 
Static 

Instances

Instances details
FromJSON Scope Source # 
Instance details

Defined in Language.Cimple.Ast

ToJSON Scope Source # 
Instance details

Defined in Language.Cimple.Ast

Generic Scope Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep Scope :: Type -> Type

Methods

from :: Scope -> Rep Scope x

to :: Rep Scope x -> Scope

Read Scope Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

readsPrec :: Int -> ReadS Scope #

readList :: ReadS [Scope] #

readPrec :: ReadPrec Scope #

readListPrec :: ReadPrec [Scope] #

Show Scope Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> Scope -> ShowS

show :: Scope -> String

showList :: [Scope] -> ShowS

Eq Scope Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: Scope -> Scope -> Bool

(/=) :: Scope -> Scope -> Bool

type Rep Scope Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep Scope = D1 ('MetaData "Scope" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) (C1 ('MetaCons "Global" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Static" 'PrefixI 'False) (U1 :: Type -> Type))

data CommentStyle Source #

Constructors

Regular 
Doxygen 
Block 

Instances

Instances details
FromJSON CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

ToJSON CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

Generic CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

Associated Types

type Rep CommentStyle :: Type -> Type

Read CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

Show CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

showsPrec :: Int -> CommentStyle -> ShowS

show :: CommentStyle -> String

showList :: [CommentStyle] -> ShowS

Eq CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

Methods

(==) :: CommentStyle -> CommentStyle -> Bool

(/=) :: CommentStyle -> CommentStyle -> Bool

type Rep CommentStyle Source # 
Instance details

Defined in Language.Cimple.Ast

type Rep CommentStyle = D1 ('MetaData "CommentStyle" "Language.Cimple.Ast" "cimple-0.0.9-inplace" 'False) (C1 ('MetaCons "Regular" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Doxygen" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Block" 'PrefixI 'False) (U1 :: Type -> Type)))

data AnnotF attr a Source #

Constructors

Annot 

Fields

Instances

Instances details
Generic1 (AnnotF attr :: Type -> Type) Source # 
Instance details

Defined in Language.Cimple.Annot

Associated Types

type Rep1 (AnnotF attr) :: k -> Type

Methods

from1 :: forall (a :: k). AnnotF attr a -> Rep1 (AnnotF attr) a

to1 :: forall (a :: k). Rep1 (AnnotF attr) a -> AnnotF attr a

Eq attr => Eq1 (AnnotF attr) Source # 
Instance details

Defined in Language.Cimple.Annot

Methods

liftEq :: (a -> b -> Bool) -> AnnotF attr a -> AnnotF attr b -> Bool

Read attr => Read1 (AnnotF attr) Source # 
Instance details

Defined in Language.Cimple.Annot

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (AnnotF attr a)

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [AnnotF attr a]

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (AnnotF attr a)

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [AnnotF attr a]

Show attr => Show1 (AnnotF attr) Source # 
Instance details

Defined in Language.Cimple.Annot

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> AnnotF attr a -> ShowS

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [AnnotF attr a] -> ShowS

Functor (AnnotF attr) Source # 
Instance details

Defined in Language.Cimple.Annot

Methods

fmap :: (a -> b) -> AnnotF attr a -> AnnotF attr b #

(<$) :: a -> AnnotF attr b -> AnnotF attr a #

Generic (AnnotF attr a) Source # 
Instance details

Defined in Language.Cimple.Annot

Associated Types

type Rep (AnnotF attr a) :: Type -> Type

Methods

from :: AnnotF attr a -> Rep (AnnotF attr a) x

to :: Rep (AnnotF attr a) x -> AnnotF attr a

type Rep1 (AnnotF attr :: Type -> Type) Source # 
Instance details

Defined in Language.Cimple.Annot

type Rep1 (AnnotF attr :: Type -> Type) = D1 ('MetaData "AnnotF" "Language.Cimple.Annot" "cimple-0.0.9-inplace" 'False) (C1 ('MetaCons "Annot" 'PrefixI 'True) (S1 ('MetaSel ('Just "attr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 attr) :*: S1 ('MetaSel ('Just "unAnnot") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) Par1))
type Rep (AnnotF attr a) Source # 
Instance details

Defined in Language.Cimple.Annot

type Rep (AnnotF attr a) = D1 ('MetaData "AnnotF" "Language.Cimple.Annot" "cimple-0.0.9-inplace" 'False) (C1 ('MetaCons "Annot" 'PrefixI 'True) (S1 ('MetaSel ('Just "attr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 attr) :*: S1 ('MetaSel ('Just "unAnnot") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 a)))

type AnnotNode lexeme = Fix (AnnotF () `Compose` NodeF lexeme) Source #

addAnnot :: Node lexeme -> AnnotNode lexeme Source #

removeAnnot :: AnnotNode lexeme -> Node lexeme Source #

type AstActions a = IdentityActions (State a) Text Source #

type AstActions' a = IdentityActions (State a) Text Source #