This file is indexed.

/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&amp;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&amp;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] -&gt; ([<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 -&gt; <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 -&gt; <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 -&gt; <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&amp;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&amp;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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</td></tr><tr><td class="src"><a name="v:CUnionTag" class="def">CUnionTag</a></td><td class="doc empty">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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] -&gt; ([<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&amp;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&amp;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 -&gt; <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&amp;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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</td></tr><tr><td class="src"><a name="v:CCharType" class="def">CCharType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CShortType" class="def">CShortType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CIntType" class="def">CIntType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CLongType" class="def">CLongType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CFloatType" class="def">CFloatType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CDoubleType" class="def">CDoubleType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CSignedType" class="def">CSignedType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CUnsigType" class="def">CUnsigType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CBoolType" class="def">CBoolType</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CComplexType" class="def">CComplexType</a> a</td><td class="doc empty">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</td></tr><tr><td class="src"><a name="v:CVolatQual" class="def">CVolatQual</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CRestrQual" class="def">CRestrQual</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CInlineQual" class="def">CInlineQual</a> a</td><td class="doc empty">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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&amp;R A8.5, C99 6.7.5) and abstract declarator (K&amp;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 &quot;x&quot; []
</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 &quot;x&quot; [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 &quot;f&quot; [CFunDeclr [],CPtrDeclr [const]]
</pre><ul><li> <em>f</em> is a constant pointer to a function returning int
</li></ul><pre> int (* const f)(); ==&gt;
 CDeclr &quot;f&quot; [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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</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&amp;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 &quot;c&quot;, CArrDesig 0], CInitExpr 1)
                          ]
 in  CInitList [(CMemberDesig &quot;s&quot;, 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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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&amp;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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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&amp;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>&amp;&amp; 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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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&amp;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">&nbsp;</td></tr><tr><td class="src"><a name="v:CMulAssOp" class="def">CMulAssOp</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CDivAssOp" class="def">CDivAssOp</a></td><td class="doc empty">&nbsp;</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">&nbsp;</td></tr><tr><td class="src"><a name="v:CSubAssOp" class="def">CSubAssOp</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CShlAssOp" class="def">CShlAssOp</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CShrAssOp" class="def">CShrAssOp</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CAndAssOp" class="def">CAndAssOp</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:CXorAssOp" class="def">CXorAssOp</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:COrAssOp" class="def">COrAssOp</a></td><td class="doc empty">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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&amp;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">&nbsp;</td></tr><tr><td class="src"><a name="v:CDivOp" class="def">CDivOp</a></td><td class="doc empty">&nbsp;</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">&nbsp;</td></tr><tr><td class="src"><a name="v:CSubOp" class="def">CSubOp</a></td><td class="doc empty">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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&amp;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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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&amp;R A2.5 &amp; 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 -&gt; <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 -&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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 =&gt; <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">&nbsp;</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 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</td></tr><tr><td class="src"><a href="Language-C-Data-Node.html#t:CNode">CNode</a> t1 =&gt; <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">&nbsp;</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>