kdUV      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUNone$An if statement with no else clause $An if statement with an else clause A while loop, the V is the looping condition. A for loop, an example use * for(int "x" .= 1, 1, PlusPlus `pre` "x")  "printf"#[str "%d\n", "x"] !A for loop with no declarations. A do while loop.  WXY    WXYNoneZ[\]^Z[\]^None%A simplified unary operator type. It  can be converted to s version using  $.  The dereferencing operator in C *. The address of operator &. /Lift a Haskell string into a literal C string. Equality test, a ==: b is equivalent to a == b Inequality test, a /=: b is equivalent to a != b Less-than test, a <: b is equivalent to a < b Greater-than test, a >: b is equivalent to a > b Less than or equal to, a <=: b is equivalent to a <= b Greater than or equal to, a >=: b is equivalent to a >= b The ternary operator in C.  ternary a b c will turn into  a ? b : c. QA function mapping identifier in C to be used as variables. Normally this can be  avoided since Language.C.DSL.StringLike provides an _ instance. !Function calls, f#[a, b, c] will become  f(a, b, c). Note  that f is also an expression. "The assignment operator. var <-- value will become  var = value; in C. #(This is the more generalized version of '(<--)' . It allows  any `' to be passed in to facilitate writing a += b and  similar. $ Convert a  to the corresponding a. %Apply a unary operator prefix, op % exp$ will transform into something like op exp  in C. This only matters for  and . &The postfix equivalent of %. 'A quick wrapper of  pre Ind exp since it' s so common. (The C comma operator, comma [a, b, c] is equivalent to a, b, c in C. )*Implements C style casts for expressions. *size of for types. +size of& for expressions. Carefully note that sizeOf someType will  incorrectly treat someType as a variable, not a type. ,"Access a field of a struct, this C's . operator. -The automatic dereferencing -> in C. .$This is the indexing operator in C, a ! i is a[i]. b An orphan Num instance for CExpr%. It provides inline implementations  of abs and signum that don' t rely on math.h. " !"#$%&'()*+,-.cb  !"#$%&'()*+,-.  !"#$%&'()*+,-. !"#$%&'()*+,-.cbNone1&A low level way to declare something. 2The d for void 3The d for char 4The d for short 5The d for int 6The d for long 7The d for float 8The d for double 9The e for declarations of type void :The e for declarations of type char ;The e for declarations of type short <The e for declarations of type int =The e for declarations of type long >The e for declarations of type float ?The e for declarations of type double @6Turns a string into the corresponding typedefed type.  For example  " struct "foo" [("bar, ty "quux")]  will generate the corresponding  typedef foo {quux bar;} foo A3Modifies a declarator to be a pointer. For example   ptr someName would be *x in C. BA short cut for declaring a char.   char "x" .= 1  uninit $ char "y" Would generate  char x = 1;  char y; CA short cut for declaring a short DA short cut for declaring a int EA short cut for declaring a long FA short cut for declaring a float GA short cut for declaring a double HEquivalent to B but wraps the f in a pointer.  This means that uninit $ charPtr someName is equivalent to char *someName; N7Supplies an initializer for an for a declaration. This  is meant to be used with the B and friends short cuts O<Leave a declaration uninitialized. This is meant to be used  with the B and friends declaration Q Create a structure, for example struct foo [(bar, intTy)] is  "typedef struct foo {int bar;} foo; REquivalent to Q" but generates a C union instead. S"Defines a C function. For example   test = 7 fun [intTy] "test"[int "a", int "b"] $ hblock [  creturn ("a" + "b")  ] Would be the equivalent of  int test(int a, int b)  {  return a + b;  } TDIdentical to fun except this annotates the list of attributes given  as a list of strings. U8Exports a series of declarations to a translation unit. */012The declaration specifier, usually this is a type EEquivalent to the name of the object being declared. Often this will 0 make use of the overloaded string instance for fs The optional init expression 23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUghi'/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU'123456789:;<=>?@ABCDEFGHIJKLMNOPQRST/0U)/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUghiNonejklmnopqrstuvwxyz{|}~fed     V !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`a  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk^lm^lnop^_q^_r^_stuv^wx^wy^z{^|}^|~^|^|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_s^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_`^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_q^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_ ^_ ^_ ^_ ^_ ^_ ^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_^_ ^_!^_"^_#^_$^_%^_&^_'^_(^_)^_*^_+^_,^_-^_.^_/^_0^_&^_1^_2^_3^_4^_5^_6^_6^_7^_8^_9^_:^;<^;=^;>^;?^;@^;A^;B^;C^;D^;E^FG^FH^FI^FJ^FK^FL^FM^FN^FO^FP^FQ^FR^FS^FT^FU^FV^FW^FX^FY^FZ^F[^F\^F]^F^^F_^F`^F_^Fa^Fb^Fc^Fd^Fe^Ff^Fg^Fh^Fi^Fj^Fj^Fk^Fk^Fl^Fl^Fm^Fm^no^np^nq^nr^ns^nt^nu^nv^nw^nw^nx^ny^z{^z|^z}^z}^~^~^~^~^~^~^~^~^~^~^~^~^~^~^lm^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l^l c-dsl-0.3Language.C.DSL.StatLanguage.C.DSL.ExpLanguage.C.DSL.DeclLanguage.C.DSL.StringLikeLanguageCLanguage.C.DSL BlockLikeintoBcifcifElsewhilefor noDeclFordoWhilecbreakccontcreturn cvoidReturnliftEblockhBlockUnOpIndAddrNotPlusMinus MinusMinusPlusPlusstrcOp==:/=:<:>:<=:>=:ternaryvar#<--assign toCUnaryOpprepoststarcommacastTo sizeOfDeclsizeOf&&*!ExternalexportdeclvoidSpeccharSpec shortSpecintSpeclongSpec floatSpec doubleSpecvoidTycharTyshortTyintTylongTyfloatTydoubleTytyptrcharshortintlongfloatdoublecharPtrshortPtrintPtrlongPtrfloatPtr doublePtr.=uninitcsustructunionfun annotatedFun transUnitlanguage-c-0.4.6Language.C.Syntax.ASTCExpr$fBlockLikeCDeclaration$fBlockLikeCExpression$fBlockLikeCStatement$fIsStringCTypeSpecifier$fIsStringCDeclaration$fIsStringCDeclarator$fIsStringCExpression$fIsStringIdentbase Data.StringIsStringLanguage.C.Syntax.Ops CAssignOpCUnaryOp$fNumCExpression$fFractionalCExpression CTypeSpec CDeclSpecCDeclr$fExternalCStringLiteral$fExternalCDeclaration$fExternalCFunctionDef Language.C parseCFilePre parseCFileLanguage.C.Parser execParser_Language.C.PrettyprettyUsingInclude prettyPrecprettyPrettyLanguage.C.Parser.Parser expressionP statementPextDeclP translUnitPparseCLanguage.C.Parser.ParserMonad execParser ParseErrorPLanguage.C.Data.InputStream countLinesinputStreamFromStringinputStreamToStringreadInputStream takeCharsinputStreamEmptytakeChartakeByte InputStreamLanguage.C.Data.Error internalErr showErrorInfo showErroruserErrunsupportedFeature_unsupportedFeature errorMsgs errorLevelerrorPos mkErrorInfo isHardError LevelWarn LevelError LevelFatal ErrorLevel ErrorInfoCErrorchangeErrorLevel fromErrortoError errorInfoErrorUnsupportedFeature UserErrorLanguage.C.Parser.BuiltinbuiltinTypeNames liftStrLit cstringOfLitisSUEDefpartitionDeclSpecs CTranslUnitCTranslationUnitCExtDeclCDeclExtCFDefExtCAsmExtCExternalDeclarationCFunDef CFunctionDefCDecl CDeclaration CDeclarator CDerivedDeclr CPtrDeclr CArrDeclr CFunDeclrCDerivedDeclaratorCArrSize CNoArrSize CArraySizeCStatCLabelCCaseCCasesCDefault CCompoundCIfCSwitchCWhileCForCGotoCGotoPtrCContCBreakCReturnCAsm CStatementCAsmStmtCAssemblyStatement CAsmOperandCAssemblyOperand CBlockItem CBlockStmt CBlockDecl CNestedFunDefCCompoundBlockItem CStorageSpec CTypeQualCDeclarationSpecifierCAuto CRegisterCStaticCExternCTypedefCThreadCStorageSpecifier CVoidType CCharType CShortTypeCIntType CLongType CFloatType CDoubleType CSignedType CUnsigType CBoolType CComplexTypeCSUType CEnumTypeCTypeDef CTypeOfExpr CTypeOfTypeCTypeSpecifier CConstQual CVolatQual CRestrQual CInlineQual CAttrQualCTypeQualifier CStructUnionCStructCStructureUnion CStructTag CUnionTagCEnum CEnumerationCInit CInitExpr CInitList CInitializerCInitializerList CDesignator CArrDesig CMemberDesig CRangeDesigCPartDesignatorCAttr CAttributeCCommaCAssignCCondCBinaryCCastCUnary CSizeofExpr CSizeofType CAlignofExpr CAlignofType CComplexReal CComplexImagCIndexCCallCMemberCVarCConst CCompoundLit CStatExpr CLabAddrExpr CBuiltinExpr CExpressionCBuiltin CBuiltinVaArgCBuiltinOffsetOfCBuiltinTypesCompatible CBuiltinThing CIntConst CCharConst CFloatConst CStrConst CConstantCStrLitCStringLiteralamap annotation AnnotatedLanguage.C.Data.Ident identToStringisInternalIdent builtinIdent internalIdentmkIdentisAnonymousRef AnonymousRefNamedRefSUERefIdentLanguage.C.Syntax.ConstantstestFlag clearFlagsetFlagnoFlagsunescapeString unescapeChar escapeChar showStringLitconcatCStrings getCString cString_wcString readCFloatcFloatcInteger getCInteger readCIntegercCharscChar_wcChar isWideChar getCCharAsIntgetCChar showCharConstCCharCCharsDecReprHexRepr OctalReprCIntRepr FlagUnsignedFlagLong FlagLongLongFlagImagCIntFlagCIntegerCFloatCStringFlagsLanguage.C.Data.Node mkNodeInfomkNodeInfoOnlyPos undefNode internalNode fileOfNode posOfNode nameOfNodeOnlyPosNodeInfonodeInfoCNodeLanguage.C.Data.Name newNameSupplynameIdNameLanguage.C.Data.Position isInternalPos internalPos isBuiltinPos builtinPosnopos isSourcePosinitPos posColumnposRowposFile posOffsetPositionposOfPos CMulAssOp CDivAssOp CRmdAssOp CAddAssOp CSubAssOp CShlAssOp CShrAssOp CAndAssOp CXorAssOpCOrAssOpCMulOpCDivOpCRmdOpCAddOpCSubOpCShlOpCShrOpCLeOpCGrOpCLeqOpCGeqOpCEqOpCNeqOpCAndOpCXorOpCOrOpCLndOpCLorOp CBinaryOp CPreIncOp CPreDecOp CPostIncOp CPostDecOpCAdrOpCIndOpCPlusOpCMinOpCCompOpCNegOp