-
Notifications
You must be signed in to change notification settings - Fork 0
Syntax
hatsusato edited this page Dec 25, 2015
·
18 revisions
- identifier:
- IDENTIFIER
- constant:
- floating-constant
- integer-constant
- enumeration-constant
- character-constant
- floating-constant:
- FLOATING_CONSTANT
- integer-constant:
- INTEGER_CONSTANT
- enumeration-constant:
- identifier
- character-constant:
- CHARACTER_CONSTANT
- string-literal:
- STRING_LITERAL
- primary-expression:
- identifier
- constant
- string-literal
-
(expression)
- postfix-expression:
- primary-expression
- postfix-expression
[expression] - postfix-expression
(argument-expression-list[opt]) - postfix-expression
.identifier - postfix-expression
->identifier - postfix-expression
++ - postfix-expression
--
- argument-expression-list:
- assignment-expression
- argument-expression-list
,assignment-expression
- unary-expression:
- postfix-expression
-
++unary-expression -
--unary-expression - unary-operator cast-expression
-
sizeofunary-expression -
sizeof(type-name)
- unary-operator:
&*+-~!
- cast-expression:
- unary-expression
-
(type-name)cast-expression
- multiplicative-expression:
- cast-expression
- multiplicative-expression
*cast-expression - multiplicative-expression
/cast-expression - multiplicative-expression
%cast-expression
- additive-expression:
- multiplicative-expression
- additive-expression
+multiplicative-expression - additive-expression
-multiplicative-expression
- shift-expression:
- additive-expression
- shift-expression
<<additive-expression - shift-expression
>>additive-expression
- relational-expression:
- shift-expression
- relational-expression
<shift-expression - relational-expression
>shift-expression - relational-expression
<=shift-expression - relational-expression
>=shift-expression
- equality-expression:
- relational-expression
- equality-expression
==relational-expression - equality-expression
!=relational-expression
- AND-expression:
- equality-expression
- AND-expression
&equality-expression
- exclusive-OR-expression:
- AND-expression
- exclusive-OR-expression
^AND-expression
- inclusive-OR-expression:
- exclusive-OR-expression
- inclusive-OR-expression
|exclusive-OR-expression
- logical-AND-expression:
- inclusive-OR-expression
- logical-AND-expression
&&inclusive-OR-expression
- logical-OR-expression:
- logical-AND-expression
- logical-OR-expression
||logical-AND-expression
- conditional-expression:
- logical-OR-expression
- logical-OR-expression
?expression:conditional-expression
- assignment-expression:
- conditional-expression
- unary-expression assignment-operator assignment-expression
- assignment-operator:
=*=/=%=+=-=<<=>>=&=^=|=
- expression:
- assignment-expression
- expression
,assignment-expression
- constant-expression:
- conditional-expression
- declaration:
- declaration-specifiers init-declarator-list[opt]
;
- declaration-specifiers init-declarator-list[opt]
- declaration-specifiers:
- storage-class-specifier declaration-specifiers[opt]
- type-specifier declaration-specifiers[opt]
- type-qualifier declaration-specifiers[opt]
- init-declarator-list:
- init-declarator
- init-declarator-list
,init-declarator
- init-declarator:
- declarator
- declarator
=initializer
- storage-class-specifier:
typedefexternstaticautoregister
- type-specifier:
voidcharshortintlongfloatdoublesignedunsigned- struct-or-union-specifier
- enum-specifier
- typedef-name
- struct-or-union-specifier:
- struct-or-union identifier[opt]
{struct-declaration-list} - struct-or-union identifier
- struct-or-union identifier[opt]
- struct-or-union:
structunion
- struct-declaration-list:
- struct-declaration
- struct-declaration-list struct-declaration
- struct-declaration:
- specifier-qualifier-list struct-declarator-list
;
- specifier-qualifier-list struct-declarator-list
- specifier-qualifier-list:
- type-specifier specifier-qualifier-list[opt]
- type-qualifier specifier-qualifier-list[opt]
- struct-declarator-list:
- struct-declarator
- struct-declarator-list
,struct-declarator
- struct-declarator:
- declarator
- declarator[opt]
:constant-expression
- enum-specifier:
-
enumidentifier[opt]{enumerator-list} -
enumidentifier
-
- enumerator-list:
- enumerator
- enumerator-list
,enumerator
- enumerator:
- enumeration-constant
- enumeration-constant
=constant-expression
- type-qualifier:
constvolatile
- declarator:
- pointer[opt] direct-declarator
- direct-declarator:
- identifier
-
(declarator) - direct-declarator
[constant-expression[opt]] - direct-declarator
(parameter-type-list) - direct-declarator
(identifier-list[opt])
- pointer:
-
*type-qualifier-list[opt] -
*type-qualifier-list[opt] pointer
-
- type-qualifier-list:
- type-qualifier
- type-qualifier-list type-qualifier
- parameter-type-list:
- parameter-list
- parameter-list
,...
- parameter-list:
- parameter-declaration
- parameter-list
,parameter-declaration
- parameter-declaration:
- declaration-specifiers declarator
- declaration-specifiers abstract-declarator[opt]
- identifier-list:
- identifier
- identifier-list
,identifier
- type-name:
- specifier-qualifier-list abstract-declarator[opt]
- abstract-declarator:
- pointer
- pointer[opt] direct-abstract-declarator
- direct-abstract-declarator:
-
(abstract-declarator) - direct-abstract-declarator[opt]
[constant-expression[opt]] - direct-abstract-declarator[opt]
(parameter-type-list[opt])
-
- typedef-name:
- identifier
-
initializer:
- assignment-expression
-
{initializer-list} -
{initializer-list,}
-
initializer-list:
- initializer
- initializer-list
,initializer
- statement:
- labeled-statement
- compound-statement
- expression-statement
- selection-statement
- iteration-statement
- jump-statement
- labeled-statement:
- identifier
:statement -
caseconstant-expression:statement -
default:statement
- identifier
- compound-statement:
-
{declaration-list[opt] statement-list[opt]}
-
- declaration-list:
- declaration
- declaration-list declaration
- statement-list:
- statement
- statement-list statement
- expression-statement:
- expression[opt]
;
- expression[opt]
- selection-statement:
-
if(expression)statement -
if(expression)statementelsestatement -
switch(expression)statement
-
- iteration-statement:
-
while(expression)statement -
dostatementwhile(expression); -
for(expression[opt];expression[opt];expression[opt])statement
-
- jump-statement:
-
gotoidentifier; -
continue; -
break; -
returnexpression[opt];
-
-
translation-unit:
- external-declaration
- translation-unit external-declaration
-
external-declaration:
- function-definition
- declaration
- function-definition:
- declaration-specifiers[opt] declarator declaration-list[opt] compound-statement