Tru64 UNIX
Compaq C Language Reference Manual


Previous Contents Index

hexadecimal-escape-sequence:(§3.1.3.4)

\x hexadecimal-digit
hexadecimal-escape-sequence hexadecimal-digit

A.1.1.5 String Literals

string-literal: (§3.1.4)

"s-char-sequenceopt"
L"s-char-sequenceopt"

s-char-sequence: (§3.1.4)

s-char
s-char-sequence s-char

s-char: (§3.1.4)

any member of the source character set except
the double-quote ("), backslash (\), or new-line character
escape-sequence

A.1.1.6 Operators

operator: (§3.1.5) one of


    [  ]  (  )  .  -> 
    ++  --  &  *  +  -  ~  !  sizeof 
    /  %  <<  >>  <  >  <=  >=  ==  !=  ^  |  &&  || 
    ?  : 
    =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |= 
    ,  #  ## 

A.1.1.7 Punctuators

punctuator: (§3.1.6) one of


    [  ]  (  )  {  }  *  ,  :  =  ;  ...  # 

A.1.1.8 Header Names

header-name: (§3.1.7)

<h-char-sequence>
"q-char-sequence"

h-char-sequence: (§3.1.7)

h-char
h-char-sequence h-char

h-char: (§3.1.7)

any member of the source character set except
the new-line character and >

q-char-sequence: (§3.1.7)

q-char
q-char-sequence q-char

q-char: (§3.1.7)

any member of the source character set except
the new-line character and "

A.1.1.9 Preprocessing Numbers

pp-number: (§3.1.8)

digit
. digit
pp-number digit
pp-number nondigit
pp-number e sign
pp-number E sign
pp-number .

A.1.2 Phrase Structure Grammar

A.1.2.1 Expressions

primary-expression: (§3.3.1)

identifier
constant
string-literal
( expression )

postfix-expression: (§3.3.2)

primary-expression
postfix-expression [ expression ]
postfix-expression ( argument-expression-listopt )
postfix-expression . identifier
postfix-expression -> identifier
postfix-expression ++
postfix-expression - -

argument-expression-list: (§3.3.2)

assignment-expression
argument-expression-list , assignment-expression

unary-expression: (§3.3.3)

postfix-expression
++ unary-expression
- - unary-expression
unary-operator cast-expression
sizeof unary-expression
sizeof ( type-name )

unary-operator: (§3.3.3) one of


    &  *  +  -  ~  ! 

cast-expression: (§3.3.4)

unary-expression
( type-name ) cast-expression

multiplicative-expression: (§3.3.5)

cast-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
multiplicative-expression % cast-expression

additive-expression: (§3.3.6)

multiplicative-expression
additive-expression + multiplicative-expression
additive-expression - multiplicative-expression

shift-expression: (§3.3.7)

additive-expression
shift-expression << additive-expression
shift-expression >> additive-expression

relational-expression: (§3.3.8)

shift-expression
relational-expression < shift-expression
relational-expression > shift-expression
relational-expression <= shift-expression
relational-expression >= shift-expression

equality-expression: (§3.3.9)

relational-expression
equality-expression == relational-expression
equality-expression != relational-expression

AND-expression: (§3.3.10)

equality-expression
AND-expression & equality-expression

exclusive-OR-expression: (§3.3.11)

AND-expression
exclusive-OR-expression ^ AND-expression

inclusive-OR-expression: (§3.3.12)

exclusive-OR-expression
inclusive-OR-expression | exclusive-OR-expression

logical-AND-expression: (§3.3.13)

inclusive-OR-expression
logical-AND-expression && inclusive-OR-expression

logical-OR-expression: (§3.3.14)

logical-AND-expression
logical-OR-expression || logical-AND-expression

conditional-expression: (§3.3.15)

logical-OR-expression
logical-OR-expression ? expression : conditional-expression

assignment-expression: (§3.3.16)

conditional-expression
unary-expression assignment-operator assignment-expression

assignment-operator: (§3.3.16) one of


    =  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |= 

expression: (§3.3.17)

assignment-expression
expression , assignment-expression

constant-expression: (§3.4)

conditional-expression

A.1.2.2 Declarations

declaration: (§3.5)

declaration-specifiers init-declarator-listopt ;

declaration-specifiers: (§3.5)

storage-class-specifier declaration-specifiersopt
type-specifier declaration-specifiersopt
type-qualifier declaration-specifiersopt

init-declarator-list: (§3.5)

init-declarator
init-declarator-list , init-declarator

init-declarator: (§3.5)

declarator
declarator = initializer

storage-class-specifier: (§3.5.1)

typedef
extern
static
auto
register

type-specifier: (§3.5.2)

void
char
short
int
long
float
double
signed
unsigned


struct-or-union-specifier
enum-specifier
typedef-name

struct-or-union-specifier: (§3.5.2.1)

struct-or-union identifieropt { struct-declaration-list }
struct-or-union identifier

struct-or-union: (§3.5.2.1)

struct
union

struct-declaration-list: (§3.5.2.1)

struct-declaration
struct-declaration-list struct-declaration

struct-declaration: (§3.5.2.1)

specifier-qualifier-list struct-declarator-list ;

specifier-qualifier-list: (§3.5.2.1)

type-specifier specifier-qualifier-listopt
type-qualifier specifier-qualifier-listopt

struct-declarator-list: (§3.5.2.1)

struct-declarator
struct-declarator-list , struct-declarator

struct-declarator: (§3.5.2.1)

declarator
declaratoropt : constant-expression

enum-specifier: (§3.5.2.2)

enum identifieropt { enumerator-list }
enum identifier

enumerator-list: (§3.5.2.2)

enumerator
enumerator-list , enumerator

enumerator: (§3.5.2.2)

enumeration-constant
enumeration-constant = constant-expression

type-qualifier: (§3.5.3)

const
volatile

declarator: (§3.5.4)

pointeropt direct-declarator

direct-declarator: (§3.5.4)

identifier
( declarator )
direct-declarator [ constant-expressionopt ]
direct-declarator ( parameter-type-list )
direct-declarator ( identifier-listopt )

pointer: (§3.5.4)

* type-qualifier-listopt
* type-qualifier-listopt pointer

type-qualifier-list: (§3.5.4)

type-qualifier
type-qualifier-list type-qualifier

parameter-type-list: (§3.5.4)

parameter-list
parameter-list , ...

parameter-list: (§3.5.4)

parameter-declaration
parameter-list , parameter-declaration

parameter-declaration: (§3.5.4)

declaration-specifiers declarator
declaration-specifiers abstract-declaratoropt

identifier-list: (§3.5.4)

identifier
identifier-list , identifier

type-name: (§3.5.5)

specifier-qualifier-list abstract-declaratoropt

abstract-declarator: (§3.5.5)

pointer
pointeropt direct-abstract-declarator

direct-abstract-declarator: (§3.5.5)

( abstract-declarator )
direct-abstract-declaratoropt [ constant-expressionopt ]
direct-abstract-declaratoropt ( parameter-type-listopt )

typedef-name: (§3.5.6)

identifier

initializer: (§3.5.7)

assignment-expression
{ initializer-list }
{ initializer-list , }

initializer-list: (§3.5.7)

initializer
initializer-list , initializer

A.1.2.3 Statements

statement: (§3.6)

labeled-statement
compound-statement
expression-statement
selection-statement
iteration-statement
jump-statement

labeled-statement: (§3.6.1)

identifier : statement
case constant-expression : statement
default : statement

compound-statement: (§3.6.2)

{ declaration-listopt statement-listopt }

declaration-list: (§3.6.2)

declaration
declaration-list declaration

statement-list: (§3.6.2)

statement
statement-list statement

expression-statement: (§3.6.3)

expressionopt ;

selection-statement: (§3.6.4)

if ( expression ) statement
if ( expression ) statement else statement
switch ( expression) statement

iteration-statement: (§3.6.5)

while ( expression ) statement
do statement while ( expression ) ;
for ( expressionopt ; expressionopt ; expressionopt ) statement

jump-statement: (§3.6.6)

goto identifier ;
continue ;
break ;
return expressionopt ;

A.1.2.4 External Definitions

translation-unit: (§3.7)

external-declaration
translation-unit external-declaration

external-declaration: (§3.7)

function-definition
declaration

function-definition: (§3.7.1)

declaration-specifiersopt declarator declaration-listopt compound-statement

A.1.3 Preprocessing Directives

preprocessing-file: (§3.8)

groupopt

group: (§3.8)

group-part
group group-part

group-part: (§3.8)

pp-tokensopt new-line
if-section
control-line

if-section: (§3.8.1)

if-group elif-groupsopt else-groupopt endif-line

if-group: (§3.8.1)

#if constant-expression new-line groupopt
#ifdef identifier new-line groupopt
#ifndef identifier new-line groupopt

elif-groups: (§3.8.1)

elif-group
elif-groups elif-group

elif-group: (§3.8.1)

#elif constant-expression new-line groupopt

else-group: (§3.8.1)

#else new-line groupopt

endif-line: (§3.8.1)

#endif new-line

control-line:

#include pp-tokens new-line (§3.8.2)
#define identifier replacement-list new-line (§3.8.3)
#define identifier (identifier-list)opt replacement-list new-line (§3.8.3)
#undef identifier new-line (§3.8.3)
#line pp-tokens new-line (§3.8.4)
#error pp-tokensopt new-line (§3.8.5)
#pragma pp-tokensopt new-line (§3.8.6)
# new-line (§3.8.7)


Previous Next Contents Index