"%      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~             !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$&(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMTC unary operator (K&R A7.3-4)prefix increment operatorprefix decrement operatorpostfix increment operatorpostfix decrement operatoraddress operatorindirection operator prefix plus prefix minus one's complement logical negation  C binary operators (K&R A7.6-15)remainder of division shift left shift rightlessgreater less or equalgreater or equalequal not equal bitwise andexclusive bitwise orinclusive bitwise or logical and logical or"C assignment operators (K&R A7.17)"remainder and assignment0  !"#$%&'()*+,-./0  !"#$%&'()*+,-./0 !"#$%&'()* +,-. /     !"#$%&'()*+,-./,(c) 2007..2008 Duncan Coutts, Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT>C String literals@Clang dotted version literal @https://clang.llvm.org/docs/AttributeReference.html#availabilityBFloats (represented as strings)F-datatype representing type flags for integersK8datatype for memorizing the representation of an integerOC char constants (abstract)RshowCharConst cG prepends _a_ String representing the C char constant corresponding to c;. If necessary uses octal or hexadecimal escape sequences.S1get the haskell representation of a char constantTVget integer value of a C char constant undefined result for multi-char char constantsUreturn true if the character constant is wide.V.construct a character constant from a haskell % Use cchar_w' if you want a wide character constant.W%construct a wide chararacter constantX+create a multi-character character constant[Hconstruct a integer constant (without type flags) from a haskell integerb'concatenate a list of C string literalscshowStringLiteral sF prepends a String representing the C string literal corresponding to s>. If necessary it uses octal or hexadecimal escape sequences.&isAsciiSourceChar b returns Truee if the given character is a character which may appear in a ASCII C source file and is printable.' isCChar cq returns true, if c is a source character which does not have to be escaped in C char constants (C99: 6.4.4.4)( escapeCChar c% escapes c for use in a char constant) isSChar cn returns true if c is a source character which does not have to be escaped in C string literals (C99: 6.4.5)@<=>?@ABCDEFGHIJKLMNOPQR*STUVWXYZ[\]^_`a+bc&'(),de-f./0ghijklmnop/<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij/def<=ghijVWXOPQSTURFGHIJKLMN[DEZY\BC]_`>?acb@A^2<=>?@ABCDEFGHIJKLMNOPQR*STUVWXYZ[\]^_`a+bc&'(),de-f./0ghijklmnop.(c) [2007..2008] Duncan Coutts, Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT 123456789:;< 123456789:;< 123456789:;<65Y(c) [1995..2000] Manuel M. T. Chakravarty [2008..2009] Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT4class of type which aggregate a source code locationPosition and length of a token/uniform representation of source file positions(absolute offset in the preprocessed file source file<row (line) in the original file. Affected by #LINE pragmas.rcolumn in the preprocessed file. Inaccurate w.r.t. to the original file in the presence of preprocessor macros.8position absoluteOffset fileName lineNumber columnNumber initializes a Position using the given argumentsUinitialize a Position to the start of the translation unit starting in the given filereturns True6 if the given position refers to an actual source file.no position (for unknown position information)returns True2 if the there is no position information available%position attached to built-in objectsreturns True5 if the given position refers to a builtin definition!position used for internal errorsreturns True" if the given position is internaladvance columnadvance to next lineadjust position: change file and line number, reseting column to 1. This is usually used for #LINE pragmas. The absolute offset is not changed - this can be done by /adjustPos newFile line . incPos (length pragma).advance just the offset=>?@=>?@(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMTName is a unique identifierreturn an infinite stream of s starting with nameId 0Gget the infinite stream of unique names starting from the given integerf(c) [1995..1999] Manuel M. T. Chakravarty (c) 2008 Benedikt Huber (stripped radically) BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT Ga class for convenient access to the attributes of an attributed objectParsed entity attribute.get the number of characters an AST node spans-get the position and length of the last tokenequality by name:create a node with neither name nor positional informationGreturn True if the node carries neither name nor positional information;| Given only a source position, create a new node attributebGiven a source position and the position and length of the last token, create a new node attributeMGiven a source position and a unique name, create a new attribute identifierGiven a source position, the position and length of the last token and a unique name, create a new attribute identifier. Strict in(c) 2008,2011 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT(b,is') = takeByte is# reads and removes the first byte b from the  is(c,is') = takeChar is( reads and removes the first character c from the  isreturn True# if the given input stream is emptystr = takeChars n is returns the first n= characters of the given input stream, without removing themread a file into an convert  to A convert a A to an  countLines1 returns the number of text lines in the given  (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalportableNone0AIMT&Generic arguments for the preprocessor$Generic Options for the preprocessorA encapsulates the abstract interface for invoking C preprocessorsYparse the given command line arguments, and return a pair of parsed and ignored argumentsrun the preprocessorB%file extension of a preprocessed file4Cpp arguments that only specify the input file name.;use the given preprocessor arguments without analyzing them6add a typed option to the given preprocessor arguments7add a string option to the given preprocessor arguments#run the preprocessor and return an  if preprocesssing succeededCcreate an output file, given  Maybe tmpdir and  inputfileD-compute output file name from input file nameEcreate a temporary file7guess whether a file is preprocessed (file end with .i)BCDE BCDE(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalportableNone0AIMTGCC+ represents a reference to the gcc compilercreate a reference to gccFParse arguments for preprocessing via GCC. At least one .c, .hc or .h file has to be present. For now we only support the most important gcc options.|1) Parse all flags relevant to CppArgs 2) Move -c,-S,-M? to other_args 3) Strip -E 4) The rest goes into extra_argsGHIFJGHIFJ Q(c) [1995..1999] Manuel M. T. Chakravarty (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT  C identifiersReferences uniquely determining a struct, union or enum type. Those are either identified by an string identifier, or by a unique name (anonymous types).<Return true if the struct/union/enum reference is anonymous."build an identifier from a string.only minimal error checking, e.g., the characters of the identifier are not checked for being alphanumerical only; the correct lexis of the identifier should be ensured by the caller, e.g., the scanner.8for reasons of simplicity the complete lexeme is hashed. returns an internal6 identifier (has internal position and no unique name) return an internal identifier with position info returns a builtin5 identifier (has builtin position and no unique name)return True if the given identifier is internalstring of an identifierCdump the identifier string and its positions for debugging purposesKLMNO KLMNO!(c) 2001 Manuel M. T. Chakravarty BSD-stylebenedikt.huber@gmail.comportableNone0AIMT F[1999..2004] Manuel M T Chakravarty 2005 Duncan Coutts BSD-stylebenedikt.huber@gmail.com%portable C Tokens for the C lexer.None0AIMTvPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~tPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PQRSTUVWXYZh[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ O(c) [1999..2007] Manuel M T Chakravarty (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone 09AIMT[All AST nodes are annotated. Inspired by the Annotated class of Niklas Broberg's haskell-src-exts package. In principle, we could have Copointed superclass instead of ann&, for the price of another dependency.!get the annotation of an AST nodepchange the annotation (non-recursively) of an AST node. Use fmap for recursively modifying the annotation. Attributed string literalsC constant (K&R A2.5 & A7.2)  (expr, type) (type, designator-list)  (type,type)*GNU Builtins, which cannot be typed in C99&7integer, character, floating point and string constants'C99 compound literal(C11 generic selection) GNU C compound statement as expr*GNU C address of label+builtin expressions, see ,C expression (K&R A7)6these can be arbitrary expression, as the argument of sizeof@ can be arbitrary, even if appearing in a constant expressionGNU C extensions: alignof, __real, __imag, ({ stmt-expr }), && label and built-ins/ attribute annotationsThose are of the form )CAttr attribute-name attribute-parameters@, and serve as generic properties of some syntax tree elements.1array position designator2member designator3array range designator CRangeDesig from to _ (GNU C)4 DesignatorsA designator specifies a member of an object, either an element or range of an array, or the named member of a struct / union.6Initializer List3The members of an initializer list are of the form (designator-list,initializer). The designator-list 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).2Examples (simplified expressions and identifiers): @-- 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] -- struct { struct { int a[2]; int b[2]; int c[2]; } s; } x = { .s = { {2,3} , .c[0] = 1 } }; -- corresponds to the assignments -- x.s.a[0] = 2; x.s.a[1] = 3; x.s.c[0] = 1; let init_s_0 = CInitList [ ([], CInitExpr 2), ([], CInitExpr 3)] init_s = CInitList [ ([], init_s_0), ([CMemberDesig "c", CArrDesig 0], CInitExpr 1) ] in CInitList [(CMemberDesig "s", init_s)]8assignment expression9initialization list (see 6):&C initialization (K&R A8.7, C99 6.7.8)Initializers are either assignment expressions or initializer lists (surrounded in curly braces), whose elements are themselves initializers, paired with an optional list of designators.=/C enumeration specifier (K&R A8.4, C99 6.7.2.2)&CEnum identifier enumerator-list attrs represent as enum specifierJEither the identifier or the enumerator-list (or both) have to be present.If enumerator-list$ is present, it has to be non-empty.#The enumerator list is of the form *(enumeration-constant, enumeration-value?)C, where the latter is an optional constant integral expression.attrs is a list of  attribute6 annotations associated with the enumeration specifier>(A tag to determine wheter we refer to a struct or union, see C.C7C structure or union specifiers (K&R A8.3, C99 6.7.2.1)+CStruct tag identifier struct-decls c-attrs6 represents a struct or union specifier (depending on tag).either  identifier or the declaration list  struct-decls (or both) have to be present. Example: in  struct foo x; , the identifier is present, in struct { int y; } x# the declaration list, and in struct foo { int y; } x; both of them.c-attrs is a list of  attribute: annotations associated with the struct or union specifierE _Alignas(type)F _Alignas(expr)G"C alignment specifiers (C99 6.7.5)K!C function specifiers (C99 6.7.4)function specifiers inline and  _NoreturnT7C type qualifiers (K&R A8.2, C99 6.7.3) and attributes.const, volatile and restrict type qualifiers Additionally,  attributeG annotations for declarations and declarators, and function specifiersbStruct or Union specifiercEnumeration specifierd Typedef namee  typeof(expr)f  typeof(type)g  _Atomic(type)h&C type specifier (K&R A8.2, C99 6.7.2)/Type specifiers are either basic types such as char or int, struct, union or enum specifiers or typedef names.As a GNU extension, a typeof% expression also is a type specifier.jautokregisterlstaticmexternntypedefoC11/GNUC thread local storagep>C storage class specifier (and typedefs) (K&R A8.1, C99 6.7.1)r"storage-class specifier or typedefs type namettype qualifierufunction specifiervalignment specifierw'C declaration specifiers and qualifiersDeclaration specifiers include at most one storage-class specifier (C99 6.7.1), type specifiers (6.7.2) and type qualifiers (6.7.3).y A statementzA local declaration{A nested function (GNU C)|C99 Block itemsqThings that may appear in compound statements: either statements, declarations or nested function definitions.Assembler operand'CAsmOperand argName? constraintExpr arg2 specifies an operand for an assembler statement.GNU Assembler statement @CAssemblyStatement type-qual? asm-expr out-ops in-ops clobbers _Ois an inline assembler statement. The only type-qualifier (if any) allowed is volatile. asm-expr0 is the actual assembler epxression (a string), out-ops and in-ops7 are the input and output operands of the statement. clobbersR is a list of registers which are clobbered when executing the assembler statement-An (attributed) label followed by a statementA statement of the form case expr : stmtA case range of the form case lower ... upper : stmtThe default case default : stmtjA simple statement, that is in C: evaluating an expression with side-effects and discarding the result.compound statement #CCompound localLabels blockItems atconditional statement $CIf ifExpr thenStmt maybeElseStmt atswitch statement CSwitch selectorExpr switchStmt , where  switchStmt usually includes case, break and default statementswhile or do-while statement CWhile guard stmt isDoWhile atfor statement CFor init expr-2 expr-3 stmt, where init4 is either a declaration or initializing expressiongoto statement  CGoto labelcomputed goto CGotoPtr labelExprcontinue statementbreak statementreturn statement CReturn returnExprassembly statementC statement (K&R A9, C99 6.8) CUnknownSize isCompleteType CArrSize isStatic exprSize of an arrayPointer declarator CPtrDeclr tyquals declrArray declarator "CArrDeclr declr tyquals size-expr?Function declarator =CFunDeclr declr (old-style-params | new-style-params) c-attrsDerived declarators, see YIndirections are qualified using type-qualifiers and generic attributes, and additionallyGThe size of an array is either a constant expression, variable length () 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.(New style parameter lists have the form  Right (declarations, isVariadic)0, old style parameter lists have the form Left (parameter-names)PC declarator (K&R A8.5, C99 6.7.5) and abstract declarator (K&R A8.8, C99 6.7.6)gA declarator declares a single object, function, or type. It is always associated with a declaration (), which specifies the declaration's type and the additional storage qualifiers and attributes, which apply to the declared object.A declarator is of the form +CDeclr name? indirections asm-name? attrs _ , where nameI is the name of the declared object (missing for abstract declarators),  declquals1 is a set of additional declaration specifiers, asm-nameN is the optional assembler name and attributes is a set of attrs is a set of  attribute% annotations for the declared object. indirections is a set of pointer, array and function declarators, which modify the type of the declared object as described below. If the  declaration specifies the non-derived type T, and we have  indirections = [D1, D2, ..., Dn]$ than the declared object has type (D1 indirect (D2 indirect ... (Dn indirect T))), where(CPtrDeclr attrs) indirect T is attributed pointer to T(CFunDeclr attrs) indirect T is attributed function returning T(CArrayDeclr attrs) indirect T is (attributed array of elemements of type T!Examples (simplified attributes):x is an int int x; CDeclr "x" []x0 is a restrict pointer to a const pointer to int Tconst int * const * restrict x; CDeclr "x" [CPtrDeclr [restrict], CPtrDeclr [const]]f0 is an function return a constant pointer to int ;int* const f(); CDeclr "f" [CFunDeclr [],CPtrDeclr [const]]f2 is a constant pointer to a function returning int Cint (* const f)(); ==> CDeclr "f" [CPtrDeclr [const], CFunDeclr []]mC declarations (K&R A8, C99 6.7), including structure declarations, parameter declarations and type names.A declaration is of the form %CDecl specifiers init-declarator-listX, where the form of the declarator list's elements depends on the kind of declaration:61) Toplevel declarations (K&R A8, C99 6.7 declaration)`C99 requires that there is at least one specifier, though this is merely a syntactic restriction>at most one storage class specifier is allowed per declarationthe elements of the non-empty init-declarator-list are of the form (Just declr, init?, Nothing). The declarator declrX has to be present and non-abstract and the initialization expression is optional.D2) Structure declarations (K&R A8.3, C99 6.7.2.1 struct-declaration)4Those are the declarations of a structure's members.do not allow storage specifiers:in strict C99, the list of declarators has to be non-emptythe elements of init-declarator-list are either of the form (Just declr, Nothing, size?)J, representing a member with optional bit-field size, or of the form (Nothing, Nothing, Just size), for unnamed bitfields. declr has to be non-abstract.3no member of a structure shall have incomplete typeG3) Parameter declarations (K&R A8.6.3, C99 6.7.5 parameter-declaration)init-declarator-list- must contain at most one triple of the form (Just declr, Nothing, Nothing)[, i.e. consist of a single declarator, which is allowed to be abstract (i.e. unnamed).4) Type names (A8.8, C99 6.7.6)do not allow storage specifiersinit-declarator-list- must contain at most one triple of the form (Just declr, Nothing, Nothing) . where declrG is an abstract declarator (i.e. doesn't contain a declared identifier),C function definition (C99 6.9.1, K&R A10.1)%A function definition is of the form ,CFunDef specifiers declarator decllist? stmt. specifiersm are the type and storage-class specifiers of the function. The only storage-class specifiers allowed are extern and static.The  declarator/ must be such that the declared identifier has  function typeK. The return type shall be void or an object type other than array type.The optional declaration list decllist( is for old-style function declarations.The statement stmt is a compound statement.)External C declaration (C99 6.9, K&R A10)IEither a toplevel declaration, function definition or external assembler..Complete C tranlsation unit (C99 6.9, K&R A10)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.#Separate the declaration specifiers attributel of a declaration qualify declarations or declarators (but not types), and are therefore separated as well.returns True2 if the given typespec is a struct, union or enum  definition%Lift a string literal to a C constant      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()     & !"#$%'()*+,-./0123456798:;<=>?@ABCDEFGHIJKLQMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~C=>?@AB;<wphTKG/HIJqrstuvijklmnoUVWXYZ[\]^_`abcdefgDEFLMNOPQRS-.:6478950123|xyz{}~, !"#$%&'()*+ !"#$%&'()             !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     !(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT   !"#$%&'()<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij     & !"#$%'()*+,-./0123456798:;<=>?@ABCDEFGHIJKLQMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None0AIMTRSTURSTURSTURSTU 1(c) 2008 Benedikt Huber, Manuel M. T. Chakravarty BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMTVgunspecified error raised by the user (in case the user does not want to define her own error types).WSerror raised if a operation requires an unsupported or not yet implemented feature.X%errors in Language.C are instance of XY'obtain source location etc. of an errorZwrap error in ][try to cast a generic ] to the specific error type\modify the error level] supertype of all errors_1information attached to every error in Language.CaError levels (severity)ereturn TrueQ when the given error makes it impossible to continue analysis or compilation.gposition of an Errorhseverity level of an Errorimessage lines of an Errorn4converts an error into a string using a fixed formatSeither the lines of the long error message or the short message has to be non-empty the format is e <fname>:<row>: (column <col>) [<err lvl>] >>> <line_1> <line_2> ... <line_n>o=raise a fatal internal error; message may have multiple lines(VWXYZ[\]^_`abcdefghijklmnopqrstuvwxVWXY\Z[]^_`abcdefghijklmnoabcdeXYZ[\ghi]^_`mnfWjkVloVWXYZ[\]^_`abcdefghijklmnopqrstuvwx"S(c) [1999..2004] Manuel M T Chakravarty (c) 2005-2007 Duncan Coutts BSD-stylebenedikt.huber@gmail.comportableNone0AIMT~Bexecute the given parser on the supplied input stream. returns |R if the parser failed, and a pair of result and remaining name supply otherwise Synopsis: JexecParser parser inputStream initialPos predefinedTypedefs uniqNameSupply setLastToken modifyCache tok0handle an End-Of-File token (changes savedToken)({|}~{|}~{|}~#None 0ABIMTq      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abf      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab$None" /023459:;<=?@ABCDFIJKMNOQRTparseC input initialPos\ parses the given preprocessed C-source input and returns the AST or a list of parse errors. translUnitP[ provides a parser for a complete C translation unit, i.e. a list of external declarations.extDeclP; provides a parser for an external (file-scope) declaration statementP# provides a parser for C statements expressionP$ provides a parser for C expressions)cdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  #cdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  e9 f9 %(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMTKVWXY\Z[]^_`abcdefghijklmno( (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMTIrun the given parser using a new name supply and builtin typedefs see ~ Synopsis: 'runParser parser inputStream initialPos {|}~ {~|}XCopyright (c) 2007 Bertram Felgenhauer (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com experimentalportableNone 09:;AIMT,A class of types which can be pretty printedpretty print the given valueprettyPrec prec pM pretty prints p assuming that the surrounding context has a precedence of precXPretty print the given tranlation unit, but replace declarations from header files with #include directives.7The resulting file may not compile (because of missing #define directives and similar things), but is very useful for testing, as otherwise the pretty printed file will be cluttered with declarations from system headers.*  (  (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaghcNone0AIMTW is currently an alias for , (Syntax) is an alias for  (Syntax) attribute annotationsThose are of the form (Attr attribute-name attribute-parameters@, and serve as generic properties of some syntax tree elements.Some examples:labels can be attributed with unused to indicate that their not used*struct definitions can be attributed with packed< to tell the compiler to use the most compact representation$declarations can be attributed with  deprecated-function declarations can be attributes with noreturn: to tell the compiler that the function will never return,or with const' to indicate that it is a pure functionTODOM: ultimatively, we want to parse attributes and represent them in a typed wayAssembler name (alias for CStrLit)%Top level assembler block (alias for CStrLit)VarName name assembler-name is a name of an declared object is currently an alias for :.uWe're planning a normalized representation, but this depends on the implementation of constant expression evaluation0Type qualifiers: constant, volatile and restrictXAn Enumerator consists of an identifier, a constant expressions and the link to its type%Representation of C enumeration types .EnumType name enumeration-constants attrs node(a tag to determine wheter we refer to a struct or union, see .!Composite type (struct or union).composite type declarations!floating point type (C99 6.7.2.2)integral types (C99 6.7.2.2)Ntypdef references If the actual type is known, it is attached for convenience Builtin type (va_list, anything)normalized type representationAn array type may either have unknown size or a specified array size, the latter either variable or constant. Furthermore, when used as a function parameters, the size may be qualified as staticI. In a function prototype, the size may be `Unspecified variable size' ([*]). UnknownArraySize is-starred "FixedSizeArray is-static size-exprFunction types are of the form %FunType return-type params isVariadic.?If the parameter types aren't yet known, the function has type FunTypeIncomplete type attrs.types of C objectsa non-derived type pointer type array type function typea defined typeHLinkage: Either no linkage, internal to the translation unit or external*Storage duration and linkage of a variable no storage&automatic storage (optional: register)?static storage, linkage spec and thread local specifier (gnu c)-function, either internal or external linkage#Declaration attributes of the form 0DeclAttrs isInlineFunction storage linkage attrs:They specify the storage and linkage of a declared object. DeclAttrs fspecs storage attrsGeneric variable declarationstypedef definitions.0The identifier is a new name for the given type.Struct/Union member declaration $MemberDecl vardecl bitfieldsize node AnonBitField typ size Parameter declaration Function definitionsUA function definition is a declaration together with a statement (the function body).Object DefinitionsCAn object definition is a declaration together with an initializer.rIf the initializer is missing, it is a tentative definition, i.e. a definition which might be overriden later on.&Declarations, which aren't definitionsDeclaration eventsPThose events are reported to callbacks, which are executed during the traversal."file-scope struct/union/enum event$file-scope declaration or definitionparameter declaration(local variable declaration or definitiona type definitionassembler block<global declaration/definition table returned by the analysis?identifiers, typedefs and enumeration constants (namespace sum) object or function declaration!object definition"function definition#definition of an enumerator$9All datatypes aggregating a declaration are instances of  Declaration%Lget the name, type and declaration attributes of a declaration or definition&!Composite type definitions (tags))6accessor class : composite type tags (struct or union)+(accessor class : struct/union/enum names-1return the type corresponding to a tag definition 1get the declaration corresponding to a definition.kget the variable identifier of a declaration (only safe if the the declaration is known to have a name)/get the variable name of a  Declaration0get the type of a  Declaration1$get the declaration attributes of a  Declaration2,textual description of the kind of an object3splitIdentDecls includeAllDecls splits a map of object, function and enumerator declarations and definitions into one map holding declarations, and three maps for object definitions, enumerator definitions and function definitions. If includeAllDecls is Trueu all declarations are present in the first map, otherwise only those where no corresponding definition is available.4empty global declaration table5filter global declarations6merge global declarations7Returns True- if the given object definition is tentative.8return the idenitifier of a typedef:get the  of a declaration;.get the `function attributes' of a declaration=return True if the object has linkage>Get the linkage of a definition?.return the type of a composite type definition@%return the type of an enum definitionAno type qualifiersBmerge (&&) two type qualifier setsEEmpty attribute listFMerge attribute lists TODO&: currently does not remove duplicates      !"#$%&'()*+,- ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF&'(-$%./01 !"#234567     89;<:=>+,)*?@ABCDEF{      !"#$%&'()*+,- ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{None0AIMToFor an arithmetic operator, if the arguments are of the given types, return the type of the full expression.None0AIMT'Constructor for a simple integral type.-Constructor for a simple floating-point type.#A simple pointer with no qualifiers A pointer with the const qualifier.The underlying type for uint16_t. For now, this is just unsigned short.The underlying type for uint32_t. For now, this is just  unsigned int.The underlying type for uint64_t. For now, this is just unsigned long long.<The type returned by sizeof (size_t). For now, this is just int.CThe type of pointer differences (ptrdiff_t). For now, this is just int.4The type of comparisons/guards. This is always just int.Simple void type.An unqualified void pointer.A const -qualified void pointer.An unqualified char pointer.A const -qualified char pointer.The type of a constant string.3The builtin type of variable-length argument lists.8Check whether a type is an integral type. This includes enum5 types. This function does not attempt to resolve typedef types.dCheck whether a type is a floating-point numeric type. This function does not attempt to resolve typedef types.qCheck whether a type is an pointer type. This includes array types. This function does not attempt to resolve typedef types.bCheck whether a type is a scalar type. Scalar types include arithmetic types and pointer types.return True% if the given type is a function type9Result is undefined in the presence of undefined typeDefs Return the qualifiers of a type. Return the attributes of a type.Return the base type of a pointer or array type. It is an error to call this function with a type that is not in one of those two categories.resolve typedefs, if possible$Attempt to remove all references to typedef types from a given type. Note that this does not dereference the types of structure or union fields, so there are still cases where further dereferencing is needed. True iff Type is a variable length array or a derived type thereof. Variably modified types have function or block scope, so only some constructions are possible.zTwo types denote the same type if they are identical, ignoring type definitions, and neither is a variably modified type. Returns  k iff both array sizes denote the same size. Assumes that neither array type was a variably modified type.*      *    (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaghcNone0AIMTNRedefError is caused by an invalid redefinition of the same identifier or typeCBadSpecifierError is caused by an invalid combination of specifiersEInvalidASTError is caused by the violation of an invariant in the AST!  Q(c) [1995..1999] Manuel M. T. Chakravarty (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaportableNone0AIMT NameSpaceMap a is a Map from identifiers to a., which manages global and local name spaces.create a name spaceAdd global definition%(ns',oldDef) = defGlobal ns ident def adds a global definition  ident := def8 to the namespace. It returns the modified namespace ns'|. If the identifier is already declared in the global namespace, the definition is overwritten and the old definition oldDef is returned.Enter new local scopens' = enterNewScope ns& creates and enters a new local scope.Leave innermost local scope(ns',defs) = leaveScope nsE pops leaves the innermost local scope. and returns its definitionsAdd local definition$(ns',oldDef) = defLocal ns ident def adds the local definition  ident := def to the innermost local scope, if there is a local scope, and to the global scope otherwise. It returns the modified name space ns'+ and the old binding of the identifier oldDef, which is overwritten.Search for a definitiondef = find ns identI returns the definition in some scope (inner to outer), if there is one.%flatten a namespace into a assoc list [nameSpaceToList ns = (localDefInnermost ns ++ .. ++ localDefsOutermost ns) ++ globalDefs nsZMerge two namespaces. If they disagree on the types of any variables, all bets are off.  (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com prototypeghcNone0AIMTExport Declarator Synopsis: 5exportDeclr other_specs type attributes variable-nameExport a type to syntax 3export function attributes to C function specifiers /express storage in terms of storage specifiers.sThis isn't always possible and depends on the context the identifier is declared. Most importantly, if there is a  conflicting declaration in scope, export is impossible. Furthermore, automatic storage is impossible in file scope. If the storage can actually be specified, the export is correct.       {(c) 2008 Benedikt Huber based on code from c2hs (c) [1999..2001] Manuel M. T. Chakravarty BSD-stylebenedikt.huber@gmail.comalphaghcNone0AIMT%Status of a declaration new entryold def was overwrittennew def was discarded"new def shadows one in outer scope kind mismatch!Table holding current definitionsdeclared `ordinary identifiers' declared structunion enum tags defined labels  member declarations (only local) link names with definitionsOTag names map to forward declarations or definitions of struct/union/enum types All ordinary identifiers map to  IdenTyDecl2: either a typedef or a object/function/enumerator@empty definition table, with all name space maps in global scope6get the globally defined entries of a definition table8Enter function scope (AND the corresponding block scope)\Leave function scope, and return the associated DefTable. Error if not in function scope.Enter new block scopeLeave innermost block scope"Enter new member declaration scope(Leave innermost member declaration scope sameTagKind ty1 ty2 returns True if ty1,ty20 are the same kind of tag (struct,union or enum)/declare/define a global object/function/typeDefreturns Redeclared defF if there is already an object/function/typeDef in global scope, or DifferentKindRedec def/ if the old declaration is of a different kind. ;declare/define a object/function/typeDef with lexical scopereturns Redeclared def or DifferentKindRedec defE if there is already an object/function/typeDef in the same scope.!ndeclare/define a object/function/typeDef with lexical scope, if the given predicate holds on the old entry.returns  Keep old_def? if the old definition shouldn't be overwritten, and otherwise Redeclared def or DifferentKindRedecl defC if there is already an object/function/typeDef in the same scope."Bdeclare a tag (fwd decl in case the struct name isn't defined yet)# define a tag$Vdefine a label Return the old label if it is already defined in this function's scope%9lookup identifier (object, function, typeDef, enumerator)& lookup tag' lookup label('lookup an object in the innermost scope)+lookup an identifier in the innermost scope*Record the type of a node.+Lookup the type of a node.,fMerge two DefTables. If both tables contain an entry for a given key, they must agree on its value.;         !"#$%&'()*+,-./-      !"#$%&'()*+,-      !"#$%&'()*+,+          !"#$%&'()*+,-./(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.com prototypeghcNone 09;AIMT$345 6789:;<=>?@ABCDEFGHIJKLMNOPQRS345534$345 6789:;<=>?@ABCDEFGHIJKLMNOPQRSNone0AIMTTTTT(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaghcNone09:;<=AIMOTZHThe variety of the C language to accept. Note: this is not yet enforced._:simple traversal monad, providing user state and callbacks`Traversal monada%handling declarations and definitionsc throw an Xd catch an X2 (we could implement dynamically-typed catch here)eremember that an X occurred (without throwing it)f"return the list of recorded errorshreturn the definition tablei0perform an action modifying the definition tablekunique name generationlhforward declaration of a tag. Only necessary for name analysis, but otherwise no semantic consequences.mdefine the given composite type or enumeration If there is a declaration visible, overwrite it with the definition. Otherwise, enter a new definition in the current namespace. If there is already a definition present, yield an error (redeclaration).q/handle variable declarations (external object declarations and function prototypes) variable declarations are either function prototypes, or external declarations, and not very interesting on their own. we only put them in the symbol table and call the handle. declarations never override definitionsr[handle parameter declaration. The interesting part is that parameters can be abstract (if they are part of a type). If they have a name, we enter the name (usually in function prototype or function scope), checking if there are duplicate definitions. FIXME: I think it would be more transparent to handle parameter declarations in a special wayshandle function definitionst*handle object defintions (maybe tentative){lookup a type definition the 'wrong kind of object' is an internal error here, because the parser should distinguish typeDefs and other objects|(lookup an object, function or enumerator -add link between use and definition (private)})create a reference to a struct/union/enumThis currently depends on the fact the structs are tagged with unique names. We could use the name generation of TravMonad as well, which might be the better choice when dealing with autogenerated code.,check wheter non-recoverable errors occurred(raise an error caused by a malformed AST*raise an error based on an Either argumentXU V WXYZ[\]^_ `abcdefghijk lmnop qr s t uvwxyz{| }~  :UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~;jkghibcdef`almnotsqrpuvwxyz{|}~_UVVWXYZ[\]^AU V WXYZ[\]^_ `abcdefghijk lmnop qr s t uvwxyz{| }~  None 09;AIMT !Determine the type of a constant.+Determine whether two types are compatible.5Determine the composite type of two compatible types.GDetermine whether two types are compatible in an assignment expression.)Determine the type of a binary operation./Determine the type of a conditional expression.Get the type of field m of type tgGet all members of a struct, union, or enum, with their types. Collapse fields of anonymous members.]Expand an anonymous composite type into a list of member names and their associated types.""""(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaghcNone 0:AIMT banalyse and translate a parameter declaration Should be called in either prototype or block scope Ja parameter declaration has no linkage and either auto or register storage *analyse and translate a member declarationanalyse declaratorsget the type of a type declarationA type declaration T may appear in thre forms:  typeof(T)6as abstract declarator in a function prototype, as in f(int),in a declaration without declarators, as in struct x { int a } ; Currently, analyseTypeDecl2 is exlusively used for analysing types for GNU's  typeof(T).SWe move attributes to the type, as they have no meaning for the abstract declaratortranslate a typeBtranslate a type without (syntactic) indirections Due to the GNU typeof6 extension and typeDefs, this can be an arbitrary type Merge type attributes!This handles for example the form  const typeof(char volatile) x; translate a enum type decl &enum my_enum enum your_enum { x, y=3 } )translate and analyse an enumeration typeUMapping from num type specs to C types (C99 6.7.2-2), ignoring the complex qualifier.convert old style parametersUThis requires matching parameter names and declarations, as in the following example: $int f(d,c,a,b) char a,*b; int c; { }is converted to $int f(int d, int c, char a, char* b)CTODO: This could be moved to syntax, as it operates on the AST only Vsplit a CDecl into declarators, hereby eliding SUE defs from the second declarator on.There are several reasons why this isn't the preferred way for handling multiple-declarator declarations, but it can be convinient some times. ZsplitCDecl [d| struct x { int z; } a,*b; |] [ [d| struct x { int z; } a, struct x *b; |] ]TODO?: This could be moved to syntax, as it operates on the AST only translate  attribute2 annotations TODO: This is a unwrap and wrap stub9construct a name for a variable TODO: more or less bogusE     88%     None 0AIMT                      (c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaghcNone0AIMTAnalyse the given ASTanalyseAST ast results in global declaration dictionaries. If you want to perform specific actions on declarations or definitions, you may provide callbacks in the  MonadTrav m.Returns the set of global declarations and definitions which where successfully translated. It is the users responsibility to check whether any hard errors occurred (runTrav does this for you). Analyse an top-level declarationAnalyse a function definition6Analyse a declaration other than a function definition(Note: static assertions are not analysed Analyse a typedef (compute storage of a function definitionLa function definition has static storage with internal linkage if specified static-, the previously declared linkage if any if extern7 or no specifier are present. (See C99 6.2.2, clause 5){This function won't raise an Trav error if the declaration is incompatible with the existing one, this case is handled in s. handle a function prototype (handle a object declaration / definitionWe have to check the storage specifiers here, as they determine wheter we're dealing with decalartions or definitions see [http:/www.sivity.netprojects language.cwiki/ExternalDefinitions] Dhandle a function-scope object declaration / definition see [http:/www.sivity.netprojects language.cwiki/LocalDefinitions] lGiven a context, determine the type declaration for the enclosing function, if possible, given a context.XTypecheck a statement, given a statement context. The type of a statement is usually voidI, but expression statements and blocks can sometimes have other types. Typecheck a block item. When statement expressions are blocks, they have the type of their last expression statement, so this needs to return a type. `Typecheck an expression, with information about whether it appears as an lvalue or an rvalue. Return the type of a builtin.&        !      &(c) 2008 Benedikt Huber BSD-stylebenedikt.huber@gmail.comalphaghcNone0AIMT;      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF345UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (c) 2008 Benedikt Huber [1995..2007] Manuel M. T. Chakravarty Duncan Coutts Betram Felgenhauer BSD-stylebenedikt.huber@gmail.com experimentalghcNone0AIMT#3preprocess (if necessary) and parse a C source file Synopsis: parseCFile preprocesssor tmp-dir? cpp-opts file Example: parseCFile (newGCC "gcc") Nothing ["-I/usr/include/gtk-2.0"] my-gtk-exts.c$$parse an already preprocessed C file Synopsis: parseCFilePre file.i#$e  !"#$%&'()<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij     & !"#$%'()*+,-./0123456798:;<=>?@ABCDEFGHIJKLQMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~VWXY\Z[]^_`abcdefghijklmno{|}~#$#$#$ '()*+,-./0123456789:;<=>?@ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abbccddeeffghijklmnoppqrstuvwxyz{|}~                         ! " # $ $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ * A B C D E F G H H I J K L M N O P Q O R S T T U U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~           ~ j a ]                  F                                                                                                                                                ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f f g g h i j k l m n o p q r s t u v w x y z { | } ~   """"$$$$$        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+, - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                            _ `   """"""""""""""""""""""""""""""""""""############################################################ # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>$?$@$A$A$B$C$D$D$E$F$G$H$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ !$ "$ #$ $$ %$ &$ '$ ($ )$ *$ +$ ,$ -$ .$ /$ 0$ 1$ 2$ 3$ 4$ 5$ 6$ 7$ 8$ 9$ :$ ;$ <$ =$ >$ ?$ @$ A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$ O$ P$ Q$ R$ S$ T$ U$ V$ W$ X$ Y$ Z$ [$ \$ ]$ ^$ _$ `$ a$ b$ c$ d$ e$ f$ g$ h$ i$ j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ {$ |$ }$ ~$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ !$ "$ #$ $$ %$ &$ '$ ($ )$ *$ +$ ,$ -$ .$ /$ 0$ 1$ 2$ 3$ 4$ 5$ 6$ 7$ 8$ 9$ :$ ;$ <$ =$ >$ ?$ @$ A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$ O$ P$ Q$ R$ S$ T$ U$ V$ W$ X$ Y$ Z$ [$ \$ ]$ ^$ _$ `$ a$ b$ c$ d$ e$ f$ g$ h$ i$ j$ k$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ {$ |$ }$ ~$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ !$ "$ #$ $$ %$ &$ '$ ($ )$ *$ +$ ,$ -$ .$ /$ 0$ 1$ 2$ 3$ 4$ 5$ 6$ 7$ 8$ 9$ :$ ;$ <$ =$ >$ ?$ @$ A$ B$ C$ D$ E$ F$ G$ H$ I$ J$ K$ L$ M$ N$ O$ P$ Q$ R$ S$ T$ U$ V$ W$ X$ Y$ Z$ [$ \$ ]$ ^$ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ?     H                            A                     %language-c-0.6-FC430zO7mmHKtptpqY92aeLanguage.C.Syntax.OpsLanguage.C.Syntax.ConstantsLanguage.C.Data.PositionLanguage.C.Data.NameLanguage.C.Data.NodeLanguage.C.Data.InputStreamLanguage.C.System.PreprocessLanguage.C.System.GCCLanguage.C.Data.IdentLanguage.C.ParserLanguage.C.Syntax.ASTLanguage.C.Syntax.UtilsLanguage.C.Data.ErrorLanguage.C.PrettyLanguage.C.Analysis.SemRep#Language.C.Analysis.TypeConversionsLanguage.C.Analysis.TypeUtilsLanguage.C.Analysis.SemError Language.C.Analysis.NameSpaceMapLanguage.C.Analysis.ExportLanguage.C.Analysis.DefTableLanguage.C.Analysis.DebugLanguage.C.Analysis.BuiltinsLanguage.C.Analysis.TravMonadLanguage.C.Analysis.TypeCheckLanguage.C.Analysis.AstAnalysis Language.C.Analysis.DeclAnalysisLanguage.C.Analysis.ConstEval Language.CLanguage.C.Data.RListLanguage.C.Parser.BuiltinLanguage.C.Parser.TokensLanguage.C.SyntaxLanguage.C.Parser.ParserMonadLanguage.C.Parser.LexerLanguage.C.Parser.ParserLanguage.C.DataLanguage.C.AnalysisCUnaryOp CPreIncOp CPreDecOp CPostIncOp CPostDecOpCAdrOpCIndOpCPlusOpCMinOpCCompOpCNegOp CBinaryOpCMulOpCDivOpCRmdOpCAddOpCSubOpCShlOpCShrOpCLeOpCGrOpCLeqOpCGeqOpCEqOpCNeqOpCAndOpCXorOpCOrOpCLndOpCLorOp CAssignOp CMulAssOp CDivAssOp CRmdAssOp CAddAssOp CSubAssOp CShlAssOp CShrAssOp CAndAssOp CXorAssOpCOrAssOp assignBinopisCmpOpisPtrOpisBitOp isLogicOp isEffectfulOp $fEqCAssignOp$fOrdCAssignOp$fShowCAssignOp$fDataCAssignOp $fEqCBinaryOp$fOrdCBinaryOp$fShowCBinaryOp$fDataCBinaryOp $fEqCUnaryOp $fOrdCUnaryOp$fShowCUnaryOp$fDataCUnaryOpFlagsCString ClangCVersionCFloatCIntegerCIntFlag FlagUnsignedFlagLong FlagLongLongFlagImagCIntReprDecReprHexRepr OctalReprCCharCChars showCharConstgetCChar getCCharAsInt isWideCharcCharcChar_wcChars readCInteger getCIntegercIntegercFloat readCFloatreadClangCVersioncString cString_w getCStringconcatCStrings showStringLit escapeChar unescapeCharunescapeStringnoFlagssetFlag clearFlagtestFlag $fShowCString$fShowClangCVersion $fShowCFloat$fShowCInteger$fShowCIntFlag $fShowCChar $fEqCChar $fOrdCChar $fDataCChar $fEqCIntRepr $fOrdCIntRepr$fEnumCIntRepr$fBoundedCIntRepr$fDataCIntRepr $fEqCIntFlag $fOrdCIntFlag$fEnumCIntFlag$fBoundedCIntFlag$fDataCIntFlag $fEqCFloat $fOrdCFloat $fDataCFloat$fEqClangCVersion$fOrdClangCVersion$fDataClangCVersion $fEqCString $fOrdCString $fDataCString $fEqFlags $fOrdFlags $fDataFlags $fEqCInteger $fOrdCInteger$fDataCIntegerPosposOf PosLengthPosition posOffsetposFileposRow posColumnpositioninitPos isSourcePosnoposisNoPos builtinPos isBuiltinPos internalPos isInternalPosincPosretPos adjustPos incOffset$fShowPosition $fEqPosition $fOrdPosition$fDataPositionNamenameId newNameSupplynamesStartingFrom $fEnumName $fShowName $fReadName$fEqName $fOrdName$fIxName $fDataNameCNodenodeInfoNodeInfoOnlyPos lengthOfNodegetLastTokenPos nameOfNode posOfNode fileOfNodeeqByName internalNode undefNode isUndefNodemkNodeInfoOnlyPosmkNodeInfoPosLen mkNodeInfo mkNodeInfo' $fCNodeEither$fCNodeNodeInfo $fPosNodeInfo$fShowNodeInfo$fDataNodeInfo $fEqNodeInfo $fOrdNodeInfo InputStreamtakeBytetakeCharinputStreamEmpty takeCharsreadInputStreaminputStreamToStringinputStreamFromString countLinesCppArgs cppOptions extraOptions cppTmpDir inputFile outputFile CppOption IncludeDirDefineUndefine IncludeFile Preprocessor parseCPPArgsrunCPPcppFile rawCppArgs addCppOptionaddExtraOptionrunPreprocessorisPreprocessedGCCnewGCC$fPreprocessorGCCIdentSUERef AnonymousRefNamedRefisAnonymousRefmkIdent internalIdentinternalIdentAt builtinIdentisInternalIdent identToString dumpIdent $fPosIdent $fCNodeIdent $fOrdIdent $fEqIdent $fDataIdent $fShowIdent $fDataSUERef $fOrdSUERef $fEqSUERef $fShowSUERefbuiltinTypeNames Annotated annotationamapCStringLiteralCStrLit CConstant CIntConst CCharConst CFloatConst CStrConstCConst CBuiltinThing CBuiltinVaArgCBuiltinOffsetOfCBuiltinTypesCompatibleCBuiltin CExpressionCCommaCAssignCCondCBinaryCCastCUnary CSizeofExpr CSizeofType CAlignofExpr CAlignofType CComplexReal CComplexImagCIndexCCallCMemberCVar CCompoundLitCGenericSelection CStatExpr CLabAddrExpr CBuiltinExprCExpr CAttributeCAttrCPartDesignator CArrDesig CMemberDesig CRangeDesig CDesignatorCInitializerList CInitList CInitializer CInitExprCInit CEnumerationCEnum CStructTag CUnionTagCStructureUnionCStruct CStructUnionCAlignmentSpecifier CAlignAsType CAlignAsExpr CAlignSpecCFunctionSpecifier CInlineQual CNoreturnQualCFunSpecCTypeQualifier CConstQual CVolatQual CRestrQual CAtomicQual CAttrQual CNullableQual CNonnullQual CTypeQualCTypeSpecifier CVoidType CCharType CShortTypeCIntType CLongType CFloatType CDoubleType CSignedType CUnsigType CBoolType CComplexType CInt128TypeCSUType CEnumTypeCTypeDef CTypeOfExpr CTypeOfType CAtomicType CTypeSpecCStorageSpecifierCAuto CRegisterCStaticCExternCTypedefCThread CStorageSpecCDeclarationSpecifier CDeclSpecCCompoundBlockItem CBlockStmt CBlockDecl CNestedFunDef CBlockItemCAssemblyOperand CAsmOperandCAssemblyStatementCAsmStmt CStatementCLabelCCaseCCasesCDefault CCompoundCIfCSwitchCWhileCForCGotoCGotoPtrCContCBreakCReturnCAsmCStat CArraySize CNoArrSizeCArrSizeCDerivedDeclarator CPtrDeclr CArrDeclr CFunDeclr CDerivedDeclr CDeclaratorCDeclr CDeclarationCDecl CStaticAssert CFunctionDefCFunDefCExternalDeclarationCDeclExtCFDefExtCAsmExtCExtDeclCTranslationUnit CTranslUnitpartitionDeclSpecsisSUEDef cstringOfLit liftStrLit$fAnnotatedCStringLiteral$fFunctorCStringLiteral$fPosCStringLiteral$fCNodeCStringLiteral$fAnnotatedCConstant$fFunctorCConstant$fPosCConstant$fCNodeCConstant$fAnnotatedCBuiltinThing$fFunctorCBuiltinThing$fPosCBuiltinThing$fCNodeCBuiltinThing$fAnnotatedCExpression$fPosCExpression$fCNodeCExpression$fAnnotatedCAttribute$fFunctorCAttribute$fPosCAttribute$fCNodeCAttribute$fAnnotatedCPartDesignator$fFunctorCPartDesignator$fPosCPartDesignator$fCNodeCPartDesignator$fAnnotatedCInitializer$fPosCInitializer$fCNodeCInitializer$fAnnotatedCEnumeration$fFunctorCEnumeration$fPosCEnumeration$fCNodeCEnumeration$fAnnotatedCStructureUnion$fFunctorCStructureUnion$fPosCStructureUnion$fCNodeCStructureUnion$fAnnotatedCAlignmentSpecifier$fFunctorCAlignmentSpecifier$fPosCAlignmentSpecifier$fCNodeCAlignmentSpecifier$fAnnotatedCFunctionSpecifier$fFunctorCFunctionSpecifier$fPosCFunctionSpecifier$fCNodeCFunctionSpecifier$fAnnotatedCTypeQualifier$fFunctorCTypeQualifier$fPosCTypeQualifier$fCNodeCTypeQualifier$fAnnotatedCTypeSpecifier$fFunctorCTypeSpecifier$fPosCTypeSpecifier$fCNodeCTypeSpecifier$fAnnotatedCStorageSpecifier$fFunctorCStorageSpecifier$fPosCStorageSpecifier$fCNodeCStorageSpecifier $fAnnotatedCDeclarationSpecifier$fFunctorCDeclarationSpecifier$fPosCDeclarationSpecifier$fCNodeCDeclarationSpecifier$fAnnotatedCCompoundBlockItem$fFunctorCCompoundBlockItem$fPosCCompoundBlockItem$fCNodeCCompoundBlockItem$fAnnotatedCAssemblyOperand$fFunctorCAssemblyOperand$fPosCAssemblyOperand$fCNodeCAssemblyOperand$fAnnotatedCAssemblyStatement$fFunctorCAssemblyStatement$fPosCAssemblyStatement$fCNodeCAssemblyStatement$fAnnotatedCStatement$fPosCStatement$fCNodeCStatement$fFunctorCArraySize$fAnnotatedCDerivedDeclarator$fPosCDerivedDeclarator$fCNodeCDerivedDeclarator$fAnnotatedCDeclarator$fFunctorCDeclarator$fPosCDeclarator$fCNodeCDeclarator$fAnnotatedCDeclaration$fPosCDeclaration$fCNodeCDeclaration$fAnnotatedCFunctionDef$fFunctorCFunctionDef$fPosCFunctionDef$fCNodeCFunctionDef$fAnnotatedCExternalDeclaration$fFunctorCExternalDeclaration$fPosCExternalDeclaration$fCNodeCExternalDeclaration$fAnnotatedCTranslationUnit$fFunctorCTranslationUnit$fPosCTranslationUnit$fCNodeCTranslationUnit$fFunctorCExpression$fFunctorCInitializer$fFunctorCStatement$fFunctorCDerivedDeclarator$fFunctorCDeclaration$fShowCStorageSpecifier$fEqCStorageSpecifier$fOrdCStorageSpecifier$fDataCStorageSpecifier$fShowCFunctionSpecifier$fDataCFunctionSpecifier$fShowCStructTag$fEqCStructTag$fDataCStructTag$fShowCConstant$fDataCConstant$fShowCStringLiteral$fDataCStringLiteral$fShowCDeclaration$fDataCDeclaration$fDataCExpression$fShowCExpression$fShowCBuiltinThing$fDataCBuiltinThing$fShowCPartDesignator$fDataCPartDesignator$fShowCInitializer$fDataCInitializer$fShowCStatement$fDataCStatement$fShowCAttribute$fDataCAttribute$fShowCCompoundBlockItem$fDataCCompoundBlockItem$fShowCFunctionDef$fDataCFunctionDef$fShowCDeclarationSpecifier$fDataCDeclarationSpecifier$fShowCAlignmentSpecifier$fDataCAlignmentSpecifier$fShowCTypeQualifier$fDataCTypeQualifier$fShowCTypeSpecifier$fDataCTypeSpecifier$fShowCEnumeration$fDataCEnumeration$fShowCStructureUnion$fDataCStructureUnion$fShowCDeclarator$fDataCDeclarator$fShowCDerivedDeclarator$fDataCDerivedDeclarator$fShowCArraySize$fDataCArraySize$fShowCAssemblyStatement$fDataCAssemblyStatement$fShowCAssemblyOperand$fDataCAssemblyOperand$fShowCExternalDeclaration$fDataCExternalDeclaration$fShowCTranslationUnit$fDataCTranslationUnit getSubStmts mapSubStmtsmapBlockItemStmts getLabels UserErrorUnsupportedFeatureError errorInfotoError fromErrorchangeErrorLevelCError ErrorInfo ErrorLevel LevelWarn LevelError LevelFatal isHardError mkErrorInfoerrorPos errorLevel errorMsgsunsupportedFeatureunsupportedFeature_userErr showError showErrorInfo internalErr$fShowUserError$fErrorUserError$fShowUnsupportedFeature$fErrorUnsupportedFeature $fErrorCError $fShowCError$fErrorErrorInfo$fShowErrorInfo$fShowErrorLevel$fEqErrorLevel$fOrdErrorLevelP ParseError execParserparseC translUnitPextDeclP statementP expressionP execParser_Prettypretty prettyPrecprettyUsingInclude$fPrettyCStringLiteral$fPrettyCConstant$fPrettyCUnaryOp$fPrettyCBinaryOp$fPrettyCAssignOp$fPrettyCBuiltinThing$fPrettyCExpression$fPrettyCAttribute$fPrettyCPartDesignator$fPrettyCInitializer$fPrettyCArraySize$fPrettyCDeclarator$fPrettyCEnumeration$fPrettyCStructTag$fPrettyCStructureUnion$fPrettyCFunctionSpecifier$fPrettyCTypeQualifier$fPrettyCTypeSpecifier$fPrettyCStorageSpecifier$fPrettyCAlignmentSpecifier$fPrettyCDeclarationSpecifier$fPrettyCDeclaration$fPrettyCCompoundBlockItem$fPrettyCAssemblyOperand$fPrettyCAssemblyStatement$fPrettyCStatement$fPrettyCFunctionDef$fPrettyCExternalDeclaration$fPrettyCTranslationUnitExprStmt AttributesAttrAsmNameAsmBlockVarNameNoName Initializer TypeQualsconstantvolatilerestrictatomicnullablenonnull EnumeratorEnumType CompTyKind StructTagUnionTagCompType EnumTypeRef CompTypeRef FloatTypeTyFloatTyDouble TyLDoubleIntTypeTyBoolTyCharTySCharTyUCharTyShortTyUShortTyIntTyUIntTyInt128 TyUInt128TyLongTyULongTyLLongTyULLong TypeDefRef BuiltinTypeTyVaListTyAnyTypeNameTyVoid TyIntegral TyFloating TyComplexTyCompTyEnum TyBuiltin ArraySizeUnknownArraySizeFunTypeFunTypeIncompleteType DirectTypePtrType ArrayType FunctionType TypeDefTypeLinkage NoLinkageInternalLinkageExternalLinkageRegister ThreadLocalStorage NoStorageAutoStatic FunLinkage FunctionAttrsisInline isNoreturn DeclAttrsVarDeclTypeDef MemberDecl AnonBitField ParamDeclAbstractParamDeclFunDefObjDefDecl DeclEventTagEvent ParamEvent LocalEvent TypeDefEventAsmEvent GlobalDeclsgObjsgTags gTypeDefs IdentDecl Declaration ObjectDef FunctionDef EnumeratorDef getVarDeclTagDefCompDefEnumDef HasCompTyKindcompTag HasSUERefsueRef typeOfTagDef declIdentdeclNamedeclType declAttrs objKindDescrsplitIdentDeclsemptyGlobalDeclsfilterGlobalDeclsmergeGlobalDecls isTentativeidentOfTypeDef isExtDecl declStorage functionAttrsnoFunctionAttrs hasLinkage declLinkage typeOfCompDef typeOfEnumDef noTypeQualsmergeTypeQualsidentOfVarNameisNoName noAttributesmergeAttributes $fPosAttr $fCNodeAttr$fPosEnumerator$fCNodeEnumerator $fPosEnumType$fCNodeEnumType $fPosCompType$fCNodeCompType$fPosEnumTypeRef$fCNodeEnumTypeRef$fPosCompTypeRef$fCNodeCompTypeRef$fPosTypeDefRef$fCNodeTypeDefRef $fPosTypeDef$fCNodeTypeDef$fPosMemberDecl$fCNodeMemberDecl$fPosParamDecl$fCNodeParamDecl $fPosFunDef $fCNodeFunDef $fPosObjDef $fCNodeObjDef $fPosDecl $fCNodeDecl$fPosDeclEvent$fCNodeDeclEvent$fPosIdentDecl$fCNodeIdentDecl $fPosTagDef $fCNodeTagDef$fOrdTypeQuals $fEqTypeQuals$fDeclarationEnumerator$fHasSUERefEnumType$fShowCompTyKind$fHasCompTyKindCompType$fHasSUERefCompType$fHasSUERefEnumTypeRef$fHasCompTyKindCompTypeRef$fHasSUERefCompTypeRef$fShowFloatType $fShowIntType$fDeclarationVarDecl$fDeclarationMemberDecl$fDeclarationParamDecl$fDeclarationFunDef$fDeclarationObjDef$fDeclarationDecl$fDeclarationIdentDecl$fDeclarationEither$fHasSUERefTagDef$fEqFunctionAttrs$fOrdFunctionAttrs$fDataFunctionAttrs $fDataLinkage $fShowLinkage $fEqLinkage $fOrdLinkage $fDataStorage $fShowStorage $fEqStorage $fOrdStorage$fDataBuiltinType $fDataIntType $fEqIntType $fOrdIntType$fDataFloatType $fEqFloatType$fOrdFloatType$fDataEnumTypeRef$fEqCompTyKind$fOrdCompTyKind$fDataCompTyKind$fDataCompTypeRef$fDataTypeName$fDataTypeQuals $fDataVarName $fDataAttr$fDataDeclAttrs$fDataEnumerator$fDataEnumType$fDataArraySize $fDataType$fDataTypeDefRef $fDataFunType$fDataParamDecl $fDataVarDecl $fDataFunDef $fDataObjDef $fDataDecl$fDataIdentDecl $fDataTypeDef$fDataMemberDecl$fDataCompType $fDataTagDefarithmeticConversionfloatConversion intConversionintegralfloating simplePtr uint16_tType uint32_tType uint64_tType size_tType ptrDiffTypeboolTypevoidTypevoidPtr constVoidPtrcharPtr constCharPtr stringType valistTypeisIntegralTypeisFloatingType isPointerType isScalarTypeisFunctionType typeQuals typeQualsUpd typeAttrs typeAttrsUpdbaseType derefTypeDefdeepDerefTypeDefsameType canonicalType getIntType getFloatType TypeMismatch RedefKind DuplicateDefDiffKindRedecl ShadowedDefDisagreeLinkage NoLinkageOld RedefInfo RedefErrorBadSpecifierErrorInvalidASTError InvalidAST invalidASTbadSpecifierError typeMismatch redefinition$fErrorRedefError$fShowRedefError$fErrorTypeMismatch$fShowTypeMismatch$fShowBadSpecifierError$fShowInvalidASTError$fErrorBadSpecifierError$fErrorInvalidASTError NameSpaceMap globalNames hasLocalNames localNames nameSpaceMap defGlobal enterNewScope leaveScopedefLocal lookupName lookupGloballookupInnermostScope nsMapToListmergeNameSpace exportDeclrexportTypeDecl exportTypeDef exportTypeexportTypeSpecexportCompTypeDeclexportEnumTypeDeclexportCompTypeexportCompTypeRefexportEnumTypeexportEnumTypeRefDeclarationStatusNewDecl RedeclaredKeepDefShadowed KindMismatchDefTable identDeclstagDecls labelDefs memberDeclsrefTable typeTableTagEntry TagFwdDeclCompDeclEnumDecl IdentEntry identOfTyDecl emptyDefTable globalDefs inFileScopeenterFunctionScopeleaveFunctionScopeenterBlockScopeleaveBlockScopeenterMemberDeclleaveMemberDecldeclStatusDescr defineTypeDefdefineGlobalIdentdefineScopedIdentdefineScopedIdentWhen declareTag defineTag defineLabel lookupIdent lookupTag lookupLabellookupIdentInnerlookupTagInner insertType lookupType mergeDefTable$fShowTagEntryKind$fCNodeTagFwdDecl$fHasSUERefTagFwdDecl$fDataDeclarationStatus$fEqTagEntryKind$fOrdTagEntryKind prettyAssocsprettyAssocsWithglobalDeclStats $fPrettyAttr $fPretty[]$fPrettyVarName$fPrettyLinkage$fPrettyStorage$fPrettyFunctionAttrs$fPrettyEnumerator$fPrettyEnumType$fPrettyMemberDecl$fPrettyCompType$fPrettyTypeQuals $fPrettyType$fPrettyDeclAttrs$fPrettyParamDecl$fPrettyVarDecl$fPrettyFunDef$fPrettyObjDef$fPrettyTypeDef $fPrettyDecl$fPrettyIdentDecl$fPrettyTagDef$fPrettySUERef $fPrettyIdent$fPrettyEnumTypeRef$fPrettyCompTypeRef$fPrettyCompTyKind$fPrettyTagFwdDecl$fPrettyEither$fPrettyGlobalDecls$fPrettyDefTablebuiltins TravState userState TravOptionslanguage CLanguageC89C99GNU89GNU99Trav MonadTrav handleDecl MonadCErrorthrowTravErrorcatchTravError recordError getErrors MonadSymtab getDefTable withDefTable MonadNamegenName handleTagDecl handleTagDefhandleEnumeratorDef handleTypeDefhandleAsmBlock handleVarDeclhandleParamDecl handleFunDefhandleObjectDefenterPrototypeScopeleavePrototypeScope lookupTypeDef lookupObject createSUERefhandleTravError hadHardErrorsastError throwOnLeftwarnrunTravrunTrav_withExtDeclHandler travErrors initTravStatemodifyUserState getUserState modifyOptions mapMaybeMmaybeMmapSndM concatMapM$fMonadTravTrav$fMonadCErrorTrav$fMonadSymtabTrav$fMonadNameTrav $fMonadTrav$fApplicativeTrav $fFunctorTravpTypetypeErrorOnLeft typeErrornotFound checkScalar'checkIntegral'assignCompatible' binopType'conditionalType' checkScalar checkIntegral constType compatible compositeType compositeSize sizeEqual mergeAttrscompositeParamDeclcompositeParamDecl'compositeVarDeclcompositeDeclAttrscastCompatibleassignCompatible binopTypeconditionalType derefType varAddrType fieldType tagMembersexpandAnonymous lookupSUE deepTypeAttrs typeDefAttrssueAttrsExprSideLValueRValueStmtCtxFunCtxLoopCtx SwitchCtxtExprTypeSpecAnalysisTSNoneTSVoidTSBoolTSNum TSTypeDefTSType TSNonBasic NumTypeSpecbasesignSpecsizeMod isComplexSizeMod NoSizeModShortModLongMod LongLongModSignSpec NoSignSpecSignedUnsigned NumBaseType NoBaseTypeBaseCharBaseInt BaseInt128 BaseFloat BaseDouble VarDeclInfo StorageSpec NoStorageSpecAutoSpecRegSpec ThreadSpec StaticSpec ExternSpechasThreadLocalSpecanalyseVarDecl'analyseVarDecl isTypeDefanalyseTypeDecltType tDirectTypetNumType tArraySize tTypeQualscanonicalTypeSpeccanonicalStorageSpec mergeOldStyletAttr mkVarName nameOfDecl getOnlyDeclr$fEqStorageSpec$fOrdStorageSpec$fShowStorageSpec$fReadStorageSpec$fEqNumBaseType$fOrdNumBaseType $fEqSignSpec $fOrdSignSpec $fEqSizeMod $fOrdSizeMod MachineDesciSizefSize builtinSizeptrSizevoidSizeiAlignfAlign builtinAlignptrAlign voidAlignintExpr sizeofType alignofTypecompSizeintOpintUnOp withWordBytes boolValueintValue constEval analyseAST analyseExt analyseFunDef analyseDecl defineParamsanalyseFunctionBodytStmt defaultMD tDesignator $fEqExprSide$fShowExprSide parseCFile parseCFilePreghc-prim GHC.TypesCharisAsciiSourceCharisCChar escapeCCharisSChar _showWideFlag isWideStringshowOct'readOct'sQuotedQuotehead'RListReversedempty singletonsnocrappendappendrrappendrrmapreverseviewr NoPositionBuiltinPositionInternalPositionGHC.BaseStringpreprocessedExt mkOutputFilegetOutputFileName mkTmpFilegccParseCPPArgsParseArgsStategccPath buildCppArgsquadbits7bits14bits21bits28 ClangCTokClangCVersionTokGnuCTok GnuCAttrTok GnuCExtTok GnuCVaArg GnuCOffsetof GnuCTyCompatGnuCComplexRealGnuCComplexImagCToken CTokLParen CTokRParen CTokLBracket CTokRBracket CTokArrowCTokDot CTokExclam CTokTildeCTokIncCTokDecCTokPlus CTokMinusCTokStar CTokSlash CTokPercent CTokAmper CTokShiftL CTokShiftRCTokLess CTokLessEqCTokHigh CTokHighEq CTokEqual CTokUnequalCTokHatCTokBarCTokAndCTokOr CTokQuest CTokColon CTokAssign CTokPlusAss CTokMinusAss CTokStarAss CTokSlashAss CTokPercAss CTokAmpAss CTokHatAss CTokBarAss CTokSLAss CTokSRAss CTokComma CTokSemic CTokLBrace CTokRBrace CTokEllipsis CTokAlignof CTokAlignasCTokAsm CTokAtomicCTokAuto CTokBreakCTokBoolCTokCaseCTokChar CTokConst CTokContinue CTokComplex CTokDefaultCTokDo CTokDoubleCTokElseCTokEnum CTokExtern CTokFloatCTokFor CTokGenericCTokGotoCTokIf CTokInlineCTokInt CTokInt128CTokLong CTokLabel CTokNoreturn CTokNullable CTokNonnull CTokRegister CTokRestrict CTokReturn CTokShort CTokSigned CTokSizeof CTokStaticCTokStaticAssert CTokStruct CTokSwitch CTokTypedef CTokTypeof CTokThread CTokUnion CTokUnsignedCTokVoid CTokVolatile CTokWhileCTokCLitCTokILitCTokFLitCTokSLit CTokIdent CTokTyIdentCTokGnuC CTokClangCCTokEof posLenOfTok $fShowCToken $fPosCTokenGHC.Num* fmapInitListcompoundSubStmtsinternalErrPrefixindent indentLines setLastTokenhandleEofTokenunPPStatecurPoscurInput prevToken savedToken namesupplytyidentsscopes ParseResultPOkPFailedreturnPthenPfailP getNewNamesetPosgetPos addTypedef shadowTypedef isTypeIdent enterScopegetInputsetInput getLastToken getSavedTokengetCurrentPosition$fMonadP$fApplicativeP $fFunctorP$fShowParseErrorAlexAcc AlexAccNone AlexAccSkip AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA# AlexInput alex_tab_size alex_base alex_table alex_check alex_deflt alex_accept readCOctalidkwtokignoreAttributetokadjustLineDirectiveunescapeMultiCharstoken_ token_failtoken token_plusalexInputPrevChar alexGetByte alexGetCharalexMove lexicalError parseErrorlexToken lexToken'lexC alex_action_1 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_15alex_action_16alex_action_17alex_action_18alex_action_19alex_action_20alex_action_21alex_action_22alex_action_23alex_action_24alex_action_25alex_action_26alex_action_27alex_action_28alex_action_29alex_action_30alex_action_31alex_action_32alex_action_33alex_action_34alex_action_35alex_action_36alex_action_37alex_action_38alex_action_39alex_action_40alex_action_41alex_action_42alex_action_43alex_action_44alex_action_45alex_action_46alex_action_47alex_action_48alex_action_49alex_action_50alex_action_51alex_action_52alex_action_53alex_action_54alex_action_55alex_action_56alex_action_57alex_action_58alex_action_59alex_action_60alex_action_61alex_action_62alex_action_63alex_action_64alex_action_65alex_action_66alex_action_67alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn$fFunctorAlexLastAcc HappyAddrHappyA#HappyStk Happy_IntList HappyConsCDeclrRLocatedLHappyAny HappyAbsSynhappyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyIn13 happyOut13 happyIn14 happyOut14 happyIn15 happyOut15 happyIn16 happyOut16 happyIn17 happyOut17 happyIn18 happyOut18 happyIn19 happyOut19 happyIn20 happyOut20 happyIn21 happyOut21 happyIn22 happyOut22 happyIn23 happyOut23 happyIn24 happyOut24 happyIn25 happyOut25 happyIn26 happyOut26 happyIn27 happyOut27 happyIn28 happyOut28 happyIn29 happyOut29 happyIn30 happyOut30 happyIn31 happyOut31 happyIn32 happyOut32 happyIn33 happyOut33 happyIn34 happyOut34 happyIn35 happyOut35 happyIn36 happyOut36 happyIn37 happyOut37 happyIn38 happyOut38 happyIn39 happyOut39 happyIn40 happyOut40 happyIn41 happyOut41 happyIn42 happyOut42 happyIn43 happyOut43 happyIn44 happyOut44 happyIn45 happyOut45 happyIn46 happyOut46 happyIn47 happyOut47 happyIn48 happyOut48 happyIn49 happyOut49 happyIn50 happyOut50 happyIn51 happyOut51 happyIn52 happyOut52 happyIn53 happyOut53 happyIn54 happyOut54 happyIn55 happyOut55 happyIn56 happyOut56 happyIn57 happyOut57 happyIn58 happyOut58 happyIn59 happyOut59 happyIn60 happyOut60 happyIn61 happyOut61 happyIn62 happyOut62 happyIn63 happyOut63 happyIn64 happyOut64 happyIn65 happyOut65 happyIn66 happyOut66 happyIn67 happyOut67 happyIn68 happyOut68 happyIn69 happyOut69 happyIn70 happyOut70 happyIn71 happyOut71 happyIn72 happyOut72 happyIn73 happyOut73 happyIn74 happyOut74 happyIn75 happyOut75 happyIn76 happyOut76 happyIn77 happyOut77 happyIn78 happyOut78 happyIn79 happyOut79 happyIn80 happyOut80 happyIn81 happyOut81 happyIn82 happyOut82 happyIn83 happyOut83 happyIn84 happyOut84 happyIn85 happyOut85 happyIn86 happyOut86 happyIn87 happyOut87 happyIn88 happyOut88 happyIn89 happyOut89 happyIn90 happyOut90 happyIn91 happyOut91 happyIn92 happyOut92 happyIn93 happyOut93 happyIn94 happyOut94 happyIn95 happyOut95 happyIn96 happyOut96 happyIn97 happyOut97 happyIn98 happyOut98 happyIn99 happyOut99 happyIn100 happyOut100 happyIn101 happyOut101 happyIn102 happyOut102 happyIn103 happyOut103 happyIn104 happyOut104 happyIn105 happyOut105 happyIn106 happyOut106 happyIn107 happyOut107 happyIn108 happyOut108 happyIn109 happyOut109 happyIn110 happyOut110 happyIn111 happyOut111 happyIn112 happyOut112 happyIn113 happyOut113 happyIn114 happyOut114 happyIn115 happyOut115 happyIn116 happyOut116 happyIn117 happyOut117 happyIn118 happyOut118 happyIn119 happyOut119 happyIn120 happyOut120 happyIn121 happyOut121 happyIn122 happyOut122 happyIn123 happyOut123 happyIn124 happyOut124 happyIn125 happyOut125 happyIn126 happyOut126 happyIn127 happyOut127 happyIn128 happyOut128 happyIn129 happyOut129 happyIn130 happyOut130 happyIn131 happyOut131 happyIn132 happyOut132 happyIn133 happyOut133 happyIn134 happyOut134 happyIn135 happyOut135 happyIn136 happyOut136 happyIn137 happyOut137 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25happyReduce_26happyReduction_26happyReduce_27happyReduction_27happyReduce_28happyReduction_28happyReduce_29happyReduction_29happyReduce_30happyReduction_30happyReduce_31happyReduction_31happyReduce_32happyReduction_32happyReduce_33happyReduction_33happyReduce_34happyReduction_34happyReduce_35happyReduction_35happyReduce_36happyReduction_36happyReduce_37happyReduction_37happyReduce_38happyReduction_38happyReduce_39happyReduction_39happyReduce_40happyReduction_40happyReduce_41happyReduction_41happyReduce_42happyReduction_42happyReduce_43happyReduction_43happyReduce_44happyReduction_44happyReduce_45happyReduction_45happyReduce_46happyReduction_46happyReduce_47happyReduction_47happyReduce_48happyReduction_48happyReduce_49happyReduction_49happyReduce_50happyReduction_50happyReduce_51happyReduction_51happyReduce_52happyReduction_52happyReduce_53happyReduction_53happyReduce_54happyReduction_54happyReduce_55happyReduction_55happyReduce_56happyReduction_56happyReduce_57happyReduction_57happyReduce_58happyReduction_58happyReduce_59happyReduction_59happyReduce_60happyReduction_60happyReduce_61happyReduction_61happyReduce_62happyReduction_62happyReduce_63happyReduction_63happyReduce_64happyReduction_64happyReduce_65happyReduction_65happyReduce_66happyReduction_66happyReduce_67happyReduction_67happyReduce_68happyReduction_68happyReduce_69happyReduction_69happyReduce_70happyReduction_70happyReduce_71happyReduction_71happyReduce_72happyReduction_72happyReduce_73happyReduction_73happyReduce_74happyReduction_74happyReduce_75happyReduction_75happyReduce_76happyReduction_76happyReduce_77happyReduction_77happyReduce_78happyReduction_78happyReduce_79happyReduction_79happyReduce_80happyReduction_80happyReduce_81happyReduction_81happyReduce_82happyReduction_82happyReduce_83happyReduction_83happyReduce_84happyReduction_84happyReduce_85happyReduction_85happyReduce_86happyReduction_86happyReduce_87happyReduction_87happyReduce_88happyReduction_88happyReduce_89happyReduction_89happyReduce_90happyReduction_90happyReduce_91happyReduction_91happyReduce_92happyReduction_92happyReduce_93happyReduction_93happyReduce_94happyReduction_94happyReduce_95happyReduction_95happyReduce_96happyReduction_96happyReduce_97happyReduction_97happyReduce_98happyReduction_98happyReduce_99happyReduction_99happyReduce_100happyReduction_100happyReduce_101happyReduction_101happyReduce_102happyReduction_102happyReduce_103happyReduction_103happyReduce_104happyReduction_104happyReduce_105happyReduction_105happyReduce_106happyReduction_106happyReduce_107happyReduction_107happyReduce_108happyReduction_108happyReduce_109happyReduction_109happyReduce_110happyReduction_110happyReduce_111happyReduction_111happyReduce_112happyReduction_112happyReduce_113happyReduction_113happyReduce_114happyReduction_114happyReduce_115happyReduction_115happyReduce_116happyReduction_116happyReduce_117happyReduction_117happyReduce_118happyReduction_118happyReduce_119happyReduction_119happyReduce_120happyReduction_120happyReduce_121happyReduction_121happyReduce_122happyReduction_122happyReduce_123happyReduction_123happyReduce_124happyReduction_124happyReduce_125happyReduction_125happyReduce_126happyReduction_126happyReduce_127happyReduction_127happyReduce_128happyReduction_128happyReduce_129happyReduction_129happyReduce_130happyReduction_130happyReduce_131happyReduction_131happyReduce_132happyReduction_132happyReduce_133happyReduction_133happyReduce_134happyReduction_134happyReduce_135happyReduction_135happyReduce_136happyReduction_136happyReduce_137happyReduction_137happyReduce_138happyReduction_138happyReduce_139happyReduction_139happyReduce_140happyReduction_140happyReduce_141happyReduction_141happyReduce_142happyReduction_142happyReduce_143happyReduction_143happyReduce_144happyReduction_144happyReduce_145happyReduction_145happyReduce_146happyReduction_146happyReduce_147happyReduction_147happyReduce_148happyReduction_148happyReduce_149happyReduction_149happyReduce_150happyReduction_150happyReduce_151happyReduction_151happyReduce_152happyReduction_152happyReduce_153happyReduction_153happyReduce_154happyReduction_154happyReduce_155happyReduction_155happyReduce_156happyReduction_156happyReduce_157happyReduction_157happyReduce_158happyReduction_158happyReduce_159happyReduction_159happyReduce_160happyReduction_160happyReduce_161happyReduction_161happyReduce_162happyReduction_162happyReduce_163happyReduction_163happyReduce_164happyReduction_164happyReduce_165happyReduction_165happyReduce_166happyReduction_166happyReduce_167happyReduction_167happyReduce_168happyReduction_168happyReduce_169happyReduction_169happyReduce_170happyReduction_170happyReduce_171happyReduction_171happyReduce_172happyReduction_172happyReduce_173happyReduction_173happyReduce_174happyReduction_174happyReduce_175happyReduction_175happyReduce_176happyReduction_176happyReduce_177happyReduction_177happyReduce_178happyReduction_178happyReduce_179happyReduction_179happyReduce_180happyReduction_180happyReduce_181happyReduction_181happyReduce_182happyReduction_182happyReduce_183happyReduction_183happyReduce_184happyReduction_184happyReduce_185happyReduction_185happyReduce_186happyReduction_186happyReduce_187happyReduction_187happyReduce_188happyReduction_188happyReduce_189happyReduction_189happyReduce_190happyReduction_190happyReduce_191happyReduction_191happyReduce_192happyReduction_192happyReduce_193happyReduction_193happyReduce_194happyReduction_194happyReduce_195happyReduction_195happyReduce_196happyReduction_196happyReduce_197happyReduction_197happyReduce_198happyReduction_198happyReduce_199happyReduction_199happyReduce_200happyReduction_200happyReduce_201happyReduction_201happyReduce_202happyReduction_202happyReduce_203happyReduction_203happyReduce_204happyReduction_204happyReduce_205happyReduction_205happyReduce_206happyReduction_206happyReduce_207happyReduction_207happyReduce_208happyReduction_208happyReduce_209happyReduction_209happyReduce_210happyReduction_210happyReduce_211happyReduction_211happyReduce_212happyReduction_212happyReduce_213happyReduction_213happyReduce_214happyReduction_214happyReduce_215happyReduction_215happyReduce_216happyReduction_216happyReduce_217happyReduction_217happyReduce_218happyReduction_218happyReduce_219happyReduction_219happyReduce_220happyReduction_220happyReduce_221happyReduction_221happyReduce_222happyReduction_222happyReduce_223happyReduction_223happyReduce_224happyReduction_224happyReduce_225happyReduction_225happyReduce_226happyReduction_226happyReduce_227happyReduction_227happyReduce_228happyReduction_228happyReduce_229happyReduction_229happyReduce_230happyReduction_230happyReduce_231happyReduction_231happyReduce_232happyReduction_232happyReduce_233happyReduction_233happyReduce_234happyReduction_234happyReduce_235happyReduction_235happyReduce_236happyReduction_236happyReduce_237happyReduction_237happyReduce_238happyReduction_238happyReduce_239happyReduction_239happyReduce_240happyReduction_240happyReduce_241happyReduction_241happyReduce_242happyReduction_242happyReduce_243happyReduction_243happyReduce_244happyReduction_244happyReduce_245happyReduction_245happyReduce_246happyReduction_246happyReduce_247happyReduction_247happyReduce_248happyReduction_248happyReduce_249happyReduction_249happyReduce_250happyReduction_250happyReduce_251happyReduction_251happyReduce_252happyReduction_252happyReduce_253happyReduction_253happyReduce_254happyReduction_254happyReduce_255happyReduction_255happyReduce_256happyReduction_256happyReduce_257happyReduction_257happyReduce_258happyReduction_258happyReduce_259happyReduction_259happyReduce_260happyReduction_260happyReduce_261happyReduction_261happyReduce_262happyReduction_262happyReduce_263happyReduction_263happyReduce_264happyReduction_264happyReduce_265happyReduction_265happyReduce_266happyReduction_266happyReduce_267happyReduction_267happyReduce_268happyReduction_268happyReduce_269happyReduction_269happyReduce_270happyReduction_270happyReduce_271happyReduction_271happyReduce_272happyReduction_272happyReduce_273happyReduction_273happyReduce_274happyReduction_274happyReduce_275happyReduction_275happyReduce_276happyReduction_276happyReduce_277happyReduction_277happyReduce_278happyReduction_278happyReduce_279happyReduction_279happyReduce_280happyReduction_280happyReduce_281happyReduction_281happyReduce_282happyReduction_282happyReduce_283happyReduction_283happyReduce_284happyReduction_284happyReduce_285happyReduction_285happyReduce_286happyReduction_286happyReduce_287happyReduction_287happyReduce_288happyReduction_288happyReduce_289happyReduction_289happyReduce_290happyReduction_290happyReduce_291happyReduction_291happyReduce_292happyReduction_292happyReduce_293happyReduction_293happyReduce_294happyReduction_294happyReduce_295happyReduction_295happyReduce_296happyReduction_296happyReduce_297happyReduction_297happyReduce_298happyReduction_298happyReduce_299happyReduction_299happyReduce_300happyReduction_300happyReduce_301happyReduction_301happyReduce_302happyReduction_302happyReduce_303happyReduction_303happyReduce_304happyReduction_304happyReduce_305happyReduction_305happyReduce_306happyReduction_306happyReduce_307happyReduction_307happyReduce_308happyReduction_308happyReduce_309happyReduction_309happyReduce_310happyReduction_310happyReduce_311happyReduction_311happyReduce_312happyReduction_312happyReduce_313happyReduction_313happyReduce_314happyReduction_314happyReduce_315happyReduction_315happyReduce_316happyReduction_316happyReduce_317happyReduction_317happyReduce_318happyReduction_318happyReduce_319happyReduction_319happyReduce_320happyReduction_320happyReduce_321happyReduction_321happyReduce_322happyReduction_322happyReduce_323happyReduction_323happyReduce_324happyReduction_324happyReduce_325happyReduction_325happyReduce_326happyReduction_326happyReduce_327happyReduction_327happyReduce_328happyReduction_328happyReduce_329happyReduction_329happyReduce_330happyReduction_330happyReduce_331happyReduction_331happyReduce_332happyReduction_332happyReduce_333happyReduction_333happyReduce_334happyReduction_334happyReduce_335happyReduction_335happyReduce_336happyReduction_336happyReduce_337happyReduction_337happyReduce_338happyReduction_338happyReduce_339happyReduction_339happyReduce_340happyReduction_340happyReduce_341happyReduction_341happyReduce_342happyReduction_342happyReduce_343happyReduction_343happyReduce_344happyReduction_344happyReduce_345happyReduction_345happyReduce_346happyReduction_346happyReduce_347happyReduction_347happyReduce_348happyReduction_348happyReduce_349happyReduction_349happyReduce_350happyReduction_350happyReduce_351happyReduction_351happyReduce_352happyReduction_352happyReduce_353happyReduction_353happyReduce_354happyReduction_354happyReduce_355happyReduction_355happyReduce_356happyReduction_356happyReduce_357happyReduction_357happyReduce_358happyReduction_358happyReduce_359happyReduction_359happyReduce_360happyReduction_360happyReduce_361happyReduction_361happyReduce_362happyReduction_362happyReduce_363happyReduction_363happyReduce_364happyReduction_364happyReduce_365happyReduction_365happyReduce_366happyReduction_366happyReduce_367happyReduction_367happyReduce_368happyReduction_368happyReduce_369happyReduction_369happyReduce_370happyReduction_370happyReduce_371happyReduction_371happyReduce_372happyReduction_372happyReduce_373happyReduction_373happyReduce_374happyReduction_374happyReduce_375happyReduction_375happyReduce_376happyReduction_376happyReduce_377happyReduction_377happyReduce_378happyReduction_378happyReduce_379happyReduction_379happyReduce_380happyReduction_380happyReduce_381happyReduction_381happyReduce_382happyReduction_382happyReduce_383happyReduction_383happyReduce_384happyReduction_384happyReduce_385happyReduction_385happyReduce_386happyReduction_386happyReduce_387happyReduction_387happyReduce_388happyReduction_388happyReduce_389happyReduction_389happyReduce_390happyReduction_390happyReduce_391happyReduction_391happyReduce_392happyReduction_392happyReduce_393happyReduction_393happyReduce_394happyReduction_394happyReduce_395happyReduction_395happyReduce_396happyReduction_396happyReduce_397happyReduction_397happyReduce_398happyReduction_398happyReduce_399happyReduction_399happyReduce_400happyReduction_400happyReduce_401happyReduction_401happyReduce_402happyReduction_402happyReduce_403happyReduction_403happyReduce_404happyReduction_404happyReduce_405happyReduction_405happyReduce_406happyReduction_406happyReduce_407happyReduction_407happyReduce_408happyReduction_408happyReduce_409happyReduction_409happyReduce_410happyReduction_410happyReduce_411happyReduction_411happyReduce_412happyReduction_412happyReduce_413happyReduction_413happyReduce_414happyReduction_414happyReduce_415happyReduction_415happyReduce_416happyReduction_416happyReduce_417happyReduction_417happyReduce_418happyReduction_418happyReduce_419happyReduction_419happyReduce_420happyReduction_420happyReduce_421happyReduction_421happyReduce_422happyReduction_422happyReduce_423happyReduction_423happyReduce_424happyReduction_424happyReduce_425happyReduction_425happyReduce_426happyReduction_426happyReduce_427happyReduction_427happyReduce_428happyReduction_428happyReduce_429happyReduction_429happyReduce_430happyReduction_430happyReduce_431happyReduction_431happyReduce_432happyReduction_432happyReduce_433happyReduction_433happyReduce_434happyReduction_434happyReduce_435happyReduction_435happyReduce_436happyReduction_436happyReduce_437happyReduction_437happyReduce_438happyReduction_438happyReduce_439happyReduction_439happyReduce_440happyReduction_440happyReduce_441happyReduction_441happyReduce_442happyReduction_442happyReduce_443happyReduction_443happyReduce_444happyReduction_444happyReduce_445happyReduction_445happyReduce_446happyReduction_446happyReduce_447happyReduction_447happyReduce_448happyReduction_448happyReduce_449happyReduction_449happyReduce_450happyReduction_450happyReduce_451happyReduction_451happyReduce_452happyReduction_452happyReduce_453happyReduction_453happyReduce_454happyReduction_454happyReduce_455happyReduction_455happyReduce_456happyReduction_456happyReduce_457happyReduction_457happyReduce_458happyReduction_458happyReduce_459happyReduction_459happyReduce_460happyReduction_460happyReduce_461happyReduction_461happyReduce_462happyReduction_462happyReduce_463happyReduction_463happyReduce_464happyReduction_464happyReduce_465happyReduction_465happyReduce_466happyReduction_466happyReduce_467happyReduction_467happyReduce_468happyReduction_468happyReduce_469happyReduction_469happyReduce_470happyReduction_470happyReduce_471happyReduction_471happyReduce_472happyReduction_472happyReduce_473happyReduction_473happyReduce_474happyReduction_474happyReduce_475happyReduction_475happyReduce_476happyReduction_476happyReduce_477happyReduction_477happyReduce_478happyReduction_478happyReduce_479happyReduction_479happyReduce_480happyReduction_480happyReduce_481happyReduction_481happyReduce_482happyReduction_482happyReduce_483happyReduction_483happyReduce_484happyReduction_484happyReduce_485happyReduction_485happyReduce_486happyReduction_486happyReduce_487happyReduction_487happyReduce_488happyReduction_488 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'translation_unitexternal_declaration statement expressionhappySeq reverseListunL withNodeInfo withLength reverseDeclr withAttributewithAttributePFappendObjAttrsappendObjAttrsR setAsmNamewithAsmNameAttrsappendDeclrAttrsptrDeclrfunDeclrarrDeclr liftTypeQuals liftCAttrsaddTrailingAttrs emptyDeclr mkVarDeclr doDeclIdentdoFuncParamDeclIdentgetCDeclrIdent happyError happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq $fPosReversed$fPos[] $fPosCDeclrR$fCNodeCDeclrR $fPosLocatedmaybePifPmlistPidentP attrlistP parenPrecii prettyDeclrbinPrec declOfDefconstPtrisVariablyModifiedType sameArraySizeTrue sameTypeNamesameBuiltinTypesameCompTypeRefsameEnumTypeRef sameFunType sameQuals testFlagstypeMismatchInfo redefErrLabelredefErrorInforedefErrReason prevDeclMsgNsMapexportFunAttrs exportStorageexportTypeQualsexportTypeQualsAttrsexportArraySize exportIntTypeexportFloatTypeexportComplexType exportSUERefexportMemberDecl exportVarDeclexportParamDeclexportDeclAttrs threadLocal exportAttrsfromDirectTypenitagKind TagEntryKindCompKindEnumKind leaveScope_enterLocalScopeleaveLocalScopecompatIdentEntrycompatTagEntrydefRedeclStatusdefRedeclStatusLocal joinComma terminateSemiterminateSemi_addRef symbolTablererrors nameGeneratordoHandleExtDecloptionsunTrav checkRedefredefErr_checkIdentTyRedef checkVarRedef enterDecl isDeclarationcheckCompatibleTypes updDefTable mismatchErrmodifygetsgetput generateName tParamDeclcomputeParamStorage tMemberDeclsmergeTypeAttributes tEnumTypeDecl tEnumType splitCDecl typeDefRef tCompTypeDecltTag tCompTypeemptyNumTypeSpecanalyseTypeDefcomputeFunDefStorage extFunProto extVarDecl localVarDeclenclosingFunctionType tBlockItemtExpr' builtinTypevoidM getParamsinLoopinSwitch checkGuard tInitList checkInitsadvanceDesigListmatchDesignatortInitcomplexBaseType hasTypeDef