Expand description
Abstract syntax tree
Types in this module represent various pieces a C program can contain after preprocessing phase. They mostly follow C11 grammar naming conventions.
References to C11 standard given in parenthesis refer to the ISO/IEC 9899:201x draft published on April 12, 2011.
A number of GNU extensions to the standard C are included here. Types, struct fields or enum variants specific to GNU are marked as “GNU extension” with a link to the relevant section of gcc documentation. Supported extensions are:
- attributes in various positions
- inline assembly statements and asm labels
- extensions to the initializer list syntax
- statement expressions
typeof
type specifiers
Structs§
- AlignOf
- Alignment of a type
- Array
Declarator - Array part of a declarator
- Attribute
- Attributes
- Availability
Attribute - Platform availability attribute
- Availability
Version - Platfrom version inside availability attribute
- Binary
Operator Expression - Binary operators
- Call
Expression - Function call expression
- Case
Range - Case range expression
- Cast
Expression - Cast expression
- Compound
Literal - Compound literal
- Conditional
Expression - Conditional operator
- Declaration
- Variable, function or type declaration
- Declarator
- Single item in a declaration
- DoWhile
Statement - Do statement
- Enum
Type - Enumeration type specifier
- Enumerator
- Single constant inside a
enum
definition - Float
- Floating point number literal
- Float
Suffix - Floating point number suffix
- ForStatement
- For statement
- Function
Declarator - Function parameter part of a declarator
- Function
Definition - Function definition
- Generic
Association Type - Type match case in a generic selection expression
- Generic
Selection - Generic selection expression
- GnuAsm
Operand - Single input or output operand specifier for GNU extended asm statement
- GnuExtended
AsmStatement - Extended statement that has access to C variables
- Identifier
- Variable, function and other names that are not type names
- IfStatement
- If statement
- Init
Declarator - Defines a single name in a declaration
- Initializer
List Item - Initializes one field or array element in a initializer list
- Integer
- Integer number literal
- Integer
Suffix - Suffix of an integer literal
- Labeled
Statement - Labeled statement
- Member
Expression - Structure and union members
- Offset
Designator - Offset designator in a
offsetof
macro expansion - Offset
OfExpression - Member offset expression
- Parameter
Declaration - Complete parameter declaration in a function prototype or declaration
- Range
Designator - Range array designator in an initializer
- Size
OfTy - SizeOf a type
- Size
OfVal - Size of an unary expression
- Static
Assert - Static assertion
- Struct
Declarator - Field declarator for a struct or a union
- Struct
Field - Struct field declaration
- Struct
Type - Structure or union type specifier
- Switch
Statement - Switch statement
- TS18661
Float Type - Floating point type with guaranteed width and format
- Translation
Unit - Entire C source file after preprocessing
- Type
Name - References to types outside of declarations
- Unary
Operator Expression - Unary operator expression
- VaArg
Expression - Variable argument list access
- While
Statement - While statement
Enums§
- Alignment
Specifier - Alignment specifier
- Array
Size - Size of an array in a declaration
- AsmStatement
- Inline assembler
- Availability
Clause - Platfrom availability attribute clause
- Binary
Operator - All operators with two operands
- Block
Item - Element of a compound statement
- Constant
- Constant literals
- Declaration
Specifier - Common part of a declaration
- Declarator
Kind - Name of a declarator
- Derived
Declarator - Modifies declarator type
- Designator
- Single element of an designation in an initializer
- Ellipsis
- Whether function signature ends with a
...
- Expression
- Expressions
- Extension
- Extended vendor-specific syntax that does not fit elsewhere
- External
Declaration - Top-level elements of a C program
- Float
Base - Floating point number base
- Float
Format - Floating point literal format specified by the suffix
- ForInitializer
- First element of a
for
statement - Function
Specifier - Function specifier
- Generic
Association - Single element of a generic selection expression
- Initializer
- Value that is assigned immediately in a declaration
- Integer
Base - Base of the integer literal
- Integer
Size - Size part of a integer literal suffix
- Label
- Statement labels for
goto
andswitch
- Member
Operator - Struct or union member access
- Offset
Member - Single element of an offset designator
- Pointer
Qualifier - List of qualifiers that can follow a
*
in a declaration - Specifier
Qualifier - Type and qualifiers for a struct declaration
- Statement
- Element of a function body
- Storage
Class Specifier - Storage class
- Struct
Declaration - Single declaration in a struct or a union
- Struct
Kind - The only difference between a
struct
and aunion
- TS18661
Float Format - Floating point formats
- TypeOf
- Type of an expression or type
- Type
Qualifier - Type qualifier
- Type
Specifier - Type specifier
- Unary
Operator - All operators with one operand
Type Aliases§
- String
Literal - String literal