/usr/share/doc/libghc-language-c-doc/html/Language-C-Syntax-AST.html is in libghc-language-c-doc 0.4.2-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Language.C.Syntax.AST</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Language-C-Syntax-AST.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Language-C-Syntax-AST.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">language-c-0.4.2: Analysis and generation of C code</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>ghc</td></tr><tr><th>Stability</th><td>experimental</td></tr><tr><th>Maintainer</th><td>benedikt.huber@gmail.com</td></tr><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Language.C.Syntax.AST</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">C translation units
</a></li><li><a href="#g:2">Declarations
</a></li><li><a href="#g:3">Declaration attributes
</a></li><li><a href="#g:4">Declarators
</a></li><li><a href="#g:5">Initialization
</a></li><li><a href="#g:6">Statements
</a></li><li><a href="#g:7">Expressions
</a></li><li><a href="#g:8">Constants
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Abstract syntax of C source and header files.
</p><p>The tree structure is based on the grammar in Appendix A of K&R. The
abstract syntax simplifies the concrete syntax by merging similar concrete
constructs into a single type of abstract tree structure: declarations are
merged with structure declarations, parameter declarations and type names,
and declarators are merged with abstract declarators.
</p><p>With K&R we refer to ``The C Programming Language'', second edition, Brain
W. Kernighan and Dennis M. Ritchie, Prentice Hall, 1988. The AST supports all
of C99 <a href="http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf">http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf</a> and several
GNU extensions <a href="http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html">http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html</a>.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:CTranslUnit">CTranslUnit</a> = <a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CExtDecl">CExtDecl</a> = <a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CTranslationUnit">CTranslationUnit</a> a = <a href="#v:CTranslUnit">CTranslUnit</a> [<a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> a] a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CExternalDeclaration">CExternalDeclaration</a> a<ul class="subs"><li>= <a href="#v:CDeclExt">CDeclExt</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) </li><li>| <a href="#v:CFDefExt">CFDefExt</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> a) </li><li>| <a href="#v:CAsmExt">CAsmExt</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a) a </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:CFunDef">CFunDef</a> = <a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CDecl">CDecl</a> = <a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CStructUnion">CStructUnion</a> = <a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CEnum">CEnum</a> = <a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CFunctionDef">CFunctionDef</a> a = <a href="#v:CFunDef">CFunDef</a> [<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a] (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> a) [<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a] (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CDeclaration">CDeclaration</a> a = <a href="#v:CDecl">CDecl</a> [<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a] [(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> a), <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> a), <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a))] a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CStructTag">CStructTag</a> <ul class="subs"><li>= <a href="#v:CStructTag">CStructTag</a> </li><li>| <a href="#v:CUnionTag">CUnionTag</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CStructureUnion">CStructureUnion</a> a = <a href="#v:CStruct">CStruct</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> [<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a]) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CEnumeration">CEnumeration</a> a = <a href="#v:CEnum">CEnum</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> [(<a href="Language-C-Data-Ident.html#t:Ident">Ident</a>, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a))]) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</li><li class="src short"><span class="keyword">type</span> <a href="#t:CDeclSpec">CDeclSpec</a> = <a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><a href="#v:partitionDeclSpecs">partitionDeclSpecs</a> :: [<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a] -> ([<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a], [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a], [<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a], [<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a], <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a>)</li><li class="src short"><span class="keyword">type</span> <a href="#t:CStorageSpec">CStorageSpec</a> = <a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CTypeSpec">CTypeSpec</a> = <a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><a href="#v:isSUEDef">isSUEDef</a> :: <a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CTypeQual">CTypeQual</a> = <a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CAttr">CAttr</a> = <a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a<ul class="subs"><li>= <a href="#v:CStorageSpec">CStorageSpec</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a) </li><li>| <a href="#v:CTypeSpec">CTypeSpec</a> (<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a) </li><li>| <a href="#v:CTypeQual">CTypeQual</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a) </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CStorageSpecifier">CStorageSpecifier</a> a<ul class="subs"><li>= <a href="#v:CAuto">CAuto</a> a </li><li>| <a href="#v:CRegister">CRegister</a> a </li><li>| <a href="#v:CStatic">CStatic</a> a </li><li>| <a href="#v:CExtern">CExtern</a> a </li><li>| <a href="#v:CTypedef">CTypedef</a> a </li><li>| <a href="#v:CThread">CThread</a> a </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CTypeSpecifier">CTypeSpecifier</a> a<ul class="subs"><li>= <a href="#v:CVoidType">CVoidType</a> a </li><li>| <a href="#v:CCharType">CCharType</a> a </li><li>| <a href="#v:CShortType">CShortType</a> a </li><li>| <a href="#v:CIntType">CIntType</a> a </li><li>| <a href="#v:CLongType">CLongType</a> a </li><li>| <a href="#v:CFloatType">CFloatType</a> a </li><li>| <a href="#v:CDoubleType">CDoubleType</a> a </li><li>| <a href="#v:CSignedType">CSignedType</a> a </li><li>| <a href="#v:CUnsigType">CUnsigType</a> a </li><li>| <a href="#v:CBoolType">CBoolType</a> a </li><li>| <a href="#v:CComplexType">CComplexType</a> a </li><li>| <a href="#v:CSUType">CSUType</a> (<a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> a) a </li><li>| <a href="#v:CEnumType">CEnumType</a> (<a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> a) a </li><li>| <a href="#v:CTypeDef">CTypeDef</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a </li><li>| <a href="#v:CTypeOfExpr">CTypeOfExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CTypeOfType">CTypeOfType</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CTypeQualifier">CTypeQualifier</a> a<ul class="subs"><li>= <a href="#v:CConstQual">CConstQual</a> a </li><li>| <a href="#v:CVolatQual">CVolatQual</a> a </li><li>| <a href="#v:CRestrQual">CRestrQual</a> a </li><li>| <a href="#v:CInlineQual">CInlineQual</a> a </li><li>| <a href="#v:CAttrQual">CAttrQual</a> (<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a) </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CAttribute">CAttribute</a> a = <a href="#v:CAttr">CAttr</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> [<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a] a</li><li class="src short"><span class="keyword">type</span> <a href="#t:CDeclr">CDeclr</a> = <a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CDerivedDeclr">CDerivedDeclr</a> = <a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CArrSize">CArrSize</a> = <a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CDeclarator">CDeclarator</a> a = <a href="#v:CDeclr">CDeclr</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) [<a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> a] (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a)) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CDerivedDeclarator">CDerivedDeclarator</a> a<ul class="subs"><li>= <a href="#v:CPtrDeclr">CPtrDeclr</a> [<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a] a </li><li>| <a href="#v:CArrDeclr">CArrDeclr</a> [<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a] (<a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a> a) a </li><li>| <a href="#v:CFunDeclr">CFunDeclr</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Either.html#t:Either">Either</a> [<a href="Language-C-Data-Ident.html#t:Ident">Ident</a>] ([<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a], <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a>)) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CArraySize">CArraySize</a> a<ul class="subs"><li>= <a href="#v:CNoArrSize">CNoArrSize</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> </li><li>| <a href="#v:CArrSize">CArrSize</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:CInit">CInit</a> = <a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CInitList">CInitList</a> = <a href="Language-C-Syntax-AST.html#t:CInitializerList">CInitializerList</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CDesignator">CDesignator</a> = <a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CInitializer">CInitializer</a> a<ul class="subs"><li>= <a href="#v:CInitExpr">CInitExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CInitList">CInitList</a> (<a href="Language-C-Syntax-AST.html#t:CInitializerList">CInitializerList</a> a) a </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:CInitializerList">CInitializerList</a> a = [([<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> a], <a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> a)]</li><li class="src short"><span class="keyword">data</span> <a href="#t:CPartDesignator">CPartDesignator</a> a<ul class="subs"><li>= <a href="#v:CArrDesig">CArrDesig</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CMemberDesig">CMemberDesig</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a </li><li>| <a href="#v:CRangeDesig">CRangeDesig</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:CStat">CStat</a> = <a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CBlockItem">CBlockItem</a> = <a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CAsmStmt">CAsmStmt</a> = <a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CAsmOperand">CAsmOperand</a> = <a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CStatement">CStatement</a> a<ul class="subs"><li>= <a href="#v:CLabel">CLabel</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a </li><li>| <a href="#v:CCase">CCase</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a </li><li>| <a href="#v:CCases">CCases</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a </li><li>| <a href="#v:CDefault">CDefault</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a </li><li>| <a href="#v:CExpr">CExpr</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) a </li><li>| <a href="#v:CCompound">CCompound</a> [<a href="Language-C-Data-Ident.html#t:Ident">Ident</a>] [<a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> a] a </li><li>| <a href="#v:CIf">CIf</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a)) a </li><li>| <a href="#v:CSwitch">CSwitch</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a </li><li>| <a href="#v:CWhile">CWhile</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> a </li><li>| <a href="#v:CFor">CFor</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Either.html#t:Either">Either</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a)) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a </li><li>| <a href="#v:CGoto">CGoto</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a </li><li>| <a href="#v:CGotoPtr">CGotoPtr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CCont">CCont</a> a </li><li>| <a href="#v:CBreak">CBreak</a> a </li><li>| <a href="#v:CReturn">CReturn</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) a </li><li>| <a href="#v:CAsm">CAsm</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> a) a </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CCompoundBlockItem">CCompoundBlockItem</a> a<ul class="subs"><li>= <a href="#v:CBlockStmt">CBlockStmt</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) </li><li>| <a href="#v:CBlockDecl">CBlockDecl</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) </li><li>| <a href="#v:CNestedFunDef">CNestedFunDef</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> a) </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CAssemblyStatement">CAssemblyStatement</a> a = <a href="#v:CAsmStmt">CAsmStmt</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a)) (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a) [<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> a] [<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> a] [<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a] a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CAssemblyOperand">CAssemblyOperand</a> a = <a href="#v:CAsmOperand">CAsmOperand</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</li><li class="src short"><span class="keyword">type</span> <a href="#t:CExpr">CExpr</a> = <a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CExpression">CExpression</a> a<ul class="subs"><li>= <a href="#v:CComma">CComma</a> [<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a] a </li><li>| <a href="#v:CAssign">CAssign</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CCond">CCond</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CBinary">CBinary</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CCast">CCast</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CUnary">CUnary</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CSizeofExpr">CSizeofExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CSizeofType">CSizeofType</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a </li><li>| <a href="#v:CAlignofExpr">CAlignofExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CAlignofType">CAlignofType</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a </li><li>| <a href="#v:CComplexReal">CComplexReal</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CComplexImag">CComplexImag</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CIndex">CIndex</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a </li><li>| <a href="#v:CCall">CCall</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) [<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a] a </li><li>| <a href="#v:CMember">CMember</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> a </li><li>| <a href="#v:CVar">CVar</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a </li><li>| <a href="#v:CConst">CConst</a> (<a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> a) </li><li>| <a href="#v:CCompoundLit">CCompoundLit</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) (<a href="Language-C-Syntax-AST.html#t:CInitializerList">CInitializerList</a> a) a </li><li>| <a href="#v:CStatExpr">CStatExpr</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a </li><li>| <a href="#v:CLabAddrExpr">CLabAddrExpr</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a </li><li>| <a href="#v:CBuiltinExpr">CBuiltinExpr</a> (<a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> a) </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CAssignOp">CAssignOp</a> <ul class="subs"><li>= <a href="#v:CAssignOp">CAssignOp</a> </li><li>| <a href="#v:CMulAssOp">CMulAssOp</a> </li><li>| <a href="#v:CDivAssOp">CDivAssOp</a> </li><li>| <a href="#v:CRmdAssOp">CRmdAssOp</a> </li><li>| <a href="#v:CAddAssOp">CAddAssOp</a> </li><li>| <a href="#v:CSubAssOp">CSubAssOp</a> </li><li>| <a href="#v:CShlAssOp">CShlAssOp</a> </li><li>| <a href="#v:CShrAssOp">CShrAssOp</a> </li><li>| <a href="#v:CAndAssOp">CAndAssOp</a> </li><li>| <a href="#v:CXorAssOp">CXorAssOp</a> </li><li>| <a href="#v:COrAssOp">COrAssOp</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CBinaryOp">CBinaryOp</a> <ul class="subs"><li>= <a href="#v:CMulOp">CMulOp</a> </li><li>| <a href="#v:CDivOp">CDivOp</a> </li><li>| <a href="#v:CRmdOp">CRmdOp</a> </li><li>| <a href="#v:CAddOp">CAddOp</a> </li><li>| <a href="#v:CSubOp">CSubOp</a> </li><li>| <a href="#v:CShlOp">CShlOp</a> </li><li>| <a href="#v:CShrOp">CShrOp</a> </li><li>| <a href="#v:CLeOp">CLeOp</a> </li><li>| <a href="#v:CGrOp">CGrOp</a> </li><li>| <a href="#v:CLeqOp">CLeqOp</a> </li><li>| <a href="#v:CGeqOp">CGeqOp</a> </li><li>| <a href="#v:CEqOp">CEqOp</a> </li><li>| <a href="#v:CNeqOp">CNeqOp</a> </li><li>| <a href="#v:CAndOp">CAndOp</a> </li><li>| <a href="#v:CXorOp">CXorOp</a> </li><li>| <a href="#v:COrOp">COrOp</a> </li><li>| <a href="#v:CLndOp">CLndOp</a> </li><li>| <a href="#v:CLorOp">CLorOp</a> </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CUnaryOp">CUnaryOp</a> <ul class="subs"><li>= <a href="#v:CPreIncOp">CPreIncOp</a> </li><li>| <a href="#v:CPreDecOp">CPreDecOp</a> </li><li>| <a href="#v:CPostIncOp">CPostIncOp</a> </li><li>| <a href="#v:CPostDecOp">CPostDecOp</a> </li><li>| <a href="#v:CAdrOp">CAdrOp</a> </li><li>| <a href="#v:CIndOp">CIndOp</a> </li><li>| <a href="#v:CPlusOp">CPlusOp</a> </li><li>| <a href="#v:CMinOp">CMinOp</a> </li><li>| <a href="#v:CCompOp">CCompOp</a> </li><li>| <a href="#v:CNegOp">CNegOp</a> </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:CBuiltin">CBuiltin</a> = <a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">data</span> <a href="#t:CBuiltinThing">CBuiltinThing</a> a<ul class="subs"><li>= <a href="#v:CBuiltinVaArg">CBuiltinVaArg</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a </li><li>| <a href="#v:CBuiltinOffsetOf">CBuiltinOffsetOf</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) [<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> a] a </li><li>| <a href="#v:CBuiltinTypesCompatible">CBuiltinTypesCompatible</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:CConst">CConst</a> = <a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:CStrLit">CStrLit</a> = <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a></li><li class="src short"><a href="#v:cstringOfLit">cstringOfLit</a> :: <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a -> <a href="Language-C-Syntax-Constants.html#t:CString">CString</a></li><li class="src short"><a href="#v:liftStrLit">liftStrLit</a> :: <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a -> <a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> a</li><li class="src short"><span class="keyword">data</span> <a href="#t:CConstant">CConstant</a> a<ul class="subs"><li>= <a href="#v:CIntConst">CIntConst</a> <a href="Language-C-Syntax-Constants.html#t:CInteger">CInteger</a> a </li><li>| <a href="#v:CCharConst">CCharConst</a> <a href="Language-C-Syntax-Constants.html#t:CChar">CChar</a> a </li><li>| <a href="#v:CFloatConst">CFloatConst</a> <a href="Language-C-Syntax-Constants.html#t:CFloat">CFloat</a> a </li><li>| <a href="#v:CStrConst">CStrConst</a> <a href="Language-C-Syntax-Constants.html#t:CString">CString</a> a </li></ul></li><li class="src short"><span class="keyword">data</span> <a href="#t:CStringLiteral">CStringLiteral</a> a = <a href="#v:CStrLit">CStrLit</a> <a href="Language-C-Syntax-Constants.html#t:CString">CString</a> a</li></ul></div><div id="interface"><h1 id="g:1">C translation units
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CTranslUnit" class="def">CTranslUnit</a> = <a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CTranslUnit" class="link">Source</a></p><div class="doc"><p>Complete C tranlsation unit (C99 6.9, K&R A10)
</p><p>A complete C translation unit, for example representing a C header or source file.
It consists of a list of external (i.e. toplevel) declarations.
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CExtDecl" class="def">CExtDecl</a> = <a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CExtDecl" class="link">Source</a></p><div class="doc"><p>External C declaration (C99 6.9, K&R A10)
</p><p>Either a toplevel declaration, function definition or external assembler.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CTranslationUnit" class="def">CTranslationUnit</a> a <a href="src/Language-C-Syntax-AST.html#CTranslationUnit" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CTranslUnit" class="def">CTranslUnit</a> [<a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> a] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CTranslationUnit" class="caption collapser" onclick="toggleSection('i:CTranslationUnit')">Instances</p><div id="section.i:CTranslationUnit" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CTranslUnit">CTranslUnit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CTranslationUnit">CTranslationUnit</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CExternalDeclaration" class="def">CExternalDeclaration</a> a <a href="src/Language-C-Syntax-AST.html#CExternalDeclaration" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CDeclExt" class="def">CDeclExt</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CFDefExt" class="def">CFDefExt</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CAsmExt" class="def">CAsmExt</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a) a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CExternalDeclaration" class="caption collapser" onclick="toggleSection('i:CExternalDeclaration')">Instances</p><div id="section.i:CExternalDeclaration" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CExtDecl">CExtDecl</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CExternalDeclaration">CExternalDeclaration</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:2">Declarations
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CFunDef" class="def">CFunDef</a> = <a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CFunDef" class="link">Source</a></p><div class="doc"><p>C function definition (C99 6.9.1, K&R A10.1)
</p><p>A function definition is of the form <code>CFunDef specifiers declarator decllist? stmt</code>.
</p><ul><li> <code>specifiers</code> are the type and storage-class specifiers of the function.
The only storage-class specifiers allowed are <em>extern</em> and <em>static</em>.
</li><li> The <code>declarator</code> must be such that the declared identifier has <em>function type</em>.
The return type shall be void or an object type other than array type.
</li><li> The optional declaration list <code>decllist</code> is for old-style function declarations.
</li><li> The statement <code>stmt</code> is a compound statement.
</li></ul></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CDecl" class="def">CDecl</a> = <a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CDecl" class="link">Source</a></p><div class="doc"><p>C declarations (K&R A8, C99 6.7), including structure declarations, parameter
declarations and type names.
</p><p>A declaration is of the form <code>CDecl specifiers init-declarator-list</code>, where the form of the declarator list's
elements depends on the kind of declaration:
</p><p>1) Toplevel declarations (K&R A8, C99 6.7 declaration)
</p><ul><li> C99 requires that there is at least one specifier, though this is merely a syntactic restriction
</li><li> at most one storage class specifier is allowed per declaration
</li><li> the elements of the non-empty <code>init-declarator-list</code> are of the form <code>(Just declr, init?, Nothing)</code>.
The declarator <code>declr</code> has to be present and non-abstract and the initialization expression is
optional.
</li></ul><p>2) Structure declarations (K&R A8.3, C99 6.7.2.1 struct-declaration)
</p><p>Those are the declarations of a structure's members.
</p><ul><li> do not allow storage specifiers
</li><li> in strict C99, the list of declarators has to be non-empty
</li><li> the elements of <code>init-declarator-list</code> are either of the form <code>(Just declr, Nothing, size?)</code>,
representing a member with optional bit-field size, or of the form <code>(Nothing, Nothing, Just size)</code>,
for unnamed bitfields. <code>declr</code> has to be non-abstract.
</li><li> no member of a structure shall have incomplete type
</li></ul><p>3) Parameter declarations (K&R A8.6.3, C99 6.7.5 parameter-declaration)
</p><ul><li> <code>init-declarator-list</code> must contain at most one triple of the form <code>(Just declr, Nothing, Nothing)</code>,
i.e. consist of a single declarator, which is allowed to be abstract (i.e. unnamed).
</li></ul><p>4) Type names (A8.8, C99 6.7.6)
</p><ul><li> do not allow storage specifiers
</li><li> <code>init-declarator-list</code> must contain at most one triple of the form <code>(Just declr, Nothing, Nothing)</code>.
where <code>declr</code> is an abstract declarator (i.e. doesn't contain a declared identifier)
</li></ul></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CStructUnion" class="def">CStructUnion</a> = <a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CStructUnion" class="link">Source</a></p><div class="doc"><p>C structure or union specifiers (K&R A8.3, C99 6.7.2.1)
</p><p><code>CStruct tag identifier struct-decls c-attrs</code> represents a struct or union specifier (depending on <code>tag</code>).
</p><ul><li> either <code>identifier</code> or the declaration list <code>struct-decls</code> (or both) have to be present.
</li></ul><p>Example: in <code>struct foo x;</code>, the identifier is present, in <code>struct { int y; } x</code> the declaration list, and
in <code>struct foo { int y; } x;</code> both of them.
</p><ul><li> <code>c-attrs</code> is a list of <code>__attribute__</code> annotations associated with the struct or union specifier
</li></ul></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CEnum" class="def">CEnum</a> = <a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CEnum" class="link">Source</a></p><div class="doc"><p>C enumeration specifier (K&R A8.4, C99 6.7.2.2)
</p><p><code>CEnum identifier enumerator-list attrs</code> represent as enum specifier
</p><ul><li> Either the identifier or the enumerator-list (or both) have to be present.
</li><li> If <code>enumerator-list</code> is present, it has to be non-empty.
</li><li> The enumerator list is of the form <code>(enumeration-constant, enumeration-value?)</code>, where the latter
is an optional constant integral expression.
</li><li> <code>attrs</code> is a list of <code>__attribute__</code> annotations associated with the enumeration specifier
</li></ul></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CFunctionDef" class="def">CFunctionDef</a> a <a href="src/Language-C-Syntax-AST.html#CFunctionDef" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CFunDef" class="def">CFunDef</a> [<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a] (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> a) [<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a] (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CFunctionDef" class="caption collapser" onclick="toggleSection('i:CFunctionDef')">Instances</p><div id="section.i:CFunctionDef" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CFunDef">CFunDef</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CDeclaration" class="def">CDeclaration</a> a <a href="src/Language-C-Syntax-AST.html#CDeclaration" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CDecl" class="def">CDecl</a> [<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a] [(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> a), <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> a), <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a))] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CDeclaration" class="caption collapser" onclick="toggleSection('i:CDeclaration')">Instances</p><div id="section.i:CDeclaration" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CDecl">CDecl</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CStructTag" class="def">CStructTag</a> <a href="src/Language-C-Syntax-AST.html#CStructTag" class="link">Source</a></p><div class="doc"><p>A tag to determine wheter we refer to a <code>struct</code> or <code>union</code>, see <code><a href="Language-C-Syntax-AST.html#t:CStructUnion">CStructUnion</a></code>.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CStructTag" class="def">CStructTag</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CUnionTag" class="def">CUnionTag</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CStructTag" class="caption collapser" onclick="toggleSection('i:CStructTag')">Instances</p><div id="section.i:CStructTag" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CStructureUnion" class="def">CStructureUnion</a> a <a href="src/Language-C-Syntax-AST.html#CStructureUnion" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CStruct" class="def">CStruct</a> <a href="Language-C-Syntax-AST.html#t:CStructTag">CStructTag</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> [<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a]) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CStructureUnion" class="caption collapser" onclick="toggleSection('i:CStructureUnion')">Instances</p><div id="section.i:CStructureUnion" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CStructUnion">CStructUnion</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CEnumeration" class="def">CEnumeration</a> a <a href="src/Language-C-Syntax-AST.html#CEnumeration" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CEnum" class="def">CEnum</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> [(<a href="Language-C-Data-Ident.html#t:Ident">Ident</a>, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a))]) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CEnumeration" class="caption collapser" onclick="toggleSection('i:CEnumeration')">Instances</p><div id="section.i:CEnumeration" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CEnum">CEnum</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:3">Declaration attributes
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CDeclSpec" class="def">CDeclSpec</a> = <a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CDeclSpec" class="link">Source</a></p><div class="doc"><p>C declaration specifiers and qualifiers
</p><p>Declaration specifiers include at most one storage-class specifier (C99 6.7.1),
type specifiers (6.7.2) and type qualifiers (6.7.3).
</p></div></div><div class="top"><p class="src"><a name="v:partitionDeclSpecs" class="def">partitionDeclSpecs</a> :: [<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a] -> ([<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a], [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a], [<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a], [<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a], <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a>)<a href="src/Language-C-Syntax-AST.html#partitionDeclSpecs" class="link">Source</a></p><div class="doc"><p>Separate the declaration specifiers
</p><p>Note that inline isn't actually a type qualifier, but a function specifier.
<code>__attribute__</code> of a declaration qualify declarations or declarators (but not types),
and are therefore separated as well.
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CStorageSpec" class="def">CStorageSpec</a> = <a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CStorageSpec" class="link">Source</a></p><div class="doc"><p>C storage class specifier (and typedefs) (K&R A8.1, C99 6.7.1)
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CTypeSpec" class="def">CTypeSpec</a> = <a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CTypeSpec" class="link">Source</a></p><div class="doc"><p>C type specifier (K&R A8.2, C99 6.7.2)
</p><p>Type specifiers are either basic types such as <code>char</code> or <code>int</code>,
<code>struct</code>, <code>union</code> or <code>enum</code> specifiers or typedef names.
</p><p>As a GNU extension, a <code>typeof</code> expression also is a type specifier.
</p></div></div><div class="top"><p class="src"><a name="v:isSUEDef" class="def">isSUEDef</a> :: <a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a><a href="src/Language-C-Syntax-AST.html#isSUEDef" class="link">Source</a></p><div class="doc"><p>returns <code>True</code> if the given typespec is a struct, union or enum <em>definition</em>
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CTypeQual" class="def">CTypeQual</a> = <a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CTypeQual" class="link">Source</a></p><div class="doc"><p>C type qualifiers (K&R A8.2, C99 6.7.3), function specifiers (C99 6.7.4), and attributes.
</p><p><code>const</code>, <code>volatile</code> and <code>restrict</code> type qualifiers and <code>inline</code> function specifier.
Additionally, <code>__attribute__</code> annotations for declarations and declarators.
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CAttr" class="def">CAttr</a> = <a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CAttr" class="link">Source</a></p><div class="doc"><p><code>__attribute__</code> annotations
</p><p>Those are of the form <code>CAttr attribute-name attribute-parameters</code>,
and serve as generic properties of some syntax tree elements.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CDeclarationSpecifier" class="def">CDeclarationSpecifier</a> a <a href="src/Language-C-Syntax-AST.html#CDeclarationSpecifier" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CStorageSpec" class="def">CStorageSpec</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a)</td><td class="doc"><p>storage-class specifier or typedef
</p></td></tr><tr><td class="src"><a name="v:CTypeSpec" class="def">CTypeSpec</a> (<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a)</td><td class="doc"><p>type name
</p></td></tr><tr><td class="src"><a name="v:CTypeQual" class="def">CTypeQual</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a)</td><td class="doc"><p>type qualifier
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CDeclarationSpecifier" class="caption collapser" onclick="toggleSection('i:CDeclarationSpecifier')">Instances</p><div id="section.i:CDeclarationSpecifier" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CDeclSpec">CDeclSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarationSpecifier">CDeclarationSpecifier</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CStorageSpecifier" class="def">CStorageSpecifier</a> a <a href="src/Language-C-Syntax-AST.html#CStorageSpecifier" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CAuto" class="def">CAuto</a> a</td><td class="doc"><p>auto
</p></td></tr><tr><td class="src"><a name="v:CRegister" class="def">CRegister</a> a</td><td class="doc"><p>register
</p></td></tr><tr><td class="src"><a name="v:CStatic" class="def">CStatic</a> a</td><td class="doc"><p>static
</p></td></tr><tr><td class="src"><a name="v:CExtern" class="def">CExtern</a> a</td><td class="doc"><p>extern
</p></td></tr><tr><td class="src"><a name="v:CTypedef" class="def">CTypedef</a> a</td><td class="doc"><p>typedef
</p></td></tr><tr><td class="src"><a name="v:CThread" class="def">CThread</a> a</td><td class="doc"><p>GNUC thread local storage
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CStorageSpecifier" class="caption collapser" onclick="toggleSection('i:CStorageSpecifier')">Instances</p><div id="section.i:CStorageSpecifier" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CStorageSpec">CStorageSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CStorageSpecifier">CStorageSpecifier</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CTypeSpecifier" class="def">CTypeSpecifier</a> a <a href="src/Language-C-Syntax-AST.html#CTypeSpecifier" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CVoidType" class="def">CVoidType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CCharType" class="def">CCharType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CShortType" class="def">CShortType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CIntType" class="def">CIntType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CLongType" class="def">CLongType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CFloatType" class="def">CFloatType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CDoubleType" class="def">CDoubleType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CSignedType" class="def">CSignedType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CUnsigType" class="def">CUnsigType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CBoolType" class="def">CBoolType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CComplexType" class="def">CComplexType</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CSUType" class="def">CSUType</a> (<a href="Language-C-Syntax-AST.html#t:CStructureUnion">CStructureUnion</a> a) a</td><td class="doc"><p>Struct or Union specifier
</p></td></tr><tr><td class="src"><a name="v:CEnumType" class="def">CEnumType</a> (<a href="Language-C-Syntax-AST.html#t:CEnumeration">CEnumeration</a> a) a</td><td class="doc"><p>Enumeration specifier
</p></td></tr><tr><td class="src"><a name="v:CTypeDef" class="def">CTypeDef</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a</td><td class="doc"><p>Typedef name
</p></td></tr><tr><td class="src"><a name="v:CTypeOfExpr" class="def">CTypeOfExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc"><pre>typeof(expr)</pre></td></tr><tr><td class="src"><a name="v:CTypeOfType" class="def">CTypeOfType</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a</td><td class="doc"><pre>typeof(type)</pre></td></tr></table></div><div class="subs instances"><p id="control.i:CTypeSpecifier" class="caption collapser" onclick="toggleSection('i:CTypeSpecifier')">Instances</p><div id="section.i:CTypeSpecifier" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CTypeSpec">CTypeSpec</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CTypeSpecifier">CTypeSpecifier</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CTypeQualifier" class="def">CTypeQualifier</a> a <a href="src/Language-C-Syntax-AST.html#CTypeQualifier" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CConstQual" class="def">CConstQual</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CVolatQual" class="def">CVolatQual</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CRestrQual" class="def">CRestrQual</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CInlineQual" class="def">CInlineQual</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CAttrQual" class="def">CAttrQual</a> (<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a)</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CTypeQualifier" class="caption collapser" onclick="toggleSection('i:CTypeQualifier')">Instances</p><div id="section.i:CTypeQualifier" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CTypeQual">CTypeQual</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CAttribute" class="def">CAttribute</a> a <a href="src/Language-C-Syntax-AST.html#CAttribute" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CAttr" class="def">CAttr</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> [<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CAttribute" class="caption collapser" onclick="toggleSection('i:CAttribute')">Instances</p><div id="section.i:CAttribute" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CAttr">CAttr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:4">Declarators
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CDeclr" class="def">CDeclr</a> = <a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CDeclr" class="link">Source</a></p><div class="doc"><p>C declarator (K&R A8.5, C99 6.7.5) and abstract declarator (K&R A8.8, C99 6.7.6)
</p><p>A declarator declares a single object, function, or type. It is always associated with
a declaration (<code><a href="Language-C-Syntax-AST.html#t:CDecl">CDecl</a></code>), which specifies the declaration's type and the additional storage qualifiers and
attributes, which apply to the declared object.
</p><p>A declarator is of the form <code>CDeclr name? indirections asm-name? attrs _</code>, where
<code>name</code> is the name of the declared object (missing for abstract declarators),
<code>declquals</code> is a set of additional declaration specifiers,
<code>asm-name</code> is the optional assembler name and attributes is a set of
attrs is a set of <code>__attribute__</code> annotations for the declared object.
</p><p><code>indirections</code> is a set of pointer, array and function declarators, which modify the type of the declared object as
described below. If the <em>declaration</em> specifies the non-derived type <code>T</code>,
and we have <code>indirections = [D1, D2, ..., Dn]</code> than the declared object has type
<code>(D1 <code>indirect</code> (D2 <code>indirect</code> ... (Dn <code>indirect</code> T)))</code>, where
</p><ul><li> <code>(CPtrDeclr attrs) <code>indirect</code> T</code> is <em>attributed pointer to T</em>
</li><li> <code>(CFunDeclr attrs) <code>indirect</code> T</code> is <em>attributed function returning T</em>
</li><li> <code>(CArrayDeclr attrs) <code>indirect</code> T</code> is <em>attributed array of elemements of type T</em>
</li></ul><p>Examples (simplified attributes):
</p><ul><li> <em>x</em> is an int
</li></ul><pre> int x;
CDeclr "x" []
</pre><ul><li> <em>x</em> is a restrict pointer to a const pointer to int
</li></ul><pre> const int * const * restrict x;
CDeclr "x" [CPtrDeclr [restrict], CPtrDeclr [const]]
</pre><ul><li> <em>f</em> is an function return a constant pointer to int
</li></ul><pre> int* const f();
CDeclr "f" [CFunDeclr [],CPtrDeclr [const]]
</pre><ul><li> <em>f</em> is a constant pointer to a function returning int
</li></ul><pre> int (* const f)(); ==>
CDeclr "f" [CPtrDeclr [const], CFunDeclr []]
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CDerivedDeclr" class="def">CDerivedDeclr</a> = <a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CDerivedDeclr" class="link">Source</a></p><div class="doc"><p>Derived declarators, see <code><a href="Language-C-Syntax-AST.html#t:CDeclr">CDeclr</a></code>
</p><p>Indirections are qualified using type-qualifiers and generic attributes, and additionally
</p><ul><li> The size of an array is either a constant expression, variable length (<code><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Prelude.html#v:-42-">*</a></code>) or missing; in the last case, the
type of the array is incomplete. The qualifier static is allowed for function arguments only, indicating that
the supplied argument is an array of at least the given size.
</li><li> New style parameter lists have the form <code>Right (declarations, isVariadic)</code>, old style parameter lists have the
form <code>Left (parameter-names)</code>
</li></ul></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CArrSize" class="def">CArrSize</a> = <a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CArrSize" class="link">Source</a></p><div class="doc"><p>Size of an array
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CDeclarator" class="def">CDeclarator</a> a <a href="src/Language-C-Syntax-AST.html#CDeclarator" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CDeclr" class="def">CDeclr</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) [<a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> a] (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a)) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CDeclarator" class="caption collapser" onclick="toggleSection('i:CDeclarator')">Instances</p><div id="section.i:CDeclarator" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CDeclr">CDeclr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CDeclarator">CDeclarator</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CDerivedDeclarator" class="def">CDerivedDeclarator</a> a <a href="src/Language-C-Syntax-AST.html#CDerivedDeclarator" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CPtrDeclr" class="def">CPtrDeclr</a> [<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a] a</td><td class="doc"><p>Pointer declarator <code>CPtrDeclr tyquals declr</code>
</p></td></tr><tr><td class="src"><a name="v:CArrDeclr" class="def">CArrDeclr</a> [<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a] (<a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a> a) a</td><td class="doc"><p>Array declarator <code>CArrDeclr declr tyquals size-expr?</code>
</p></td></tr><tr><td class="src"><a name="v:CFunDeclr" class="def">CFunDeclr</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Either.html#t:Either">Either</a> [<a href="Language-C-Data-Ident.html#t:Ident">Ident</a>] ([<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a], <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a>)) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</td><td class="doc"><p>Function declarator <code>CFunDeclr declr (old-style-params | new-style-params) c-attrs</code>
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CDerivedDeclarator" class="caption collapser" onclick="toggleSection('i:CDerivedDeclarator')">Instances</p><div id="section.i:CDerivedDeclarator" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CDerivedDeclarator">CDerivedDeclarator</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CArraySize" class="def">CArraySize</a> a <a href="src/Language-C-Syntax-AST.html#CArraySize" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CNoArrSize" class="def">CNoArrSize</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><pre>CUnknownSize isCompleteType</pre></td></tr><tr><td class="src"><a name="v:CArrSize" class="def">CArrSize</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)</td><td class="doc"><pre>CArrSize isStatic expr</pre></td></tr></table></div><div class="subs instances"><p id="control.i:CArraySize" class="caption collapser" onclick="toggleSection('i:CArraySize')">Instances</p><div id="section.i:CArraySize" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CArrSize">CArrSize</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CArraySize">CArraySize</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:5">Initialization
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CInit" class="def">CInit</a> = <a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CInit" class="link">Source</a></p><div class="doc"><p>C initialization (K&R A8.7, C99 6.7.8)
</p><p>Initializers are either assignment expressions or initializer lists
(surrounded in curly braces), whose elements are themselves
initializers, paired with an optional list of designators.
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CInitList" class="def">CInitList</a> = <a href="Language-C-Syntax-AST.html#t:CInitializerList">CInitializerList</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CInitList" class="link">Source</a></p><div class="doc"><p>Initializer List
</p><p>The members of an initializer list are of the form <code>(designator-list,initializer)</code>.
The <code>designator-list</code> specifies one member of the compound type which is initialized.
It is allowed to be empty - in this case the initializer refers to the
''next'' member of the compound type (see C99 6.7.8).
</p><p>Examples (simplified expressions and identifiers):
</p><pre> -- int x[3][4] = { [0][3] = 4, [2] = 5, 8 };
-- corresponds to the assignments
-- x[0][3] = 4; x[2][0] = 5; x[2][1] = 8;
let init1 = ([CArrDesig 0, CArrDesig 3], CInitExpr 4)
init2 = ([CArrDesig 2] , CInitExpr 5)
init3 = ([] , CInitExpr 8)
in CInitList [init1, init2, init3]
</pre><pre> -- struct { struct { int a[2]; int b[2]; int c[2]; } s; } x = { .s = { {2,3} , .c[0] = 1 } };
-- corresponds to the assignments
-- x.s.a[0] = 2; x.s.a[1] = 3; x.s.c[0] = 1;
let init_s_0 = CInitList [ ([], CInitExpr 2), ([], CInitExpr 3)]
init_s = CInitList [
([], init_s_0),
([CMemberDesig "c", CArrDesig 0], CInitExpr 1)
]
in CInitList [(CMemberDesig "s", init_s)]
</pre></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CDesignator" class="def">CDesignator</a> = <a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CDesignator" class="link">Source</a></p><div class="doc"><p>Designators
</p><p>A designator specifies a member of an object, either an element or range of an array,
or the named member of a struct / union.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CInitializer" class="def">CInitializer</a> a <a href="src/Language-C-Syntax-AST.html#CInitializer" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CInitExpr" class="def">CInitExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc"><p>assignment expression
</p></td></tr><tr><td class="src"><a name="v:CInitList" class="def">CInitList</a> (<a href="Language-C-Syntax-AST.html#t:CInitializerList">CInitializerList</a> a) a</td><td class="doc"><p>initialization list (see <code><a href="Language-C-Syntax-AST.html#t:CInitList">CInitList</a></code>)
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CInitializer" class="caption collapser" onclick="toggleSection('i:CInitializer')">Instances</p><div id="section.i:CInitializer" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CInit">CInit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CInitializerList" class="def">CInitializerList</a> a = [([<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> a], <a href="Language-C-Syntax-AST.html#t:CInitializer">CInitializer</a> a)]<a href="src/Language-C-Syntax-AST.html#CInitializerList" class="link">Source</a></p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CPartDesignator" class="def">CPartDesignator</a> a <a href="src/Language-C-Syntax-AST.html#CPartDesignator" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CArrDesig" class="def">CArrDesig</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc"><p>array position designator
</p></td></tr><tr><td class="src"><a name="v:CMemberDesig" class="def">CMemberDesig</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a</td><td class="doc"><p>member designator
</p></td></tr><tr><td class="src"><a name="v:CRangeDesig" class="def">CRangeDesig</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc"><p>array range designator <code>CRangeDesig from to _</code> (GNU C)
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CPartDesignator" class="caption collapser" onclick="toggleSection('i:CPartDesignator')">Instances</p><div id="section.i:CPartDesignator" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CDesignator">CDesignator</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:6">Statements
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CStat" class="def">CStat</a> = <a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CStat" class="link">Source</a></p><div class="doc"><p>C statement (K&R A9, C99 6.8)
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CBlockItem" class="def">CBlockItem</a> = <a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CBlockItem" class="link">Source</a></p><div class="doc"><p>C99 Block items
</p><p>Things that may appear in compound statements: either statements, declarations
or nested function definitions.
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CAsmStmt" class="def">CAsmStmt</a> = <a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CAsmStmt" class="link">Source</a></p><div class="doc"><p>GNU Assembler statement
</p><pre> CAssemblyStatement type-qual? asm-expr out-ops in-ops clobbers _
</pre><p>is an inline assembler statement.
The only type-qualifier (if any) allowed is <em>volatile</em>.
<code>asm-expr</code> is the actual assembler epxression (a string), <code>out-ops</code> and <code>in-ops</code> are the input
and output operands of the statement.
<code>clobbers</code> is a list of registers which are clobbered when executing the assembler statement
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CAsmOperand" class="def">CAsmOperand</a> = <a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CAsmOperand" class="link">Source</a></p><div class="doc"><p>Assembler operand
</p><p><code>CAsmOperand argName? constraintExpr arg</code> specifies an operand for an assembler
statement.
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CStatement" class="def">CStatement</a> a <a href="src/Language-C-Syntax-AST.html#CStatement" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CLabel" class="def">CLabel</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) [<a href="Language-C-Syntax-AST.html#t:CAttribute">CAttribute</a> a] a</td><td class="doc"><p>An (attributed) label followed by a statement
</p></td></tr><tr><td class="src"><a name="v:CCase" class="def">CCase</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc"><p>A statement of the form <code>case expr : stmt</code>
</p></td></tr><tr><td class="src"><a name="v:CCases" class="def">CCases</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc"><p>A case range of the form <code>case lower ... upper : stmt</code>
</p></td></tr><tr><td class="src"><a name="v:CDefault" class="def">CDefault</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc"><p>The default case <code>default : stmt</code>
</p></td></tr><tr><td class="src"><a name="v:CExpr" class="def">CExpr</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) a</td><td class="doc"><p>A simple statement, that is in C: evaluating an expression with
side-effects and discarding the result.
</p></td></tr><tr><td class="src"><a name="v:CCompound" class="def">CCompound</a> [<a href="Language-C-Data-Ident.html#t:Ident">Ident</a>] [<a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> a] a</td><td class="doc"><p>compound statement <code>CCompound localLabels blockItems at</code>
</p></td></tr><tr><td class="src"><a name="v:CIf" class="def">CIf</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a)) a</td><td class="doc"><p>conditional statement <code>CIf ifExpr thenStmt maybeElseStmt at</code>
</p></td></tr><tr><td class="src"><a name="v:CSwitch" class="def">CSwitch</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc"><p>switch statement <code>CSwitch selectorExpr switchStmt</code>, where
<code>switchStmt</code> usually includes <em>case</em>, <em>break</em> and <em>default</em>
statements
</p></td></tr><tr><td class="src"><a name="v:CWhile" class="def">CWhile</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> a</td><td class="doc"><p>while or do-while statement <code>CWhile guard stmt isDoWhile at</code>
</p></td></tr><tr><td class="src"><a name="v:CFor" class="def">CFor</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Either.html#t:Either">Either</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a)) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc"><p>for statement <code>CFor init expr-2 expr-3 stmt</code>, where <code>init</code> is
either a declaration or initializing expression
</p></td></tr><tr><td class="src"><a name="v:CGoto" class="def">CGoto</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a</td><td class="doc"><p>goto statement <code>CGoto label</code>
</p></td></tr><tr><td class="src"><a name="v:CGotoPtr" class="def">CGotoPtr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc"><p>computed goto <code>CGotoPtr labelExpr</code>
</p></td></tr><tr><td class="src"><a name="v:CCont" class="def">CCont</a> a</td><td class="doc"><p>continue statement
</p></td></tr><tr><td class="src"><a name="v:CBreak" class="def">CBreak</a> a</td><td class="doc"><p>break statement
</p></td></tr><tr><td class="src"><a name="v:CReturn" class="def">CReturn</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) a</td><td class="doc"><p>return statement <code>CReturn returnExpr</code>
</p></td></tr><tr><td class="src"><a name="v:CAsm" class="def">CAsm</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> a) a</td><td class="doc"><p>assembly statement
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CStatement" class="caption collapser" onclick="toggleSection('i:CStatement')">Instances</p><div id="section.i:CStatement" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CStat">CStat</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CCompoundBlockItem" class="def">CCompoundBlockItem</a> a <a href="src/Language-C-Syntax-AST.html#CCompoundBlockItem" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CBlockStmt" class="def">CBlockStmt</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a)</td><td class="doc"><p>A statement
</p></td></tr><tr><td class="src"><a name="v:CBlockDecl" class="def">CBlockDecl</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a)</td><td class="doc"><p>A local declaration
</p></td></tr><tr><td class="src"><a name="v:CNestedFunDef" class="def">CNestedFunDef</a> (<a href="Language-C-Syntax-AST.html#t:CFunctionDef">CFunctionDef</a> a)</td><td class="doc"><p>A nested function (GNU C)
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CCompoundBlockItem" class="caption collapser" onclick="toggleSection('i:CCompoundBlockItem')">Instances</p><div id="section.i:CCompoundBlockItem" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CBlockItem">CBlockItem</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CCompoundBlockItem">CCompoundBlockItem</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CAssemblyStatement" class="def">CAssemblyStatement</a> a <a href="src/Language-C-Syntax-AST.html#CAssemblyStatement" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CAsmStmt" class="def">CAsmStmt</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CTypeQualifier">CTypeQualifier</a> a)) (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a) [<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> a] [<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> a] [<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a] a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CAssemblyStatement" class="caption collapser" onclick="toggleSection('i:CAssemblyStatement')">Instances</p><div id="section.i:CAssemblyStatement" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CAsmStmt">CAsmStmt</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyStatement">CAssemblyStatement</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CAssemblyOperand" class="def">CAssemblyOperand</a> a <a href="src/Language-C-Syntax-AST.html#CAssemblyOperand" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CAsmOperand" class="def">CAsmOperand</a> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a>) (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CAssemblyOperand" class="caption collapser" onclick="toggleSection('i:CAssemblyOperand')">Instances</p><div id="section.i:CAssemblyOperand" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CAsmOperand">CAsmOperand</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CAssemblyOperand">CAssemblyOperand</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:7">Expressions
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CExpr" class="def">CExpr</a> = <a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CExpr" class="link">Source</a></p><div class="doc"><p>C expression (K&R A7)
</p><ul><li> these can be arbitrary expression, as the argument of <code>sizeof</code> can be
arbitrary, even if appearing in a constant expression
</li><li> GNU C extensions: <code>alignof</code>, <code>__real</code>, <code>__imag</code>, <code>({ stmt-expr })</code>, <code>&& label</code> and built-ins
</li></ul></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CExpression" class="def">CExpression</a> a <a href="src/Language-C-Syntax-AST.html#CExpression" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CComma" class="def">CComma</a> [<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a] a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CAssign" class="def">CAssign</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CCond" class="def">CCond</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CBinary" class="def">CBinary</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CCast" class="def">CCast</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CUnary" class="def">CUnary</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CSizeofExpr" class="def">CSizeofExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CSizeofType" class="def">CSizeofType</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CAlignofExpr" class="def">CAlignofExpr</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CAlignofType" class="def">CAlignofType</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CComplexReal" class="def">CComplexReal</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CComplexImag" class="def">CComplexImag</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CIndex" class="def">CIndex</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CCall" class="def">CCall</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) [<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a] a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CMember" class="def">CMember</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CVar" class="def">CVar</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CConst" class="def">CConst</a> (<a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> a)</td><td class="doc"><p>integer, character, floating point and string constants
</p></td></tr><tr><td class="src"><a name="v:CCompoundLit" class="def">CCompoundLit</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) (<a href="Language-C-Syntax-AST.html#t:CInitializerList">CInitializerList</a> a) a</td><td class="doc"><p>C99 compound literal
</p></td></tr><tr><td class="src"><a name="v:CStatExpr" class="def">CStatExpr</a> (<a href="Language-C-Syntax-AST.html#t:CStatement">CStatement</a> a) a</td><td class="doc"><p>GNU C compound statement as expr
</p></td></tr><tr><td class="src"><a name="v:CLabAddrExpr" class="def">CLabAddrExpr</a> <a href="Language-C-Data-Ident.html#t:Ident">Ident</a> a</td><td class="doc"><p>GNU C address of label
</p></td></tr><tr><td class="src"><a name="v:CBuiltinExpr" class="def">CBuiltinExpr</a> (<a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> a)</td><td class="doc"><p>builtin expressions, see <code><a href="Language-C-Syntax-AST.html#t:CBuiltin">CBuiltin</a></code>
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CExpression" class="caption collapser" onclick="toggleSection('i:CExpression')">Instances</p><div id="section.i:CExpression" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CExpr">CExpr</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CAssignOp" class="def">CAssignOp</a> <a href="src/Language-C-Syntax-Ops.html#CAssignOp" class="link">Source</a></p><div class="doc"><p>C assignment operators (K&R A7.17)
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CAssignOp" class="def">CAssignOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CMulAssOp" class="def">CMulAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CDivAssOp" class="def">CDivAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CRmdAssOp" class="def">CRmdAssOp</a></td><td class="doc"><p>remainder and assignment
</p></td></tr><tr><td class="src"><a name="v:CAddAssOp" class="def">CAddAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CSubAssOp" class="def">CSubAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CShlAssOp" class="def">CShlAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CShrAssOp" class="def">CShrAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CAndAssOp" class="def">CAndAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CXorAssOp" class="def">CXorAssOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:COrAssOp" class="def">COrAssOp</a></td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CAssignOp" class="caption collapser" onclick="toggleSection('i:CAssignOp')">Instances</p><div id="section.i:CAssignOp" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CAssignOp">CAssignOp</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CBinaryOp" class="def">CBinaryOp</a> <a href="src/Language-C-Syntax-Ops.html#CBinaryOp" class="link">Source</a></p><div class="doc"><p>C binary operators (K&R A7.6-15)
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CMulOp" class="def">CMulOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CDivOp" class="def">CDivOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CRmdOp" class="def">CRmdOp</a></td><td class="doc"><p>remainder of division
</p></td></tr><tr><td class="src"><a name="v:CAddOp" class="def">CAddOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CSubOp" class="def">CSubOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CShlOp" class="def">CShlOp</a></td><td class="doc"><p>shift left
</p></td></tr><tr><td class="src"><a name="v:CShrOp" class="def">CShrOp</a></td><td class="doc"><p>shift right
</p></td></tr><tr><td class="src"><a name="v:CLeOp" class="def">CLeOp</a></td><td class="doc"><p>less
</p></td></tr><tr><td class="src"><a name="v:CGrOp" class="def">CGrOp</a></td><td class="doc"><p>greater
</p></td></tr><tr><td class="src"><a name="v:CLeqOp" class="def">CLeqOp</a></td><td class="doc"><p>less or equal
</p></td></tr><tr><td class="src"><a name="v:CGeqOp" class="def">CGeqOp</a></td><td class="doc"><p>greater or equal
</p></td></tr><tr><td class="src"><a name="v:CEqOp" class="def">CEqOp</a></td><td class="doc"><p>equal
</p></td></tr><tr><td class="src"><a name="v:CNeqOp" class="def">CNeqOp</a></td><td class="doc"><p>not equal
</p></td></tr><tr><td class="src"><a name="v:CAndOp" class="def">CAndOp</a></td><td class="doc"><p>bitwise and
</p></td></tr><tr><td class="src"><a name="v:CXorOp" class="def">CXorOp</a></td><td class="doc"><p>exclusive bitwise or
</p></td></tr><tr><td class="src"><a name="v:COrOp" class="def">COrOp</a></td><td class="doc"><p>inclusive bitwise or
</p></td></tr><tr><td class="src"><a name="v:CLndOp" class="def">CLndOp</a></td><td class="doc"><p>logical and
</p></td></tr><tr><td class="src"><a name="v:CLorOp" class="def">CLorOp</a></td><td class="doc"><p>logical or
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CBinaryOp" class="caption collapser" onclick="toggleSection('i:CBinaryOp')">Instances</p><div id="section.i:CBinaryOp" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CBinaryOp">CBinaryOp</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CUnaryOp" class="def">CUnaryOp</a> <a href="src/Language-C-Syntax-Ops.html#CUnaryOp" class="link">Source</a></p><div class="doc"><p>C unary operator (K&R A7.3-4)
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CPreIncOp" class="def">CPreIncOp</a></td><td class="doc"><p>prefix increment operator
</p></td></tr><tr><td class="src"><a name="v:CPreDecOp" class="def">CPreDecOp</a></td><td class="doc"><p>prefix decrement operator
</p></td></tr><tr><td class="src"><a name="v:CPostIncOp" class="def">CPostIncOp</a></td><td class="doc"><p>postfix increment operator
</p></td></tr><tr><td class="src"><a name="v:CPostDecOp" class="def">CPostDecOp</a></td><td class="doc"><p>postfix decrement operator
</p></td></tr><tr><td class="src"><a name="v:CAdrOp" class="def">CAdrOp</a></td><td class="doc"><p>address operator
</p></td></tr><tr><td class="src"><a name="v:CIndOp" class="def">CIndOp</a></td><td class="doc"><p>indirection operator
</p></td></tr><tr><td class="src"><a name="v:CPlusOp" class="def">CPlusOp</a></td><td class="doc"><p>prefix plus
</p></td></tr><tr><td class="src"><a name="v:CMinOp" class="def">CMinOp</a></td><td class="doc"><p>prefix minus
</p></td></tr><tr><td class="src"><a name="v:CCompOp" class="def">CCompOp</a></td><td class="doc"><p>one's complement
</p></td></tr><tr><td class="src"><a name="v:CNegOp" class="def">CNegOp</a></td><td class="doc"><p>logical negation
</p></td></tr></table></div><div class="subs instances"><p id="control.i:CUnaryOp" class="caption collapser" onclick="toggleSection('i:CUnaryOp')">Instances</p><div id="section.i:CUnaryOp" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Eq.html#t:Eq">Eq</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Ord.html#t:Ord">Ord</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable">Typeable</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CUnaryOp">CUnaryOp</a></td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CBuiltin" class="def">CBuiltin</a> = <a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CBuiltin" class="link">Source</a></p><div class="doc"><p>GNU Builtins, which cannot be typed in C99
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CBuiltinThing" class="def">CBuiltinThing</a> a <a href="src/Language-C-Syntax-AST.html#CBuiltinThing" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CBuiltinVaArg" class="def">CBuiltinVaArg</a> (<a href="Language-C-Syntax-AST.html#t:CExpression">CExpression</a> a) (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a</td><td class="doc"><pre>(expr, type)</pre></td></tr><tr><td class="src"><a name="v:CBuiltinOffsetOf" class="def">CBuiltinOffsetOf</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) [<a href="Language-C-Syntax-AST.html#t:CPartDesignator">CPartDesignator</a> a] a</td><td class="doc"><pre>(type, designator-list)</pre></td></tr><tr><td class="src"><a name="v:CBuiltinTypesCompatible" class="def">CBuiltinTypesCompatible</a> (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) (<a href="Language-C-Syntax-AST.html#t:CDeclaration">CDeclaration</a> a) a</td><td class="doc"><pre>(type,type)</pre></td></tr></table></div><div class="subs instances"><p id="control.i:CBuiltinThing" class="caption collapser" onclick="toggleSection('i:CBuiltinThing')">Instances</p><div id="section.i:CBuiltinThing" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CBuiltin">CBuiltin</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CBuiltinThing">CBuiltinThing</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><h1 id="g:8">Constants
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CConst" class="def">CConst</a> = <a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CConst" class="link">Source</a></p><div class="doc"><p>C constant (K&R A2.5 & A7.2)
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CStrLit" class="def">CStrLit</a> = <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> <a href="Language-C-Data-Node.html#t:NodeInfo">NodeInfo</a><a href="src/Language-C-Syntax-AST.html#CStrLit" class="link">Source</a></p><div class="doc"><p>Attributed string literals
</p></div></div><div class="top"><p class="src"><a name="v:cstringOfLit" class="def">cstringOfLit</a> :: <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a -> <a href="Language-C-Syntax-Constants.html#t:CString">CString</a><a href="src/Language-C-Syntax-AST.html#cstringOfLit" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:liftStrLit" class="def">liftStrLit</a> :: <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a -> <a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> a<a href="src/Language-C-Syntax-AST.html#liftStrLit" class="link">Source</a></p><div class="doc"><p>Lift a string literal to a C constant
</p></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CConstant" class="def">CConstant</a> a <a href="src/Language-C-Syntax-AST.html#CConstant" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CIntConst" class="def">CIntConst</a> <a href="Language-C-Syntax-Constants.html#t:CInteger">CInteger</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CCharConst" class="def">CCharConst</a> <a href="Language-C-Syntax-Constants.html#t:CChar">CChar</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CFloatConst" class="def">CFloatConst</a> <a href="Language-C-Syntax-Constants.html#t:CFloat">CFloat</a> a</td><td class="doc empty"> </td></tr><tr><td class="src"><a name="v:CStrConst" class="def">CStrConst</a> <a href="Language-C-Syntax-Constants.html#t:CString">CString</a> a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CConstant" class="caption collapser" onclick="toggleSection('i:CConstant')">Instances</p><div id="section.i:CConstant" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CConst">CConst</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CConstant">CConstant</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:CStringLiteral" class="def">CStringLiteral</a> a <a href="src/Language-C-Syntax-AST.html#CStringLiteral" class="link">Source</a></p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:CStrLit" class="def">CStrLit</a> <a href="Language-C-Syntax-Constants.html#t:CString">CString</a> a</td><td class="doc empty"> </td></tr></table></div><div class="subs instances"><p id="control.i:CStringLiteral" class="caption collapser" onclick="toggleSection('i:CStringLiteral')">Instances</p><div id="section.i:CStringLiteral" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Control-Monad.html#t:Functor">Functor</a> <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Typeable-Internal.html#t:Typeable1">Typeable1</a> <a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Pretty.html#t:Pretty">Pretty</a> <a href="Language-C-Syntax-AST.html#t:CStrLit">CStrLit</a></td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Data.html#t:Data">Data</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Text-Show.html#t:Show">Show</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Position.html#t:Pos">Pos</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> t1)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 => <a href="Language-C-Data-Node.html#t:CNode">CNode</a> (<a href="Language-C-Syntax-AST.html#t:CStringLiteral">CStringLiteral</a> t1)</td><td class="doc empty"> </td></tr></table></div></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
|