Types of declarator to parse
Declaration context
C11 6.7.3 Type qualifiers
C11 6.7.1 Storage-class specifiers
Go through the #define's in the defines buffer and see what we can convert to Dsymbols, which are then appended to symbols[]
C11 6.5.16 assignment-expression: conditional-expression unary-expression assignment-operator assignment-expression
C11 6.7 declaration: declaration-specifiers init-declarator-list (opt) ; static_assert-declaration
C11 6.5.17 expression: assignment-expression expression , assignment-expression
C11 Function Definitions function-definition declaration-specifiers declarator declaration-list (opt) compound-statement
C11 Initialization initializer: assignment-expression { initializer-list } { initializer-list , }
C11 6.7.6.3 ( parameter-type-list ) ( identifier-list (opt) )
C11 6.5.1 primary-expression: identifier constant string-literal ( expression ) generic-selection __builtin_va_arg(assign_expression, type)
C11 6.7.2.1 specifier-qualifier-list: type-specifier specifier-qualifier-list (opt) type-qualifier specifier-qualifier-list (opt)
C11 6.8 statement: labeled-statement compound-statement expression-statement selection-statement iteration-statement jump-statement
C11 6.7.2.1 Parse a struct declaration member. struct-declaration: specifier-qualifier-list struct-declarator-list (opt) ; static_assert-declaration
C11 6.7.7
C11 6.7.3 type-qualifier: const restrict volatile _Atomic __stdcall
Add id to typedefTab[], but only if it will mask an existing typedef.
Add id to typedefTab[]
See if declaration-list is present.
Determines if type t is a function type.
Determine if id is a symbol for a Typedef.
Lookup id in typedefTab[].
After encountering an error, scan forward until a right brace or ; is found or the end of the file.
Parse translation unit. C11 6.9 translation-unit: external-declaration translation-unit external-declaration
Directive Parser **************************
Add attributes from Specifier to function
Convert from C specifiers to D storage class
Add attributes from Specifier to variable
Aggregate for all the various specifiers
add declaration of __func__ to function symbol table
seen use of C compiler builtins, so import __builtins;
Array of AST.TypeIdentifier, typedef's indexed by Identifier