8      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(portablealphajwlato@gmail.comNone NameSpaceMap a is a Map from identifiers to a, which manages  global and local name spaces. create a name space Add global definition (ns'!,oldDef) = defGlobal ns ident def  adds a global definition  ident := def to the namespace. % It returns the modified namespace ns'. If the identifier is K already declared in the global namespace, the definition is overwritten  and the old definition oldDef is returned. Enter new local scope ns' = enterNewScope ns' creates and enters a new local scope. Leave innermost local scope (ns',defs) = leaveScope ns( pops leaves the innermost local scope.  and returns its definitions Add 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 definition def = find ns ident8 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 ns ;Merge two namespaces. If they disagree on the types of any  variables, all bets are off.      ghc experimentaljwlato@gmail.comNone   ghc experimentaljwlato@gmail.comNoneC unary operator (K& R A7.3-4) logical negation one' s complement  prefix minus  prefix plus indirection operator address operator postfix decrement operator postfix increment operator prefix decrement operator prefix increment operator C binary operators (K& R A7.6-15)  logical or  logical and inclusive bitwise or exclusive bitwise or  bitwise and  not equal equal !greater or equal "less or equal #greater $less % shift right & shift left )remainder of division ,C assignment operators (K& R A7.17) 4remainder and assignment 0 !"#$%&'()*+,-./0123456789:;<=0 !"#$%&'()*+,-./0123456789:;<=0,76543210/.-8+*)('&%$#"! 9:;<=  +*)('&%$#"! , 76543210/.-89:;<=ghc experimentaljwlato@gmail.comNone@C String literals B Floats (represented as strings) F.datatype representing type flags for integers K9datatype for memorizing the representation of an integer OC char constants (abstract) RshowCharConst cG prepends _a_ String representing the C char constant corresponding to c. : If necessary uses octal or hexadecimal escape sequences. S2get the haskell representation of a char constant T'get integer value of a C char constant 0 undefined result for multi-char char constants Ureturn 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 constant X,create a multi-character character constant [Iconstruct a integer constant (without type flags) from a haskell integer a(concatenate a list of C string literals bshowStringLiteral sF prepends a String representing the C string literal corresponding to s. = If necessary it uses octal or hexadecimal escape sequences. isAsciiSourceChar b returns True- if the given character is a character which 9 may appear in a ASCII C source file and is printable.  isCChar cO 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 cW returns true if c is a source character which does not have to be escaped in C string  literals (C99: 6.4.5) :>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi,>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi,cde>?fghiVWXOQPSTURFJIHGKNML[DEZY\BC]^_@A`ba->?@ABCDEFJIHGKNMLOQPRSTUVWXYZ[\]^_`abcdefghighc experimentaljwlato@gmail.comNonej5class of type which aggregate a source code location lPosition and length of a token n0uniform representation of source file positions s)absolute offset in the preprocessed file t source file u.row (line) in the original file. Affected by #LINE pragmas. vCcolumn in the preprocessed file. Inaccurate w.r.t. to the original 0 file in the presence of preprocessor macros. }8position absoluteOffset fileName lineNumber columnNumber initializes a Position using the given arguments ~Vinitialize a Position to the start of the translation unit starting in the given file returns True7 if the given position refers to an actual source file /no position (for unknown position information) returns True3 if the there is no position information available &position attached to built-in objects returns True6 if the given position refers to a builtin definition "position used for internal errors returns True# if the given position is internal advance column advance to next line Tadjust position: change file and line number, reseting column to 1. This is usually  used for #DLINE pragmas. The absolute offset is not changed - this can be done  by /adjustPos newFile line . incPos (length pragma). advance just the offset !jklmnopqrstuvwxyz{|}~ jklmnopqrstuvwxyz{|}~ nrqpostuv}lm{|wxyz~jkjklmnrqpostuvwxyz{|}~ghc experimentaljwlato@gmail.comNoneName is a unique identifier return an infinite stream of s starting with nameId 0 Hget the infinite stream of unique names starting from the given integer ghc experimentaljwlato@gmail.comNone Ha class for convenient access to the attributes of an attributed object Parsed entity attribute /get the number of characters an AST node spans .get the position and length of the last token equality by name ;create a node with neither name nor positional information Hreturn True if the node carries neither name nor positional information <| Given only a source position, create a new node attribute cGiven a source position and the position and length of the last token, create a new node attribute BGiven a source position and a unique name, create a new attribute  identifier mGiven a source position, the position and length of the last token and a unique name, create a new attribute  identifier. Strict in           ghc experimentaljwlato@gmail.comNone C identifiers >References uniquely determining a struct, union or enum type. E 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. I only minimal error checking, e.g., the characters of the identifier are G not checked for being alphanumerical only; the correct lexis of the B identifier should be ensured by the caller, e.g., the scanner. : for reasons of simplicity the complete lexeme is hashed.  returns an internal7 identifier (has internal position and no unique name)  return an internal identifier with position info  returns a builtin6 identifier (has builtin position and no unique name) return True if the given identifier is internal string of an identifier Ddump the identifier string and its positions for debugging purposes  ghc experimentaljwlato@gmail.comNonea7All 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 node (change the annotation (non-recursively) , of an AST node. Use fmap for recursively  modifying the annotation. Attributed string literals  C constant (K&R A2.5 & A7.2)  Objective-C constant (NSString)  (type,type) (type, designator-list)  (expr, type)+GNU Builtins, which cannot be typed in C99 NSString constant selector name Obj-c message <Code block definition, new-style params, compound statement builtin expressions, see   objective-c additions GNU C address of label !GNU C compound statement as expr C99 compound literal 8integer, character, floating point and string constants C expression (K&R A7) 7 these can be arbitrary expression, as the argument of sizeof can be 9 arbitrary, even if appearing in a constant expression  GNU C extensions: alignof, __real, __imag, ({ stmt-expr }), && label and built-ins ! * objective-C style code blocks  __attribute__ annotations Those are of the form )CAttr attribute-name attribute-parameters, ? and serve as generic properties of some syntax tree elements. array range designator CRangeDesig from to _ (GNU C) member designator array position designator  Designators VA designator specifies a member of an object, either an element or range of an array, ! or the named member of a struct / union. Initializer List 3The members of an initializer list are of the form (designator-list,initializer).  The designator-listA specifies one member of the compound type which is initialized. H 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). 3Examples (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; 7 let init1 = ([CArrDesig 0, CArrDesig 3], CInitExpr 4) 7 init2 = ([CArrDesig 2] , CInitExpr 5) 7 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; B let init_s_0 = CInitList [ ([], CInitExpr 2), ([], CInitExpr 3)]  init_s = CInitList [ , ([], init_s_0), K ([CMemberDesig "c", CArrDesig 0], CInitExpr 1)  ] , in CInitList [(CMemberDesig "s", init_s)] initialization list (see ) assignment expression C initialization (K&R A8.7, C99 6.7.8) DInitializers 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 specifier L Either 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?), where the latter 1 is an optional constant integral expression.  attrs is a list of  __attribute__7 annotations associated with the enumeration specifier (A tag to determine wheter we refer to a struct or union, see  .  "C 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 specifier C type qualifiers (K&ER A8.2, C99 6.7.3), function specifiers (C99 6.7.4), and attributes. const, volatile and restrict type qualifiers and inline function specifier.  Additionally,  __attribute__/ annotations for declarations and declarators.  Typedef name with protocol list class name with protocol list   typeof(type)  typeof(expr) Typedef name  Enumeration specifier !Struct or Union specifier -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. 3Objective-C class names and specifiers of the form ' typdefname  Protocols'  are also allowed. /GNUC thread local storage 0typedef 1extern 2static 3 register 4auto 5+C storage class specifier (and typedefs) (K&R A8.1, C99 6.7.1) 7type qualifier 8 type name 9#storage-class specifier or typedef :(C declaration specifiers and qualifiers PDeclaration specifiers include at most one storage-class specifier (C99 6.7.1), 6 type specifiers (6.7.2) and type qualifiers (6.7.3). <A nested function (GNU C) =A local declaration > A statement ?C99 Block items OThings that may appear in compound statements: either statements, declarations # or nested function definitions. BAssembler operand 'CAsmOperand argName? constraintExpr arg' specifies an operand for an assembler  statement. EGNU Assembler statement  B CAssemblyStatement type-qual? asm-expr out-ops in-ops clobbers _ "is 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-ops are the input ' and output operands of the statement.  clobbersS is a list of registers which are clobbered when executing the assembler statement Gassembly statement Hreturn statement CReturn returnExpr Ibreak statement Jcontinue statement Kcomputed goto CGotoPtr labelExpr Lgoto statement  CGoto label Mfor statement CFor init expr-2 expr-3 stmt, where init is 1 either a declaration or initializing expression Nwhile or do-while statement CWhile guard stmt isDoWhile at Oswitch statement CSwitch selectorExpr switchStmt, where   switchStmt usually includes case, break and default  statements Pconditional statement $CIf ifExpr thenStmt maybeElseStmt at Qcompound statement #CCompound localLabels blockItems at R@A simple statement, that is in C: evaluating an expression with + side-effects and discarding the result. SThe default case default : stmt TA case range of the form case lower ... upper : stmt UA statement of the form case expr : stmt V.An (attributed) label followed by a statement WC statement (K&R A9, C99 6.8) Y CArrSize isStatic exprZ CUnknownSize isCompleteType[Size of an array ]Function declarator =CFunDeclr declr (old-style-params | new-style-params) c-attrs ^Array declarator "CArrDeclr declr tyquals size-expr? _Block declarator CBlkDeclr tyquals declr `Pointer declarator CPtrDeclr tyquals declr aDerived declarators, see d ZIndirections are qualified using type-qualifiers and generic attributes, and additionally H The size of an array is either a constant expression, variable length ($) or missing; in the last case, the t type of the array is incomplete. The qualifier static is allowed for function arguments only, indicating that D the supplied argument is an array of at least the given size. ) New style parameter lists have the form  Right (declarations, isVariadic)%, old style parameter lists have the  form Left (parameter-names) dC declarator (K&-R A8.5, C99 6.7.5) and abstract declarator (K&R A8.8, C99 6.7.6) WA declarator declares a single object, function, or type. It is always associated with  a declaration (g"), which specifies the declaration'1s type and the additional storage qualifiers and 1 attributes, which apply to the declared object. A declarator is of the form +CDeclr name? indirections asm-name? attrs _, where  nameH is the name of the declared object (missing for abstract declarators),   declquals0 is a set of additional declaration specifiers,  asm-name; is the optional assembler name and attributes is a set of  attrs is a set of  __attribute__& annotations for the declared object.  indirectionsf 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" []  x1 is a restrict pointer to a const pointer to int  ! const int * const * restrict x; 6 CDeclr "x" [CPtrDeclr [restrict], CPtrDeclr [const]]  f1 is an function return a constant pointer to int   int* const f(); - CDeclr "f" [CFunDeclr [],CPtrDeclr [const]]  f3 is a constant pointer to a function returning int  int (* const f)(); ==> . CDeclr "f" [CPtrDeclr [const], CFunDeclr []] gC 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-list', where the form of the declarator list's / elements depends on the kind of declaration: 1) Toplevel declarations (K&R A8, C99 6.7 declaration) b 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 declaration  the elements of the non-empty init-declarator-list are of the form (Just declr, init?, Nothing).  The declarator declrI has to be present and non-abstract and the initialization expression is  optional. 2) Structure declarations (K&(R A8.3, C99 6.7.2.1 struct-declaration) )Those are the declarations of a structure' s members. ! do not allow storage specifiers < in strict C99, the list of declarators has to be non-empty  the elements of init-declarator-list are either of the form (Just declr, Nothing, size?), H 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. 5 no member of a structure shall have incomplete type 3) 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), Z 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 specifiers  init-declarator-list- must contain at most one triple of the form (Just declr, Nothing, Nothing).  where declr& is an abstract declarator (i.e. doesn'!t contain a declared identifier) %Available visibility specifications. Implementation declaration, '@implementation' Interface declaration,  '@interface' !Objective-C protocol declaration $Objective-C Category implementation '@implementation' !Objective-C Category definition ( '@interface') #C function definition (C99 6.9.1, K& R A10.1) %A function definition is of the form ,CFunDef specifiers declarator decllist? stmt.   specifiers< are the type and storage-class specifiers of the function. 1 The only storage-class specifiers allowed are extern and static.  The  declarator/ must be such that the declared identifier has  function type. J 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) EEither a toplevel declaration, function definition, class, category, " protocol, or external assembler. 'Complete C tranlsation unit (C99 6.9, K&R A10) SA complete C translation unit, for example representing a C header or source file. A It consists of a list of external (i.e. toplevel) declarations. $Separate the declaration specifiers Note that inline isn'7t actually a type qualifier, but a function specifier.   __attribute__G 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{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~F !"#$%&'()*+,-./01234567      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Fg ef mu~{klqtsrvxw|}yz:5-6987.43210/,+*)('&%$#"! jhi   da[bc\`_^]XZYpnoW?EBFVUTSRQPONMLKJIHG;>=<CD@A,76543210/.-+*)('&%$#"! &     ,+*)('&%$#"! -.43210/56987:;>=<?@ABCDEFVUTSRQPONMLKJIHGWXZY[\`_^]abcdefghijklmnopqtsruvxwyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ NoneCreate a type name of id protoname  None portablejwlato@gmail.comNone!%portable C Tokens for the C lexer.jwlato@gmail.comNonetokens used for Objective-C       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV`UTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      VWX ghc experimentaljwlato@gmail.comNoneOunspecified error raised by the user (in case the user does not want to define  her own error types). Terror raised if a operation requires an unsupported or not yet implemented feature. (errors in Language.ObjC are instance of  (obtain source location etc. of an error wrap error in  try to cast a generic  to the specific error type modify the error level  supertype of all errors 5information attached to every error in Language.ObjC Error levels (severity) return True6 when the given error makes it impossible to continue  analysis or compilation. position of an Error severity level of an Error message lines of an Error 5converts an error into a string using a fixed format U either the lines of the long error message or the short message has to be non-empty  the format is . <fname>:<row>: (column <col>) [<err lvl>]  >>> <line_1>  <line_2>  ...  <line_n> >raise a fatal internal error; message may have multiple lines (YZ[\]^_`abcdefYZ[\]^_`abcdef ghc experimentaljwlato@gmail.comNone(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  is return True$ if the given input stream is empty str = takeChars n is returns the first n characters 2 of the given input stream, without removing them read a file into an  convert  to g  convert a g to an   countLines* returns the number of text lines in the  given     "portablejwlato@gmail.comNone h*A Lazy Parser Monad. Highly experimental 7Default parser type, so CExtDecls can be parsed lazily i.a minimal state-like representation, so we don't need to depend on mtl j For typedef'9d or classname identifiers, indicate which type they are 7execute the given parser on the supplied input stream.  returns % if the parser failed, and a pair of . result and remaining name supply otherwise "Lazy parsing results are ignored.  Synopsis: JexecParser parser inputStream initialPos predefinedTypedefs uniqNameSupply 7execute the given parser on the supplied input stream. <returns a lazy list of results, and either the parse result * or a ParseError if there was an error. MThe list should be consumed as far as possible before checking the result is # evaluated for maximum laziness.  Synopsis: JexecParser parser inputStream initialPos predefinedTypedefs uniqNameSupply k setLastToken modifyCache tokl1handle an End-Of-File token (changes savedToken) m3Insert a parsed value into the lazy parsing stream 9hnoipqrstuvwxyz{|}~jklmhjklm'hnoipqrstuvwxyz{|~}jklm#Noney     m     portable experimentaljwlato@gmail.comNone'Generic arguments for the preprocessor %Generic Options for the preprocessor B encapsulates the abstract interface for invoking C preprocessors  Zparse the given command line arguments, and return a pair of parsed and ignored arguments  run the preprocessor &file extension of a preprocessed file  5Cpp arguments that only specify the input file name.  <use the given preprocessor arguments without analyzing them  7add a typed option to the given preprocessor arguments 8add a string option to the given preprocessor arguments #run the preprocessor and return an  if preprocesssing succeeded create an output file, given  Maybe tmpdir and  inputfile .compute output file name from input file name create a temporary file 8guess whether a file is preprocessed (file end with .i)                      portable experimentaljwlato@gmail.comNoneGCC, represents a reference to the gcc compiler create a reference to gcc +Parse arguments for preprocessing via GCC. 6 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_args $None     %ghc experimentaljwlato@gmail.comNonew !"#$%&'()*+,-./01234567>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&NoneparseC input initialPos+ parses the given preprocessed Objective-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  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 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{|}~      !"#$%&'()*+,-./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 { | } ~                            ! " # $ % & ' ( ) * + , - . / 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 { | } ~    'ghc experimentaljwlato@gmail.comNoneRjknopqrstuvwxy~/nrqpostuvjk~wxyportable experimentaljwlato@gmail.comNone-A class of types which can be pretty printed pretty print the given value prettyPrec prec p pretty prints p assuming 2 that the surrounding context has a precedence of  prec XPretty print the given tranlation unit, but replace declarations from header files with #include directives. 7The resulting file may not compile (because of missing #define4 directives and similar things), but is very useful l for testing, as otherwise the pretty printed file will be cluttered with declarations from system headers. Gpretty-print parameters (used by function declarators and code blocks) K   I    ghc experimentaljwlato@gmail.comNoneBrun the given parser using a new name supply and builtin typedefs  see   Synopsis: 'runParser parser inputStream initialPos   ghcalphajwlato@gmail.comNoneY is currently an alias for  (Syntax)  is an alias for W (Syntax) ! __attribute__ annotations Those 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 function TODON: ultimatively, we want to parse attributes and represent them in a typed way #Assembler 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 . We'Sre planning a normalized representation, but this depends on the implementation of  constant expression evaluation 09Type qualifiers: constant, volatile, proto, and restrict 6YAn Enumerator consists of an identifier, a constant expressions and the link to its type 8&Representation of C enumeration types 9 .EnumType name enumeration-constants attrs node:(a tag to determine wheter we refer to a struct or union, see =. ="Composite type (struct or union). Acomposite type declarations C"floating point type (C99 6.7.2.2) Gintegral types (C99 6.7.2.2) Ttypdef references = If the actual type is known, it is attached for convenience V!Builtin type (va_list, anything) Ynormalized type representation anAn array type may either have unknown size or a specified array size, the latter either variable or constant. O Furthermore, when used as a function parameters, the size may be qualified as static. * In a function prototype, the size may be `Unspecified variable size' ([*]). b "FixedSizeArray is-static size-exprc UnknownArraySize is-starreddFunction 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. gtypes of C objects ha defined type ifunction type j array type k block type l pointer type ma non-derived type nILinkage: Either no linkage, internal to the translation unit or external t+Storage duration and linkage of a variable u.function, either internal or external linkage v@static storage, linkage spec and thread local specifier (gnu c) w'automatic storage (optional: register) x no storage y#Declaration attributes of the form 0DeclAttrs isInlineFunction storage linkage attrs ;They specify the storage and linkage of a declared object. z DeclAttrs inline storage attrs{Generic variable declarations }typedef definitions. 1The identifier is a new name for the given type. Struct/Union member declaration  AnonBitField typ size $MemberDecl vardecl bitfieldsize nodeParameter declaration Function definitions VA function definition is a declaration together with a statement (the function body). Object Definitions DAn object definition is a declaration together with an initializer. DIf the initializer is missing, it is a tentative definition, i.e. a / definition which might be overriden later on. Declarations, which aren't definitions Declaration events QThose events are reported to callbacks, which are executed during the traversal. assembler block a type definition )local variable declaration or definition parameter declaration %file-scope declaration or definition file-scope struct/union/ enum event global declaration/*definition table returned by the analysis @identifiers, typedefs and enumeration constants (namespace sum) definition of an enumerator function definition object definition object or function declaration 9All datatypes aggregating a declaration are instances of  Declaration Mget the name, type and declaration attributes of a declaration or definition "Composite type definitions (tags) 7accessor class : composite type tags (struct or union) accessor class : struct/union/ enum names 2return the type corresponding to a tag definition 2get the declaration corresponding to a definition ?get the variable identifier of a declaration (only safe if the - the declaration is known to have a name) get the variable name of a  Declaration get the type of a  Declaration $get the declaration attributes of a  Declaration -textual description of the kind of an object splitIdentDecls includeAllDecls[ splits a map of object, function and enumerator declarations and definitions into one map o holding declarations, and three maps for object definitions, enumerator definitions and function definitions.  If includeAllDecls is Trueg all declarations are present in the first map, otherwise only those where no corresponding definition  is available. empty global declaration table filter global declarations merge global declarations Returns True. if the given object definition is tentative. return the idenitifier of a typedef get the t 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 definition no type qualifiers 3Convert protocol qualifier from AST representation merge (&&) two type qualifier sets merge (&&) two protocol qualifier sets Empty attribute list Merge attribute lists  TODO': currently does not remove duplicates  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}~{|yztxwvusrnqpogmlkjihdfeacbTUY`_^]\[ZVXWGSRQPONMLKJIHCFEDAB=>:<;?@8967012345)*+,-./%'&#!" ($| !"#$%'&()*+,-./0123456789:<;=>?@ABCFEDG SRQPONMLKJIHTUVXWY`_^]\[Zacbdfegmlkjihnqporstxwvuyz{|}~                         ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8ghcalphajwlato@gmail.comNoneORedefError is caused by an invalid redefinition of the same identifier or type DBadSpecifierError is caused by an invalid combination of specifiers FInvalidASTError is caused by the violation of an invariant in the AST  9 : ; < = > ? @ A B C 9 : ; < = > ? @ A B CNone(Constructor for a simple integral type. .Constructor for a simple floating-point type. $A simple pointer with no qualifiers DA pointer with the const qualifier. <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. The 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. 4The builtin type of variable-length argument lists. 8Check whether a type is an integral type. This includes enum 4 types. This function does not attempt to resolve typedef types. <Check whether a type is a floating-point numeric type. This ( function does not attempt to resolve typedef types. =Check whether a type is an pointer type. This includes array 4 types. This function does not attempt to resolve typedef types. <Check whether a type is a scalar type. Scalar types include ' arithmetic types and pointer types. return True& if the given type is a function type :Result 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 E 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. G Note that this does not dereference the types of structure or union C fields, so there are still cases where further dereferencing is  needed.  D E D Eghc prototypejwlato@gmail.comNoneExport Declarator  Synopsis: 5exportDeclr other_specs type attributes variable-name Export a type to syntax F0express storage in terms of storage specifiers. This isn'It 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. B If the storage can actually be specified, the export is correct.  G H I J K L M N O P Q F R S T U   G H I J K L M N O P Q F R S T UNone>For an arithmetic operator, if the arguments are of the given 2 types, return the type of the full expression. ghcalphajwlato@gmail.comNone%Status of a declaration kind mismatch #new def shadows one in outer scope new def was discarded old def was overwritten  new entry "Table holding current definitions  declared `ordinary identifiers' declared structunion enum tags defined labels  !member declarations (only local)  link names with definitions  >Tag names map to forward declarations or definitions of struct/union/ enum types  All ordinary identifiers map to  IdenTyDecl: either a typedef or a object/function/ enumerator Aempty definition table, with all name space maps in global scope 7get the globally defined entries of a definition table 9Enter function scope (AND the corresponding block scope) :Leave function scope, and return the associated DefTable. # Error if not in function scope. Enter new block scope Leave innermost block scope #Enter new member declaration scope )Leave innermost member declaration scope VsameTagKind ty1 ty2 returns True if ty1,ty21 are the same kind of tag (struct,union or enum) declare/define a global object/function/typeDef returns Redeclared def if there is already an object/function/typeDef  in global scope, or DifferentKindRedec def0 if the old declaration is of a different kind. declare/define a object/function/typeDef with lexical scope returns Redeclared def or DifferentKindRedec def if there is already an object/function/typeDef  in the same scope. declare/define a object/function/DtypeDef 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 def if there is already an object/function/typeDef in the same scope.  3declare a tag (fwd decl in case the struct name isn't defined yet) ! define a tag "define a label ? Return the old label if it is already defined in this function's scope #:lookup 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. *AMerge two DefTables. If both tables contain an entry for a given & key, they must agree on its value. ; W X Y      Z [ \ ] V ^ _ ` !"#$%&'()* a b c-      !"#$%&'()*-      !"#$%&'()*+ W Y X      Z [ \ ] V ^ _ ` !"#$%&'()* a b cghc prototypejwlato@gmail.comNone#+,- d e f g h i j k l m n o p q r s t u v w x y z { | } ~  +,--+,#+,- d e f g h i j k l m n o p q r s t u v w x y z { | } ~  None....ghcalphajwlato@gmail.comNone4IThe variety of the C language to accept. Note: this is not yet enforced. 9;simple traversal monad, providing user state and callbacks :Traversal monad ;&handling declarations and definitions = throw an  > catch an 3 (we could implement dynamically-typed catch here) ?remember that an  occurred (without throwing it) @#return the list of recorded errors Breturn the definition table C1perform an action modifying the definition table Eunique name generation FZforward declaration of a tag. Only necessary for name analysis, but otherwise no semantic  consequences. G/define the given composite type or enumeration F If there is a declaration visible, overwrite it with the definition. = Otherwise, enter a new definition in the current namespace. K If there is already a definition present, yield an error (redeclaration). KThandle variable declarations (external object declarations and function prototypes) ^ variable declarations are either function prototypes, or external declarations, and not very U interesting on their own. we only put them in the symbol table and call the handle. ) declarations never override definitions LVhandle parameter declaration. The interesting part is that parameters can be abstract y (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 way Mhandle function definitions N+handle object defintions (maybe tentative) Ulookup a type definition  the 'wrong kind of object' is an internal error here, : because the parser should distinguish typeDefs and other  objects V)lookup an object, function or enumerator .add link between use and definition (private) Wcreate a reference to a struct/union/enum MThis currently depends on the fact the structs are tagged with unique names. R We could use the name generation of TravMonad as well, which might be the better . choice when dealing with autogenerated code. Y-check wheter non-recoverable errors occurred Z)raise an error caused by a malformed AST [+raise an error based on an Either argument V/ 0 123456789 :;<=>?@ABCDE FGHIJ KL M N OPQRSTUV WXYZ[\ ]^_`abcd efgh :/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh;DEABC<=>?@:;FGHINMKLJOPQRSTUVWYX[Z\9]^/0a_b0c123d`48765efgh?/ 0 123487659 :;<=>?@ABCDE FGHIJ KL M N OPQRSTUV WXYZ[\ ]^_`abcd efgh ghcalphajwlato@gmail.comNone .analyse and translate a parameter declaration 5 Should be called in either prototype or block scope Ka parameter declaration has no linkage and either auto or register storage +analyse and translate a member declaration analyse declarators get the type of a type declaration A type declaration T may appear in thre forms:   typeof(T)7 as abstract declarator in a function prototype, as in f(int) - in a declaration without declarators, as in struct x { int a } ;  Currently, analyseTypeDecl/ is exlusively used for analysing types for GNU's  typeof(T). TWe move attributes to the type, as they have no meaning for the abstract declarator translate a type 2translate a type without (syntactic) indirections  Due to the GNU typeof7 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 type VMapping from num type specs to C types (C99 6.7.2-2), ignoring the complex qualifier. convert old style parameters VThis 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) DTODO: This could be moved to syntax, as it operates on the AST only Wsplit a CDecl into declarators, hereby eliding SUE defs from the second declarator on. jThere are several reasons why this isn;t the preferred way for handling multiple-declarator declarations, ( but it can be convinient some times.  - splitCDecl [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  __attribute__ annotations & TODO: This is a unwrap and wrap stub  construct a name for a variable  TODO: more or less bogus Dqrstuvwxyz{|}~ currently unused     7qrstuvwxyz{|}~7yz{|}~qxwvutsr%qxwvutsryz{|}~     None  None "Determine the type of a constant. ,Determine whether two types are compatible. 6Determine the composite type of two compatible types. HDetermine whether two types are compatible in an assignment expression. *Determine the type of a binary operation. 0Determine the type of a conditional expression. Get the type of field m of type t 8Get all members of a struct, union, or enum, with their 0 types. Collapse fields of anonymous members. ?Expand an anonymous composite type into a list of member names  and their associated types. """"ghcalphajwlato@gmail.comNoneAnalyse the given AST analyseAST ast- results in global declaration dictionaries. Y 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. K It is the users responsibility to check whether any hard errors occurred (runTrav does this for you). !Analyse an top-level declaration Analyse a function definition 7Analyse a declaration other than a function definition Analyse a typedef )compute storage of a function definition La function definition has static storage with internal linkage if specified static, + the previously declared linkage if any if extern8 or no specifier are present. (See C99 6.2.2, clause 5) This function won'Pt raise an Trav error if the declaration is incompatible with the existing one,  this case is handled in M. handle a function prototype handle a object declaration / definition IWe have to check the storage specifiers here, as they determine wheter we're dealing with decalartions  or definitions  see [http:www.sivity.netprojects language.cwikiExternalDefinitions] +handle a function-scope object declaration / definition  see [http:www.sivity.netprojects language.cwikiLocalDefinitions] BGiven a context, determine the type declaration for the enclosing + function, if possible, given a context. @Typecheck a statement, given a statement context. The type of a  statement is usually void', but expression statements and blocks # can sometimes have other types. ?Typecheck a block item. When statement expressions are blocks, B 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. %ijklmnop     ijklmnoppikjlonm ikjlonmp     (ghcalphajwlato@gmail.comNone; !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~+,-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ghc experimentaljwlato@gmail.comNone4preprocess (if necessary) and parse a C source file ; Synopsis: parseCFile preprocesssor tmp-dir? cpp-opts file V 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  !"#$%&'()*+,-./01234567>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijknopqrstuvwxy~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ )*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_U`abcdeffgghhiijklmnopqrstsuvwxyz{|}~       !"#$%$&'()*+,-./0123456789:;<=>?@ABCDEFGH+?GIJKLMNOPPQRRSTUVWXYZ[\]^ _`abcdefeghijklmnnoppqrrsttuvvwxyz{|}~                                             """""&&&&&&      !"##$$%&'(())**+,-./0123456789:;<<=>?@ABCDEFGHHIJKJLMNOPQRSTUVWXYZ[\]^^__``abacdceeffgghijklhmnnopqrstuvvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIIJKLMNOPQRSTUVWXYZ[\]]^_`abcdefghijklmnopqrstuvvwxyz{|}~J      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$   % & ' ( ) * + , - . / 0J12"3"4"5"6"7"8"3"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"0"["\"]"^"_"`"a"b"c#d#e#f#d#g#e#h#i#h#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& {& |& }& ~& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & !& "& #& $& %& && '& (& )& *& +& ,& -& .& /& 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 { |language-objc-0.4.2.6#Language.ObjC.Analysis.NameSpaceMapLanguage.ObjC.Syntax.OpsLanguage.ObjC.Syntax.ConstantsLanguage.ObjC.Data.PositionLanguage.ObjC.Data.NameLanguage.ObjC.Data.NodeLanguage.ObjC.Data.IdentLanguage.ObjC.Syntax.ASTLanguage.ObjC.Syntax.BuildersLanguage.ObjC.Syntax.UtilsLanguage.ObjC.ParserLanguage.ObjC.Data.ErrorLanguage.ObjC.Data.InputStreamLanguage.ObjC.System.PreprocessLanguage.ObjC.System.GCCLanguage.ObjC.PrettyLanguage.ObjC.Analysis.SemRepLanguage.ObjC.Analysis.SemError Language.ObjC.Analysis.TypeUtilsLanguage.ObjC.Analysis.Export&Language.ObjC.Analysis.TypeConversionsLanguage.ObjC.Analysis.DefTableLanguage.ObjC.Analysis.DebugLanguage.ObjC.Analysis.Builtins Language.ObjC.Analysis.TravMonad"Language.ObjC.Analysis.AstAnalysis#Language.ObjC.Analysis.DeclAnalysis Language.ObjC.Analysis.ConstEval Language.ObjC.Analysis.TypeCheck Language.ObjCLanguage.ObjC.Data.RListLanguage.ObjC.Parser.BuiltinLanguage.ObjC.Parser.Tokens Language.ObjC.Parser.ParserMonadLanguage.ObjC.Parser.LexerLanguage.ObjC.SystemLanguage.ObjC.SyntaxLanguage.ObjC.Parser.ParserLanguage.ObjC.DataLanguage.ObjC.Analysis NameSpaceMap globalNames hasLocalNames localNames nameSpaceMap defGlobal enterNewScope leaveScopedefLocal lookupName lookupGloballookupInnermostScope nsMapToListmergeNameSpaceCUnaryOpCNegOpCCompOpCMinOpCPlusOpCIndOpCAdrOp CPostDecOp CPostIncOp CPreDecOp CPreIncOp CBinaryOpCLorOpCLndOpCOrOpCXorOpCAndOpCNeqOpCEqOpCGeqOpCLeqOpCGrOpCLeOpCShrOpCShlOpCSubOpCAddOpCRmdOpCDivOpCMulOp CAssignOpCOrAssOp CXorAssOp CAndAssOp CShrAssOp CShlAssOp CSubAssOp CAddAssOp CRmdAssOp CDivAssOp CMulAssOp assignBinopisCmpOpisPtrOpisBitOp isLogicOp isEffectfulOpFlagsCStringCFloatCIntegerCIntFlagFlagImag FlagLongLongFlagLong FlagUnsignedCIntRepr OctalReprHexReprDecReprCCharCChars showCharConstgetCChar getCCharAsInt isWideCharcCharcChar_wcChars readCInteger getCIntegercIntegercFloat readCFloatcString cString_w getCStringconcatCStrings showStringLit escapeChar unescapeCharunescapeStringnoFlagssetFlag clearFlagtestFlagPosposOf PosLengthPLPositionInternalPositionBuiltinPosition NoPosition posOffset'posFile'posRow' posColumn'posFileposRow posColumn posOffset mkPosLength unPosLengthpositioninitPos isSourcePosnoposisNoPos builtinPos isBuiltinPos internalPos isInternalPosincPosretPos adjustPos incOffsetNamenameId newNameSupplynamesStartingFromCNodenodeInfoNodeInfoOnlyPos lengthOfNodegetLastTokenPos nameOfNode posOfNode fileOfNodeeqByName internalNode undefNode isUndefNodemkNodeInfoOnlyPosmkNodeInfoPosLen mkNodeInfo mkNodeInfo'IdentSUERefNamedRef AnonymousRefisAnonymousRefmkIdent internalIdentinternalIdentAt builtinIdentisInternalIdent identToString dumpIdentCStringLiteralCStrLit CConstant CStrConst CFloatConst CCharConst CIntConstCConst ObjCConstant ObjCStrConst ObjCConst CBuiltinThingCBuiltinTypesCompatibleCBuiltinOffsetOf CBuiltinVaArgCBuiltinObjCKeywordArg ObjCKeyArgObjCMessageSelector ObjCKeyArgs ObjCMsgSelObjCMessageExpression ObjCMsgSup ObjCMsgClass ObjCMsgExpr ObjCSelector ObjCOutSel ObjCInSelObjCSelObjCSelectorKeyNameObjCSelKeyNameObjCSelectorName ObjCSelKeys ObjCSelPlain ObjCSelName CExpressionObjCEncodeExpr ObjCProtoExprObjCSelectorExprObjCMessageExpr CBlockExpr CBuiltinExpr CLabAddrExpr CStatExpr CCompoundLitCVarCMemberCCallCIndex CComplexImag CComplexReal CAlignofType CAlignofExpr CSizeofType CSizeofExprCUnaryCCastCBinaryCCondCAssignCCommaCExpr CAttributeCAttrCPartDesignator CRangeDesig CMemberDesig CArrDesig CDesignatorCInitializerList CInitList CInitializer CInitExprCInit CEnumerationCEnum CStructTag CUnionTagCStructureUnionCStruct CStructUnionObjCProtoQualifierObjCOnewayQualObjCBycopyQual ObjCInOutQual ObjCOutQual ObjCInQual ObjCProtoQualCTypeQualifier CAttrQual CInlineQual CRestrQual CVolatQual CConstQual CTypeQualCTypeSpecifier ObjCTypeProtoObjCClassProto CTypeOfType CTypeOfExprCTypeDef CEnumTypeCSUType CComplexType CBoolType CUnsigType CSignedType CDoubleType CFloatType CLongTypeCIntType CShortType CCharType CVoidType CTypeSpecCStorageSpecifierCThreadCTypedefCExternCStatic CRegisterCAuto CStorageSpecCDeclarationSpecifier CDeclSpecCCompoundBlockItem CNestedFunDef CBlockDecl CBlockStmt CBlockItemCAssemblyOperand CAsmOperandCAssemblyStatementCAsmStmt CStatementCAsmCReturnCBreakCContCGotoPtrCGotoCForCWhileCSwitchCIf CCompoundCDefaultCCasesCCaseCLabelCStat CArraySizeCArrSize CNoArrSizeCDerivedDeclarator CFunDeclr CArrDeclr CBlkDeclr CPtrDeclr CDerivedDeclr CDeclaratorCDeclr CDeclarationCDeclObjCPropertyModifier ObjCPropModObjCPropertyDeclaration ObjCPropDeclObjCKeywordDeclarator ObjCKeyDeclrObjCMethodSelectorObjCEllipseMethod ObjCMethodObjCUnaryMethod ObjCMethodSelObjCMethodTypeObjCInstanceMethodObjCClassMethodObjCMethodDefinition ObjCMethodDefObjCMethodDeclarationObjCMethodDeclObjCImplementationDefinition ObjCImplFunObjCImplMethod ObjCImplDec ObjCImplDefObjCInterfaceDeclarationObjCIfacePropDeclObjCIfaceMethodDecl ObjCIfaceDecl ObjCVisTypeObjCPackageVis ObjCPubVis ObjCProtVis ObjCPrivVisObjCVisibilitySpec ObjCVisSpecObjCInstanceVariableBlockObjCInstanceVarBlockObjCProtocolName ObjCProtoNm ObjCClassName ObjCClassNmObjCClassDeclaratorObjCClassDeclrObjCImplementationObjCImpl ObjCInterface ObjCIfaceObjCProtocolDeclBlockObjCOptProtoBlockObjCReqProtoBlockObjCProtoDeclBlockObjCProtocolDec ObjCProtoDecObjCForwardProtoDecObjCClassListDef ObjCClassDefObjCCategoryImplementation ObjCCatImplObjCCategoryDec ObjCCatDec CFunctionDefCFunDefCExternalDeclarationCAsmExtObjCCatImplExt ObjCCatExt ObjCProtoExt ObjCClassExt ObjCImplExt ObjCIfaceExtCFDefExtCDeclExtCExtDeclCTranslationUnit CTranslUnitpartitionDeclSpecsisSUEDef cstringOfLit liftStrLitidType idTypeSpecidSpec protoTypenonode getSubStmts mapSubStmtsmapBlockItemStmts getLabelsbuiltinTypeNames UserErrorUnsupportedFeatureError errorInfotoError fromErrorchangeErrorLevelCError ErrorInfo ErrorLevel LevelFatal LevelError LevelWarn isHardError mkErrorInfoerrorPos errorLevel errorMsgsunsupportedFeatureunsupportedFeature_userErr showError showErrorInfo internalErr InputStreamtakeBytetakeCharinputStreamEmpty takeCharsreadInputStreaminputStreamToStringinputStreamFromString countLinesP ParseError execParserexecLazyParserCppArgs cppOptions extraOptions cppTmpDir inputFile outputFile CppOption IncludeFileUndefineDefine IncludeDir Preprocessor parseCPPArgsrunCPPcppFile rawCppArgs addCppOptionaddExtraOptionrunPreprocessorisPreprocessedGCCnewGCCparseC parseLazyC translUnitPextDeclP statementP expressionPPrettypretty prettyPrecprettyUsingInclude execParser_ExprStmt AttributesAttrAsmNameAsmBlockVarNameNoName Initializer ProtoQualsinQoutQinoutQbycopyQonewayQ TypeQualsconstantvolatilerestrictprotocol EnumeratorEnumType CompTyKindUnionTag StructTagCompType EnumTypeRef CompTypeRef FloatType TyLDoubleTyDoubleTyFloatIntTypeTyULLongTyLLongTyULongTyLongTyUIntTyIntTyUShortTyShortTyUCharTySCharTyCharTyBool TypeDefRef BuiltinTypeTyAnyTyVaListTypeName TyBuiltinTyEnumTyComp TyComplex TyFloating TyIntegralTyVoid ArraySizeUnknownArraySizeFunTypeFunTypeIncompleteType TypeDefType FunctionType ArrayType BlockTypePtrType DirectTypeLinkageExternalLinkageInternalLinkage NoLinkageRegister ThreadLocalStorage FunLinkageStaticAuto NoStorage DeclAttrsVarDeclTypeDef MemberDecl AnonBitField ParamDeclAbstractParamDeclFunDefObjDefDecl DeclEventAsmEvent TypeDefEvent LocalEvent ParamEventTagEvent GlobalDeclsgObjsgTags gTypeDefs IdentDecl EnumeratorDef FunctionDef ObjectDef Declaration getVarDeclTagDefEnumDefCompDef HasCompTyKindcompTag HasSUERefsueRef typeOfTagDef declIdentdeclNamedeclType declAttrs objKindDescrsplitIdentDeclsemptyGlobalDeclsfilterGlobalDeclsmergeGlobalDecls isTentativeidentOfTypeDef isExtDecl declStorage hasLinkage declLinkage typeOfCompDef typeOfEnumDef noTypeQuals noProtoQuals protoFromASTmergeTypeQualsmergeProtoQualsidentOfVarNameisNoName noAttributesmergeAttributes TypeMismatch RedefKind NoLinkageOldDisagreeLinkage ShadowedDefDiffKindRedecl DuplicateDef RedefInfo RedefErrorBadSpecifierErrorInvalidASTError InvalidAST invalidASTbadSpecifierError typeMismatch redefinitionintegralfloating simplePtr size_tType ptrDiffTypeboolTypevoidTypevoidPtr constVoidPtrcharPtr constCharPtr stringType valistTypeisIntegralTypeisFloatingType isPointerType isScalarTypeisFunctionType typeQuals typeQualsUpd typeAttrs typeAttrsUpdbaseType derefTypeDefdeepDerefTypeDef canonicalType getIntType getFloatType exportDeclrexportTypeDecl exportTypeDef exportTypeexportTypeSpecexportCompTypeDeclexportEnumTypeDeclexportCompTypeexportCompTypeRefexportEnumTypeexportEnumTypeRefarithmeticConversionfloatConversion intConversionDeclarationStatus KindMismatchShadowedKeepDef RedeclaredNewDeclDefTable identDeclstagDecls labelDefs memberDeclsrefTable typeTableTagEntry TagFwdDeclEnumDeclCompDecl IdentEntry identOfTyDecl emptyDefTable globalDefs inFileScopeenterFunctionScopeleaveFunctionScopeenterBlockScopeleaveBlockScopeenterMemberDeclleaveMemberDecldeclStatusDescr defineTypeDefdefineGlobalIdentdefineScopedIdentdefineScopedIdentWhen declareTag defineTag defineLabel lookupIdent lookupTag lookupLabellookupIdentInnerlookupTagInner insertType lookupType mergeDefTable prettyAssocsprettyAssocsWithglobalDeclStatsbuiltins TravState userState TravOptionslanguage CLanguageGNU99GNU89C99C89Trav 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 concatMapMExprSideRValueLValueStmtCtx SwitchCtxLoopCtxFunCtxtExprTypeSpecAnalysis TSNonBasicTSType TSTypeDefTSNumTSBoolTSVoidTSNone NumTypeSpecbasesignSpecsizeMod isComplexSizeMod LongLongModLongModShortMod NoSizeModSignSpecUnsignedSigned NoSignSpec NumBaseType BaseDouble BaseFloatBaseIntBaseChar NoBaseType VarDeclInfo StorageSpec ExternSpec StaticSpec ThreadSpecRegSpecAutoSpec NoStorageSpechasThreadLocalSpecanalyseVarDecl'analyseVarDecl isTypeDefanalyseTypeDecltType tDirectTypetNumType tArraySize tTypeQualscanonicalTypeSpeccanonicalStorageSpec mergeOldStyletAttr mkVarName nameOfDecl getOnlyDeclr MachineDesciSizefSize builtinSizeptrSizevoidSizeiAlignfAlign builtinAlignptrAlign voidAlignintExpr sizeofType alignofTypecompSizeintOpintUnOp withWordBytes boolValueintValue constEvalpTypetypeErrorOnLeft typeErrornotFound checkScalar'checkIntegral'assignCompatible' binopType'conditionalType' checkScalar checkIntegral constType compatible compositeType compositeSize sizeEqual mergeAttrscompositeParamDeclcompositeParamDecl'compositeVarDeclcompositeDeclAttrscastCompatibleassignCompatible binopTypeconditionalType derefType varAddrType fieldType tagMembersexpandAnonymous lookupSUE deepTypeAttrs typeDefAttrssueAttrs analyseAST analyseExt analyseFunDef analyseDecl defineParamsanalyseFunctionBodytStmt defaultMD tDesignator parseCFile parseCFilePreNsMapRListReversedempty singletonsnocrappendappendrrappendrrmapreverseviewrghc-prim GHC.TypesCharisAsciiSourceCharisCChar escapeCCharisSChar _showWideFlag isWideStringsQuotedQuotehead' $fShowCString $fShowCFloat$fShowCInteger$fShowCIntFlag $fShowCChar$fShowPosition $fEnumNamenO $fCNodeEither$fCNodeNodeInfo $fPosNodeInfo $fOrdNodeInfo $fEqNodeInfo$fShowNodeInfoquadbits7bits14bits21bits28 $fPosIdent $fCNodeIdent $fShowIdent $fOrdIdent $fEqIdent $fShowSUERef Annotated annotationamapGHC.Num* fmapInitList$fAnnotatedCStringLiteral$fFunctorCStringLiteral$fPosCStringLiteral$fCNodeCStringLiteral$fAnnotatedCConstant$fFunctorCConstant$fPosCConstant$fCNodeCConstant$fAnnotatedObjCConstant$fPosObjCConstant$fCNodeObjCConstant$fAnnotatedCBuiltinThing$fFunctorCBuiltinThing$fPosCBuiltinThing$fCNodeCBuiltinThing$fAnnotatedObjCKeywordArg$fPosObjCKeywordArg$fCNodeObjCKeywordArg$fAnnotatedObjCMessageSelector$fPosObjCMessageSelector$fCNodeObjCMessageSelector $fAnnotatedObjCMessageExpression$fPosObjCMessageExpression$fCNodeObjCMessageExpression$fAnnotatedObjCSelector$fPosObjCSelector$fCNodeObjCSelector$fAnnotatedObjCSelectorKeyName$fPosObjCSelectorKeyName$fCNodeObjCSelectorKeyName$fAnnotatedObjCSelectorName$fPosObjCSelectorName$fCNodeObjCSelectorName$fAnnotatedCExpression$fPosCExpression$fCNodeCExpression$fAnnotatedCAttribute$fFunctorCAttribute$fPosCAttribute$fCNodeCAttribute$fAnnotatedCPartDesignator$fFunctorCPartDesignator$fPosCPartDesignator$fCNodeCPartDesignator$fAnnotatedCInitializer$fPosCInitializer$fCNodeCInitializer$fAnnotatedCEnumeration$fFunctorCEnumeration$fPosCEnumeration$fCNodeCEnumeration$fAnnotatedCStructureUnion$fFunctorCStructureUnion$fPosCStructureUnion$fCNodeCStructureUnion$fAnnotatedObjCProtoQualifier$fPosObjCProtoQualifier$fCNodeObjCProtoQualifier$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$fAnnotatedObjCPropertyModifier$fPosObjCPropertyModifier$fCNodeObjCPropertyModifier"$fAnnotatedObjCPropertyDeclaration$fPosObjCPropertyDeclaration$fCNodeObjCPropertyDeclaration $fAnnotatedObjCKeywordDeclarator$fPosObjCKeywordDeclarator$fCNodeObjCKeywordDeclarator$fAnnotatedObjCMethodSelector$fPosObjCMethodSelector$fCNodeObjCMethodSelector$fAnnotatedObjCMethodDefinition$fPosObjCMethodDefinition$fCNodeObjCMethodDefinition $fAnnotatedObjCMethodDeclaration$fPosObjCMethodDeclaration$fCNodeObjCMethodDeclaration'$fAnnotatedObjCImplementationDefinition!$fPosObjCImplementationDefinition#$fCNodeObjCImplementationDefinition#$fAnnotatedObjCInterfaceDeclaration$fPosObjCInterfaceDeclaration$fCNodeObjCInterfaceDeclaration$fAnnotatedObjCVisibilitySpec$fPosObjCVisibilitySpec$fCNodeObjCVisibilitySpec$$fAnnotatedObjCInstanceVariableBlock$fPosObjCInstanceVariableBlock $fCNodeObjCInstanceVariableBlock$fAnnotatedObjCProtocolName$fPosObjCProtocolName$fCNodeObjCProtocolName$fAnnotatedObjCClassName$fPosObjCClassName$fCNodeObjCClassName$fAnnotatedObjCClassDeclarator$fPosObjCClassDeclarator$fCNodeObjCClassDeclarator$fAnnotatedObjCImplementation$fPosObjCImplementation$fCNodeObjCImplementation$fAnnotatedObjCInterface$fPosObjCInterface$fCNodeObjCInterface $fAnnotatedObjCProtocolDeclBlock$fFunctorObjCProtocolDeclBlock$fPosObjCProtocolDeclBlock$fCNodeObjCProtocolDeclBlock$fAnnotatedObjCProtocolDec$fFunctorObjCProtocolDec$fPosObjCProtocolDec$fCNodeObjCProtocolDec$fAnnotatedObjCClassListDef$fFunctorObjCClassListDef$fPosObjCClassListDef$fCNodeObjCClassListDef%$fAnnotatedObjCCategoryImplementation$fPosObjCCategoryImplementation!$fCNodeObjCCategoryImplementation$fAnnotatedObjCCategoryDec$fPosObjCCategoryDec$fCNodeObjCCategoryDec$fAnnotatedCFunctionDef$fFunctorCFunctionDef$fPosCFunctionDef$fCNodeCFunctionDef$fAnnotatedCExternalDeclaration$fFunctorCExternalDeclaration$fPosCExternalDeclaration$fCNodeCExternalDeclaration$fAnnotatedCTranslationUnit$fFunctorCTranslationUnit$fPosCTranslationUnit$fCNodeCTranslationUnit$fFunctorCInitializer$fFunctorCStatement$fFunctorCDerivedDeclarator$fFunctorCDeclarationidTypeGidSpecGcompoundSubStmtsObjCTok ObjCNSSLit ObjCSuper ObjCBycopy ObjCOneway ObjCInOutObjCOutObjCIn ObjCPackageObjCPubObjCProtObjCPrivObjCClassIdent ObjCEncode ObjCProtocol ObjCProperty ObjCClass ObjCOptional ObjCRequiredObjCEndGnuCTokGnuCComplexImagGnuCComplexReal GnuCTyCompat GnuCOffsetof GnuCVaArg GnuCExtTok GnuCAttrTokCTokenCTokEofCTokObjCCTokGnuC CTokTyIdent CTokIdentCTokSLitCTokFLitCTokILitCTokCLit CTokWhile CTokVolatileCTokVoid CTokUnsigned CTokUnion CTokThread CTokTypeof CTokTypedef CTokSwitch CTokStruct CTokStatic CTokSizeof CTokSigned CTokShort CTokReturn CTokRestrict CTokRegister CTokLabelCTokLongCTokInt CTokInlineCTokIfCTokGotoCTokFor CTokFloat CTokExternCTokEnumCTokElse CTokDoubleCTokDo CTokDefault CTokComplex CTokContinue CTokConstCTokCharCTokCaseCTokBool CTokBreakCTokAutoCTokAsm CTokAlignof CTokEllipsis CTokRBrace CTokLBrace CTokSemic CTokComma CTokSRAss CTokSLAss CTokBarAss CTokHatAss CTokAmpAss CTokPercAss CTokSlashAss CTokStarAss CTokMinusAss CTokPlusAss CTokAssign CTokColon CTokQuestCTokOrCTokAndCTokBarCTokHat CTokUnequal CTokEqual CTokHighEqCTokHigh CTokLessEqCTokLess CTokShiftR CTokShiftL CTokAmper CTokPercent CTokSlashCTokStar CTokMinusCTokPlusCTokDecCTokInc CTokTilde CTokExclamCTokDot CTokArrow CTokRBracket CTokLBracket CTokRParen CTokLParen posLenOfTok $fShowCToken $fPosCTokeninternalErrPrefixindent indentLines$fShowUserError$fErrorUserError$fShowUnsupportedFeature$fErrorUnsupportedFeature $fErrorCError $fShowCError$fErrorErrorInfo$fShowErrorInfo$fShowErrorLevelGHC.BaseStringLPPMonadIType setLastTokenhandleEofToken parsedLazilyunLPgetputmodifyPStatecurPoscurInput prevToken savedToken namesupplytyidentsscopes ParseResultPFailedPOkTMapCNameTyDeffailPgetLmodifyLputL withState withState' getNewNamesetPosgetPos addTypedef shadowSymbol isTypeIdentaddClassisClass isSpecial enterScopegetInputsetInput getLastToken getSavedTokengetCurrentPosition$fApplicativeLP $fPMonadLP $fMonadLP$fShowParseError AlexAccPredAlexAccAlexAccSkipPred AlexAccSkip AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA# AlexInput 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_67alex_action_68alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn alexAndPredalexPrevCharIsalexPrevCharMatchesalexPrevCharIsOneOfalexRightContextiUnbox$fFunctorAlexLastAccpreprocessedExt mkOutputFilegetOutputFileName mkTmpFilegccParseCPPArgsParseArgsStategccPath buildCppArgs$fPreprocessorGCC HappyAddrHappyA#HappyStk Happy_IntList HappyConsCDeclrRLocatedLHappyAny HappyAbsSynhappyIn8 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 happyIn138 happyOut138 happyIn139 happyOut139 happyIn140 happyOut140 happyIn141 happyOut141 happyIn142 happyOut142 happyIn143 happyOut143 happyIn144 happyOut144 happyIn145 happyOut145 happyIn146 happyOut146 happyIn147 happyOut147 happyIn148 happyOut148 happyIn149 happyOut149 happyIn150 happyOut150 happyIn151 happyOut151 happyIn152 happyOut152 happyIn153 happyOut153 happyIn154 happyOut154 happyIn155 happyOut155 happyIn156 happyOut156 happyIn157 happyOut157 happyIn158 happyOut158 happyIn159 happyOut159 happyIn160 happyOut160 happyIn161 happyOut161 happyIn162 happyOut162 happyIn163 happyOut163 happyIn164 happyOut164 happyIn165 happyOut165 happyIn166 happyOut166 happyIn167 happyOut167 happyIn168 happyOut168 happyIn169 happyOut169 happyIn170 happyOut170 happyIn171 happyOut171 happyIn172 happyOut172 happyIn173 happyOut173 happyIn174 happyOut174 happyIn175 happyOut175 happyIn176 happyOut176 happyIn177 happyOut177 happyIn178 happyOut178 happyIn179 happyOut179 happyIn180 happyOut180 happyIn181 happyOut181 happyIn182 happyOut182 happyIn183 happyOut183 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms 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_488happyReduce_489happyReduction_489happyReduce_490happyReduction_490happyReduce_491happyReduction_491happyReduce_492happyReduction_492happyReduce_493happyReduction_493happyReduce_494happyReduction_494happyReduce_495happyReduction_495happyReduce_496happyReduction_496happyReduce_497happyReduction_497happyReduce_498happyReduction_498happyReduce_499happyReduction_499happyReduce_500happyReduction_500happyReduce_501happyReduction_501happyReduce_502happyReduction_502happyReduce_503happyReduction_503happyReduce_504happyReduction_504happyReduce_505happyReduction_505happyReduce_506happyReduction_506happyReduce_507happyReduction_507happyReduce_508happyReduction_508happyReduce_509happyReduction_509happyReduce_510happyReduction_510happyReduce_511happyReduction_511happyReduce_512happyReduction_512happyReduce_513happyReduction_513happyReduce_514happyReduction_514happyReduce_515happyReduction_515happyReduce_516happyReduction_516happyReduce_517happyReduction_517happyReduce_518happyReduction_518happyReduce_519happyReduction_519happyReduce_520happyReduction_520happyReduce_521happyReduction_521happyReduce_522happyReduction_522happyReduce_523happyReduction_523happyReduce_524happyReduction_524happyReduce_525happyReduction_525happyReduce_526happyReduction_526happyReduce_527happyReduction_527happyReduce_528happyReduction_528happyReduce_529happyReduction_529happyReduce_530happyReduction_530happyReduce_531happyReduction_531happyReduce_532happyReduction_532happyReduce_533happyReduction_533happyReduce_534happyReduction_534happyReduce_535happyReduction_535happyReduce_536happyReduction_536happyReduce_537happyReduction_537happyReduce_538happyReduction_538happyReduce_539happyReduction_539happyReduce_540happyReduction_540happyReduce_541happyReduction_541happyReduce_542happyReduction_542happyReduce_543happyReduction_543happyReduce_544happyReduction_544happyReduce_545happyReduction_545happyReduce_546happyReduction_546happyReduce_547happyReduction_547happyReduce_548happyReduction_548happyReduce_549happyReduction_549happyReduce_550happyReduction_550happyReduce_551happyReduction_551happyReduce_552happyReduction_552happyReduce_553happyReduction_553happyReduce_554happyReduction_554happyReduce_555happyReduction_555happyReduce_556happyReduction_556happyReduce_557happyReduction_557happyReduce_558happyReduction_558happyReduce_559happyReduction_559happyReduce_560happyReduction_560happyReduce_561happyReduction_561happyReduce_562happyReduction_562happyReduce_563happyReduction_563happyReduce_564happyReduction_564happyReduce_565happyReduction_565happyReduce_566happyReduction_566happyReduce_567happyReduction_567happyReduce_568happyReduction_568happyReduce_569happyReduction_569happyReduce_570happyReduction_570happyReduce_571happyReduction_571happyReduce_572happyReduction_572happyReduce_573happyReduction_573happyReduce_574happyReduction_574happyReduce_575happyReduction_575happyReduce_576happyReduction_576happyReduce_577happyReduction_577happyReduce_578happyReduction_578happyReduce_579happyReduction_579happyReduce_580happyReduction_580happyReduce_581happyReduction_581happyReduce_582happyReduction_582happyReduce_583happyReduction_583happyReduce_584happyReduction_584happyReduce_585happyReduction_585happyReduce_586happyReduction_586happyReduce_587happyReduction_587happyReduce_588happyReduction_588happyReduce_589happyReduction_589happyReduce_590happyReduction_590happyReduce_591happyReduction_591happyReduce_592happyReduction_592happyReduce_593happyReduction_593happyReduce_594happyReduction_594happyReduce_595happyReduction_595happyReduce_596happyReduction_596happyReduce_597happyReduction_597happyReduce_598happyReduction_598happyReduce_599happyReduction_599happyReduce_600happyReduction_600happyReduce_601happyReduction_601happyReduce_602happyReduction_602happyReduce_603happyReduction_603happyReduce_604happyReduction_604happyReduce_605happyReduction_605happyReduce_606happyReduction_606happyReduce_607happyReduction_607happyReduce_608happyReduction_608happyReduce_609happyReduction_609happyReduce_610happyReduction_610happyReduce_611happyReduction_611happyReduce_612happyReduction_612happyReduce_613happyReduction_613happyReduce_614happyReduction_614happyReduce_615happyReduction_615happyReduce_616happyReduction_616happyReduce_617happyReduction_617happyReduce_618happyReduction_618happyReduce_619happyReduction_619happyReduce_620happyReduction_620happyReduce_621happyReduction_621happyReduce_622happyReduction_622happyReduce_623happyReduction_623happyReduce_624happyReduction_624happyReduce_625happyReduction_625happyReduce_626happyReduction_626happyReduce_627happyReduction_627happyReduce_628happyReduction_628happyReduce_629happyReduction_629happyReduce_630happyReduction_630happyReduce_631happyReduction_631 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'translation_unitlazy_translation_unitexternal_declaration statement expressionhappySeq reverseListunL withNodeInfo withLength reverseDeclr withAttributewithAttributePFappendObjAttrsappendObjAttrsR setAsmNamewithAsmNameAttrsappendDeclrAttrsptrDeclrblkDeclrfunDeclrarrDeclr liftTypeQuals liftCAttrsaddTrailingAttrs emptyDeclr mkVarDeclr doDeclIdentdoFuncParamDeclIdentgetCDeclrIdent happyError translUnitLP happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq $fPosReversed$fPos[] $fPosCDeclrR$fCNodeCDeclrR $fPosLocated prettyParamsmaybePifPmlistPidentP attrlistP parenPreciipVarspProtoangles prettyDeclr prettyAsmNamebinPrec$fPrettyCStringLiteral$fPrettyCConstant$fPrettyCUnaryOp$fPrettyCBinaryOp$fPrettyCAssignOp$fPrettyCBuiltinThing$fPrettyObjCKeywordArg$fPrettyObjCMessageSelector$fPrettyObjCMessageExpression$fPrettyObjCSelectorKeyName$fPrettyObjCSelectorName$fPrettyObjCConstant$fPrettyCExpression$fPrettyCAttribute$fPrettyCPartDesignator$fPrettyCInitializer$fPrettyCArraySize$fPrettyCDeclarator$fPrettyCEnumeration$fPrettyCStructTag$fPrettyCStructureUnion$fPrettyObjCProtoQualifier$fPrettyCTypeQualifier$fPrettyCTypeSpecifier$fPrettyCStorageSpecifier$fPrettyCDeclarationSpecifier$fPrettyCDeclaration$fPrettyCCompoundBlockItem$fPrettyCAssemblyOperand$fPrettyCAssemblyStatement$fPrettyCStatement$fPrettyObjCProtocolName$fPrettyObjCClassName$fPrettyObjCVisType$fPrettyObjCVisibilitySpec!$fPrettyObjCInstanceVariableBlock$fPrettyObjCPropertyModifier$fPrettyObjCPropertyDeclaration$fPrettyObjCKeywordDeclarator$fPrettyObjCSelector$fPrettyObjCMethodSelector$fPrettyObjCMethodType$fPrettyObjCMethodDefinition$fPrettyObjCMethodDeclaration $fPrettyObjCInterfaceDeclaration$fPrettyObjCProtocolDeclBlock$fPrettyObjCProtocolDec$$fPrettyObjCImplementationDefinition$fPrettyObjCImplementation$fPrettyObjCInterface"$fPrettyObjCCategoryImplementation$fPrettyObjCCategoryDec$fPrettyObjCClassDeclarator$fPrettyObjCClassListDef$fPrettyCFunctionDef$fPrettyCExternalDeclaration$fPrettyCTranslationUnit declOfDef $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$fMonoidProtoQuals$fMonoidTypeQuals$fDeclarationEnumerator$fHasSUERefEnumType$fShowCompTyKind$fHasCompTyKindCompType$fHasSUERefCompType$fHasSUERefEnumTypeRef$fHasCompTyKindCompTypeRef$fHasSUERefCompTypeRef$fShowFloatType $fShowIntType$fDeclarationVarDecl$fDeclarationMemberDecl$fDeclarationParamDecl$fDeclarationFunDef$fDeclarationObjDef$fDeclarationDecl$fDeclarationIdentDecl$fDeclarationEither$fHasSUERefTagDeftypeMismatchInfo redefErrLabelredefErrorInforedefErrReason prevDeclMsg$fErrorRedefError$fShowRedefError$fErrorTypeMismatch$fShowTypeMismatch$fShowBadSpecifierError$fShowInvalidASTErrorconstPtr testFlags exportStorageexportTypeQualsexportTypeQualsAttrsexportArraySize exportIntTypeexportFloatTypeexportComplexType exportSUERefexportMemberDecl exportVarDeclexportParamDeclexportDeclAttrs threadLocal exportAttrsfromDirectTypenitagKind TagEntryKindEnumKindCompKind leaveScope_enterLocalScopeleaveLocalScopecompatIdentEntrycompatTagEntrydefRedeclStatusdefRedeclStatusLocal$fShowTagEntryKind$fCNodeTagFwdDecl$fHasSUERefTagFwdDecl joinComma terminateSemiterminateSemi_ $fPrettyAttr $fPretty[]$fPrettyVarName$fPrettyLinkage$fPrettyStorage$fPrettyEnumerator$fPrettyEnumType$fPrettyMemberDecl$fPrettyCompType$fPrettyTypeQuals $fPrettyType$fPrettyDeclAttrs$fPrettyParamDecl$fPrettyVarDecl$fPrettyFunDef$fPrettyObjDef$fPrettyTypeDef $fPrettyDecl$fPrettyIdentDecl$fPrettyTagDef$fPrettySUERef $fPrettyIdent$fPrettyEnumTypeRef$fPrettyCompTypeRef$fPrettyCompTyKind$fPrettyTagFwdDecl$fPrettyEither$fPrettyGlobalDecls$fPrettyDefTableaddRef symbolTablererrors nameGeneratordoHandleExtDecloptionsunTrav checkRedefredefErrcheckIdentTyRedef checkVarRedef enterDecl isDeclarationcheckCompatibleTypes updDefTable mismatchErrgets generateName$fMonadTravTrav$fMonadCErrorTrav$fMonadSymtabTrav$fMonadNameTrav $fMonadTrav tParamDeclcomputeParamStorage tMemberDeclsmergeTypeAttributes tEnumTypeDecl tEnumType splitCDecl typeDefRef tCompTypeDecltTag tCompTypeemptyNumTypeSpecanalyseTypeDefcomputeFunDefStorage extFunProto extVarDecl localVarDeclenclosingFunctionType tBlockItemtExpr' builtinType getParamsinLoopinSwitch checkGuard tInitList checkInitsadvanceDesigListmatchDesignatortInitcomplexBaseType hasTypeDef