[][src]Module lang_c::ast

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

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

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

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 Definitions

StringLiteral

String literal