Module ast

Source
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
ArrayDeclarator
Array part of a declarator
Attribute
Attributes
AvailabilityAttribute
Platform availability attribute
AvailabilityVersion
Platfrom version inside availability attribute
BinaryOperatorExpression
Binary operators
CallExpression
Function call expression
CaseRange
Case range expression
CastExpression
Cast expression
CompoundLiteral
Compound literal
ConditionalExpression
Conditional operator
Declaration
Variable, function or type declaration
Declarator
Single item in a declaration
DoWhileStatement
Do statement
EnumType
Enumeration type specifier
Enumerator
Single constant inside a enum definition
Float
Floating point number literal
FloatSuffix
Floating point number suffix
ForStatement
For statement
FunctionDeclarator
Function parameter part of a declarator
FunctionDefinition
Function definition
GenericAssociationType
Type match case in a generic selection expression
GenericSelection
Generic selection expression
GnuAsmOperand
Single input or output operand specifier for GNU extended asm statement
GnuExtendedAsmStatement
Extended statement that has access to C variables
Identifier
Variable, function and other names that are not type names
IfStatement
If statement
InitDeclarator
Defines a single name in a declaration
InitializerListItem
Initializes one field or array element in a initializer list
Integer
Integer number literal
IntegerSuffix
Suffix of an integer literal
LabeledStatement
Labeled statement
MemberExpression
Structure and union members
OffsetDesignator
Offset designator in a offsetof macro expansion
OffsetOfExpression
Member offset expression
ParameterDeclaration
Complete parameter declaration in a function prototype or declaration
RangeDesignator
Range array designator in an initializer
SizeOfTy
SizeOf a type
SizeOfVal
Size of an unary expression
StaticAssert
Static assertion
StructDeclarator
Field declarator for a struct or a union
StructField
Struct field declaration
StructType
Structure or union type specifier
SwitchStatement
Switch statement
TS18661FloatType
Floating point type with guaranteed width and format
TranslationUnit
Entire C source file after preprocessing
TypeName
References to types outside of declarations
UnaryOperatorExpression
Unary operator expression
VaArgExpression
Variable argument list access
WhileStatement
While statement

Enums§

AlignmentSpecifier
Alignment specifier
ArraySize
Size of an array in a declaration
AsmStatement
Inline assembler
AvailabilityClause
Platfrom availability attribute clause
BinaryOperator
All operators with two operands
BlockItem
Element of a compound statement
Constant
Constant literals
DeclarationSpecifier
Common part of a declaration
DeclaratorKind
Name of a declarator
DerivedDeclarator
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
ExternalDeclaration
Top-level elements of a C program
FloatBase
Floating point number base
FloatFormat
Floating point literal format specified by the suffix
ForInitializer
First element of a for statement
FunctionSpecifier
Function specifier
GenericAssociation
Single element of a generic selection expression
Initializer
Value that is assigned immediately in a declaration
IntegerBase
Base of the integer literal
IntegerSize
Size part of a integer literal suffix
Label
Statement labels for goto and switch
MemberOperator
Struct or union member access
OffsetMember
Single element of an offset designator
PointerQualifier
List of qualifiers that can follow a * in a declaration
SpecifierQualifier
Type and qualifiers for a struct declaration
Statement
Element of a function body
StorageClassSpecifier
Storage class
StructDeclaration
Single declaration in a struct or a union
StructKind
The only difference between a struct and a union
TS18661FloatFormat
Floating point formats
TypeOf
Type of an expression or type
TypeQualifier
Type qualifier
TypeSpecifier
Type specifier
UnaryOperator
All operators with one operand

Type Aliases§

StringLiteral
String literal