TranslationUnit |
::= |
( ExternalDeclaration )+ |
ExternalDeclaration |
::= |
( FunctionDefinition | Declaration ) |
FunctionDefinition |
::= |
( DeclarationSpecifiers )? Declarator ( DeclarationList )? CompoundStatement |
Declaration |
::= |
DeclarationSpecifiers ( InitDeclaratorList )? ";" |
DeclarationList |
::= |
( Declaration )+ |
DeclarationSpecifiers |
::= |
StorageClassSpecifier ( DeclarationSpecifiers )? |
|
| |
TypeSpecifier ( DeclarationSpecifiers )? |
|
| |
TypeQualifier ( DeclarationSpecifiers )? |
StorageClassSpecifier |
::= |
( <AUTO> | <REGISTER> | <STATIC> | <EXTERN> | <TYPEDEF> ) |
TypeSpecifier |
::= |
( ( ( <VOID> | <CHAR> | <SHORT> | <INT> | <FLOAT> | <DOUBLE> | <UNSIGNED> | <SIGNED> | <LONG> ) | TypeSpecifierGL ) | StructOrUnionSpecifier | EnumSpecifier | TypedefName ) |
TypeSpecifierGL |
::= |
( <GLvoid> | <GLbyte> | <GLshort> | <GLint> | <GLsizei> | <GLfloat> | <GLclampf> | <GLdouble> | <GLclampd> | <GLubyte> | <GLboolean> | <GLushort> | <GLuint> | <GLenum> | <GLbitfield> | <GLUquadric> | <GLUnurbs> | <GLUtesselator> | <GLUtriangulator> ) |
TypeQualifier |
::= |
( <CONST> | <VOLATILE> ) |
StructOrUnionSpecifier |
::= |
StructOrUnion ( ( <IDENTIFIER> )? "{" StructDeclarationList "}" | <IDENTIFIER> ) |
StructOrUnion |
::= |
( <STRUCT> | <UNION> ) |
StructDeclarationList |
::= |
( StructDeclaration )+ |
InitDeclaratorList |
::= |
InitDeclarator ( "," InitDeclarator )* |
InitDeclarator |
::= |
Declarator ( "=" Initializer )? |
StructDeclaration |
::= |
SpecifierQualifierList StructDeclaratorList ";" |
SpecifierQualifierList |
::= |
TypeSpecifier ( SpecifierQualifierList )? |
|
| |
TypeQualifier ( SpecifierQualifierList )? |
StructDeclaratorList |
::= |
StructDeclarator ( "," StructDeclarator )* |
StructDeclarator |
::= |
( Declarator | ( Declarator )? ":" ConstantExpression ) |
EnumSpecifier |
::= |
<ENUM> ( ( <IDENTIFIER> )? "{" EnumeratorList "}" | <IDENTIFIER> ) |
EnumeratorList |
::= |
Enumerator ( "," Enumerator )* |
Enumerator |
::= |
<IDENTIFIER> ( "=" ConstantExpression )? |
Declarator |
::= |
( Pointer )? DirectDeclarator |
DirectDeclarator |
::= |
( <IDENTIFIER> | "(" Declarator ")" ) ( "[" ( ConstantExpression )? "]" | "(" ( ParameterTypeList )? ")" | "(" IdentifierList ")" )* |
Pointer |
::= |
"*" ( TypeQualifierList )? ( Pointer )? |
TypeQualifierList |
::= |
( TypeQualifier )+ |
ParameterTypeList |
::= |
ParameterList ( "," "..." )? |
ParameterList |
::= |
ParameterDeclaration ( "," ParameterDeclaration )* |
ParameterDeclaration |
::= |
DeclarationSpecifiers ( Declarator | ( AbstractDeclarator )? ) |
IdentifierList |
::= |
<IDENTIFIER> ( "," <IDENTIFIER> )* |
Initializer |
::= |
( AssignmentExpression | "{" InitializerList ( "," )? "}" ) |
InitializerList |
::= |
Initializer ( "," Initializer )* |
TypeName |
::= |
SpecifierQualifierList ( AbstractDeclarator )? |
AbstractDeclarator |
::= |
( Pointer | ( Pointer )? DirectAbstractDeclarator ) |
DirectAbstractDeclarator |
::= |
( "(" AbstractDeclarator ")" | "[" ( ConstantExpression )? "]" | "(" ( ParameterTypeList )? ")" ) ( "[" ( ConstantExpression )? "]" | "(" ( ParameterTypeList )? ")" )* |
TypedefName |
::= |
<IDENTIFIER> |
Statement |
::= |
( LabeledStatement | ExpressionStatement | CompoundStatement | SelectionStatement | IterationStatement | JumpStatement ) |
LabeledStatement |
::= |
( <IDENTIFIER> ":" Statement | <CASE> ConstantExpression ":" Statement | <DFLT> ":" Statement ) |
ExpressionStatement |
::= |
( Expression )? ";" |
CompoundStatement |
::= |
"{" ( DeclarationList )? ( StatementList )? "}" |
StatementList |
::= |
( Statement )+ |
SelectionStatement |
::= |
( <IF> "(" Expression ")" Statement ( <ELSE> Statement )? | <SWITCH> "(" Expression ")" Statement ) |
IterationStatement |
::= |
( <WHILE> "(" Expression ")" Statement | <DO> Statement <WHILE> "(" Expression ")" ";" | <FOR> "(" ( Expression )? ";" ( Expression )? ";" ( Expression )? ")" Statement ) |
JumpStatement |
::= |
( <GOTO> <IDENTIFIER> ";" | <CONTINUE> ";" | <BREAK> ";" | <RETURN> ( Expression )? ";" ) |
Expression |
::= |
AssignmentExpression ( "," AssignmentExpression )* |
AssignmentExpression |
::= |
UnaryExpression AssignmentOperator AssignmentExpression |
|
| |
ConditionalExpression |
AssignmentOperator |
::= |
( "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | "&=" | "^=" | "|=" ) |
ConditionalExpression |
::= |
LogicalORExpression ( "?" Expression ":" ConditionalExpression )? |
ConstantExpression |
::= |
ConditionalExpression |
LogicalORExpression |
::= |
LogicalANDExpression ( "||" LogicalORExpression )? |
LogicalANDExpression |
::= |
InclusiveORExpression ( "&&" LogicalANDExpression )? |
InclusiveORExpression |
::= |
ExclusiveORExpression ( "|" InclusiveORExpression )? |
ExclusiveORExpression |
::= |
ANDExpression ( "^" ExclusiveORExpression )? |
ANDExpression |
::= |
EqualityExpression ( "&" ANDExpression )? |
EqualityExpression |
::= |
RelationalExpression ( ( "==" | "!=" ) EqualityExpression )? |
RelationalExpression |
::= |
ShiftExpression ( ( "<" | ">" | "<=" | ">=" ) RelationalExpression )? |
ShiftExpression |
::= |
AdditiveExpression ( ( "<<" | ">>" ) ShiftExpression )? |
AdditiveExpression |
::= |
MultiplicativeExpression ( ( "+" | "-" ) AdditiveExpression )? |
MultiplicativeExpression |
::= |
CastExpression ( ( "*" | "/" | "%" ) MultiplicativeExpression )? |
CastExpression |
::= |
( "(" TypeName ")" CastExpression | UnaryExpression ) |
UnaryExpression |
::= |
( PostfixExpression | "++" UnaryExpression | "--" UnaryExpression | UnaryOperator CastExpression | <SIZEOF> ( UnaryExpression | "(" TypeName ")" ) ) |
UnaryOperator |
::= |
( "&" | "*" | "+" | "-" | "~" | "!" ) |
PostfixExpression |
::= |
PrimaryExpression ( "[" Expression "]" | "(" ( ArgumentExpressionList )? ")" | "." <IDENTIFIER> | "->" <IDENTIFIER> | "++" | "--" )* |
PrimaryExpression |
::= |
( <IDENTIFIER> | Constant | "(" Expression ")" ) |
ArgumentExpressionList |
::= |
AssignmentExpression ( "," AssignmentExpression )* |
Constant |
::= |
<INTEGER_LITERAL> |
|
| |
<FLOATING_POINT_LITERAL> |
|
| |
<CHARACTER_LITERAL> |
|
| |
<STRING_LITERAL> |