home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Professional
/
OS2PRO194.ISO
/
os2
/
editor
/
blkbeard
/
c.lng
< prev
next >
Wrap
Text File
|
1994-01-30
|
4KB
|
212 lines
?≡«»≤≥
«c-language-items»
?«c-language-items»
«external-definition»
«function-definition»
«statement»
≡«program» «external-definition»
≤«external-definition»≥...
?«external-definition»
«function-definition»
«declaration»
«preprocessor-statement»
≡«function-definition» ≤«decl-specifiers»≥ «declarator»
≤«declaration-list»≥ {
≤«declaration-list»≥
≤«statement-list»≥
}
≡ STATEMENTS
≡«statement-list» «statement»
≤«statement-list»≥
?«statement»
identifier : «statement»
case «constant-expression»: «statement»
default: «statement»
«compound-statement»
«expression»;
«if-statement»
switch ( «expression» ) «statement»
while («expression») «statement»
«do-statement»
for («expression» ; «expression» ; «expression») «statement»
goto identifier;
continue;
break;
return ≤«expression»≥;
«preprocess-statement»
;
≡«compound-statement» {
≤«declaration-list»≥
≤«statement-list»≥
}
≡«if-statement» if («expression») «statement»
≤else if «statement»≥...
≤else «statement»≥
≡«do-statement» do «statement»
while ( «expression» );
?«preprocessor-statement»
#define identifier token-string
#define identifier (identifier≤, identifier≥...) token-string
#undef identifier
#include "filename"
#include <filename>
«#if-statement»
«#ifdef-statement»
«#ifndef-statement»
#else
#endif
#line constant identier
≡«#if-statement» #if «constant-expression»
[#else]
#endif
≡«#ifdef-statement» #ifdef identifier
[#else]
#endif
≡«#ifndef-statement» #ifndef indentifier
[#else]
#endif
≡ DECLARATIONS
≡«declaration» «decl-specifiers» «init-declarator»≤, «init-declarator»≥...;
?«decl-specifiers»
«type-specifier» ≤«decl-specifiers»≥
«sc-specifier» ≤«decl-specifiers»≥
≡«init-declarator» «declarator» ≤= «initializer»≥
?«sc-specifier»
auto
static
extern
register
typedef
?«type-specifier»
void
char
short
int
long
float
double
unsigned
«struct-or-union-specifier»
«enum-specifier»
«typedef-name»
?«struct-or-union-specifier»
struct identifier
struct [identifier] «{struct-decl-list}»
union identifier
union [identifier] «{struct-decl-list}»
≡«{struct-decl-list}» {
«struct-decl-list»
}
≡«struct-decl-list»
struct-declaration
≤«struct-decl-list»≥
≡«struct-declaration» «type-specifier-list» «struct-declarator-list»;
≡«struct-declarator-list» «struct-declarator»≤, «struct-declarator»≥...
≡«type-specifier-list» «type-specifier» ≤«type-specifier»≥...
?«struct-declarator»
«declarator»
≤«declarator»≥ : «constant-expression»
?«enum-specifier»
enum ≤identifier≥ { «enumeration_list» }
enum ≤identifier≥
≡«enumeration-list» «enumerator» ≤«, «enumerator»≥
≡«enumerator» «enumeration-constant» ≤«constant-expression»≥
?«declarator»
identifier
(«declarator»)
«declarator»[≤«constant-expression»≥]
«declarator»(«parameter-type-list»)
«declarator»(≤«identifier-list»≥)
*≤«type-specifier-list»≥«declarator»
?«parameter-type-list»
«parameter_list»
«parameter_list»,...
≡«parameter-list» «parameter-declaration»≤, «parameter-declaration»≥...
?«parameter-declaration»
«decl-specifiers» «declarator»
«decl-specifiers» ≤«abstract-declarator»≥
≡«type-name» «type-specifier-list» ≤«abstract-declarator»≥
?«abstract-declaractor»
* «abstract-declarator»
( «abstract-declarator» )
«abstract-declarator» [ ≤«constant-expression»≥ ]
«abstract-declarator» (≤«parameter-type-list»≥)
≡«typedef-name» identifier
≡«declaration-list» «declaration»
≤«declaration»≥...
?«initializer»
= «expression»
{ «initializer-list» }
?«initializer-list»
«initializer» ≤, «initializer»≥...
≡«comment» /* text */
≡ EXPRESSIONS
≡«constant-expression» «expression»
?«expression»
«primary»
* «expression»
& «expression»
- «expression»
! «expression
~ «expression»
++«lvalue»
--«lvalue»
«lvalue»++
«lvalue»--
sizeof «expression»
(«type-name») «expression»
«expression» binop «expression»
«expression» ? «expression» : «expression»
«lvalue» asgnop «expression»
«expression» , «expression»
?«primary»
identifier
constant
string
(«expression»)
«primary» ( ≤«expression»≥... )
«primary»[expression]
«lvalue».identifier
«primary»->identifier
?«lvalue»
identifier
«primary» [«expression»]
«lvalue».identifier
«primary»->identifier
* «expression»
( «lvalue» )
?«binop»
*
/
%
+
-
<<
>>
<
>
<=
>=
==
!=
&
^
|
&&
||
?:
?«asgnop»
=
+=
-=
*=
/=
%=
>>=
<<=
&=
^=
|=