LANGUAGE SYNTAX
ArgumentDeclaration:
ObjectDeclaration
ArgumentList:
NameList
Directive:
#include "Filename"
#include <Filename>
#include Filename
#define Name CharacterString?...
#ifdef Name
#ifndef Name
#else
#endif
#asm
#endasm
Constant:
Integer
'Character ' (escape sequence allowed)
'Character Character' (escape sequences allowed)
ConstantExpression:
Constant
Operator ConstantExpression
ConstantExpression Operator ConstantExpression
( ConstantExpression )
Declarator:
Object Initializer? (global initializers only)
EscapeSequence:
\n (newline)
\t (tab)
\b (backspace)
\f (formfeed)
\ OctalInteger
\ OtherCharacter
Expression:
Primary
Operator Expression
Expression Operator
Expression Operator Expression
FunctionDeclaration:
void?
Name (ArgumentList? )ArgumentDeclaration?... CompoundStatement
GlobalDeclaration:
ObjectDeclaration
FunctionDeclaration
Initializer:
= ConstantExpression
= {ConstantExpressionList }
= StringConstant
Object:
Name
*Name
Name [ ConstantExpression? ]
Name ()
(*Name )() (arguments and locals only)
ObjectDeclaration:
Type DeclaratorList ;
extern Type? DeclaratorList ; (global only)
Primary:
Name
Constant
StringConstant
Name [ Expression ]
Primary ( ExpressionList? )
( Expression )
Program:
Directive...
GlobalDeclaration...
Statement:
;
ExpressionList ;
return ExpressionList? ;
Name :
goto Name ;
if ( ExpressionList ) Statement
if ( ExpressionList )Statement else Statement
switch ( ExpressionList ) CompoundStatement
case ConstantExpression :
default :
break ;
while ( ExpressionList ) Statement
for ( ExpressionList? ; ExpressionList? ; ExpressionList? ) Statement
do Statement while ( ExpressionList )
;
continue ;
{ ObjectDeclaration?... Statement?... }
StringConstant:
" CharacterString " (escape sequences allowed)
Type:
char
int
unsigned
unsigned char
unsigned int