EBNF Syntax: C++ (ISO/IEC 14882:1998(E))

Syntax Productions
Variants
Terminals
Literals
Production Cross Reference

Syntax Productions

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Start Symbol (syntax)

Name Production
abstract_declarator
access_specifier
  • 'private'
  • 'protected'
  • 'public'
additive_expression
and_expression
asm_definition 'asm' '(' string_literal ')' ';'
assignment_expression
assignment_operator
  • '='
  • '*='
  • '/='
  • '%='
  • '+='
  • '-='
  • '>>='
  • '<<='
  • '&='
  • '^='
  • '|='
base_clause ':' base_specifier_list
base_specifier
base_specifier_list
block_declaration
boolean_literal
  • 'false'
  • 'true'
c_char
c_char_sequence
cast_expression
character_literal
class_head
class_key
  • 'class'
  • 'struct'
  • 'union'
class_name
class_or_namespace_name
class_specifier class_head '{' [ member_specification ] '}'
compound_statement '{' [ statement_seq ] '}'
condition
conditional_expression
constant_expression conditional_expression
constant_initializer '=' constant_expression
control_line
conversion_declarator ptr_operator [ conversion_declarator ]
conversion_function_id 'operator' conversion_type_id
conversion_type_id type_specifier_seq [ conversion_declarator ]
ctor_initializer ':' mem_initializer_list
cv_qualifier
  • 'const'
  • 'volatile'
cv_qualifier_seq cv_qualifier [ cv_qualifier_seq ]
decimal_literal
decl_specifier
decl_specifier_seq [ decl_specifier_seq ] decl_specifier
declaration
declaration_seq
declaration_statement block_declaration
declarator
declarator_id
delete_expression
digit DIGIT
digit_sequence
direct_abstract_declarator
direct_declarator
direct_new_declarator
elaborated_type_specifier
elif_group '#' 'elif' constant_expression new_line [ group ]
elif_groups
else_group '#' 'else' new_line [ group ]
endif_line '#' 'endif' new_line
enum_name identifier
enum_specifier 'enum' [ identifier ] '{' [ enumerator_list ] '}'
enumerator identifier
enumerator_definition
enumerator_list
equality_expression
escape_sequence
exception_declatation
exception_specification 'throw' '(' [ type_id_list ] ')'
exclusive_or_expression
explicit_instantiation 'template' declaration
explicit_specialization 'template' '<' '>' declaration
exponent_part
expression
expression_list
expression_statement [ expression ] ';'
extension_namespace_definition 'namespace' original_namespace_name '{' namespace_body '}'
floating_literal
floating_suffix
  • 'f'
  • 'l'
  • 'F'
  • 'L'
for_init_statement
fractional_constant
function_body compound_statement
function_definition
function_specifier
  • 'inline'
  • 'virtual'
  • 'explicit'
function_try_block 'try' [ ctor_initializer ] function_body handler_seq
group
group_part
h_char ANY_CHARACTER_EXCEPT_NEWLINE_GT
h_char_sequence
handler 'catch' '(' exception_declatation ')' compound_statement
handler_seq handler [ handler_seq ]
header_name
hex_quad hexadecimal_digit hexadecimal_digit hexadecimal_digit hexadecimal_digit
hexadecimal_digit
  • '0'
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
  • '8'
  • '9'
  • 'a'
  • 'b'
  • 'c'
  • 'd'
  • 'e'
  • 'f'
  • 'A'
  • 'B'
  • 'C'
  • 'D'
  • 'E'
  • 'F'
hexadecimal_escape_sequence
hexadecimal_literal
id_expression
identifier
identifier_list
if_group
if_section if_group [ elif_groups ] [ else_group ] endif_line
inclusive_or_expression
init_declarator declarator [ initializer ]
init_declarator_list
initializer
initializer_clause
initializer_list
integer_literal
integer_suffix
iteration_statement
jump_statement
labeled_statement
linkage_specification
literal
logical_and_expression
logical_or_expression
long_suffix
  • 'l'
  • 'L'
lparen LEFT_PARENTHESIS_WITHOUT_LEADING_WS
mem_initializer mem_initializer_id '(' [ expression_list ] ')'
mem_initializer_id
mem_initializer_list
member_declaration
member_declarator
member_declarator_list
member_specification
multiplicative_expression
named_namespace_definition
namespace_alias identifier
namespace_alias_definition 'namespace' identifier '=' qualified_namespace_specifier ';'
namespace_body [ declaration_seq ]
namespace_definition
namespace_name
nested_name_specifier
new_declarator
new_expression
new_initializer '(' [ expression_list ] ')'
new_line NEWLINE
new_placement '(' expression_list ')'
new_type_id type_specifier_seq [ new_declarator ]
nondigit
nonzero_digit
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
  • '8'
  • '9'
octal_digit
  • '0'
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
octal_escape_sequence
octal_literal
operator
  • 'new'
  • 'delete'
  • 'new[]'
  • 'delete[]'
  • '+'
  • '-'
  • '*'
  • '/'
  • '%'
  • '^'
  • '&'
  • '|'
  • '~'
  • '!'
  • '='
  • '<'
  • '>'
  • '+='
  • '-='
  • '*='
  • '/='
  • '%='
  • '^='
  • '&='
  • '|='
  • '<<'
  • '>>'
  • '>>='
  • '<<='
  • '=='
  • '!='
  • '<='
  • '>='
  • '&&'
  • '||'
  • '++'
  • '--'
  • ','
  • '->*'
  • '->'
  • '()'
  • '[]'
operator_function_id 'operator' operator
original_namespace_definition 'namespace' identifier '{' namespace_body '}'
original_namespace_name identifier
paramerter_declaration_clause
parameter_declaration
parameter_declaration_list
pm_expression
postfix_expression
pp_number
pp_tokens
preprocessing_file [ group ]
preprocessing_op_or_punc
  • '{'
  • '}'
  • '['
  • ']'
  • '#'
  • '##'
  • '('
  • ')'
  • '<:'
  • ':>'
  • '<%'
  • '%>'
  • '%:'
  • '%:%:'
  • ';'
  • ':'
  • '...'
  • 'new'
  • 'delete'
  • '?'
  • '::'
  • '.'
  • '.*'
  • '+'
  • '-'
  • '*'
  • '/'
  • '%'
  • '^'
  • '&'
  • '|'
  • '~'
  • '!'
  • '='
  • '<'
  • '>'
  • '+='
  • '-='
  • '*='
  • '/='
  • '%='
  • '^='
  • '&='
  • '|='
  • '<<'
  • '>>'
  • '>>='
  • '<<='
  • '=='
  • '!='
  • '<='
  • '>='
  • '&&'
  • '||'
  • '++'
  • '--'
  • ','
  • '->*'
  • '->'
  • 'and'
  • 'and_eq'
  • 'bitand'
  • 'bitor'
  • 'compl'
  • 'not'
  • 'not_eq'
  • 'or'
  • 'or_eq'
  • 'xor'
  • 'xor_eq'
preprocessing_token
primary_expression
pseudo_destructor_name
ptr_operator
pure_specifier '=' '0'
q_char ANY_CHARACTER_EXCEPT_NEWLINE_DQUOTE
q_char_sequence
qualified_id
qualified_namespace_specifier [ '::' ] [ nested_name_specifier ] namespace_name
relational_expression
replacement_list [ pp_tokens ]
s_char
s_char_sequence
selection_statement
shift_expression
sign
  • '+'
  • '-'
simple_declaration [ decl_specifier_seq ] [ init_declarator_list ] ';'
simple_escape_sequence
  • "\'"
  • '\"'
  • '\?'
  • '\\'
  • '\a'
  • '\b'
  • '\f'
  • '\n'
  • '\r'
  • '\t'
  • '\v'
simple_type_specifier
statement
statement_seq
storage_class_specifier
  • 'auto'
  • 'register'
  • 'static'
  • 'extern'
  • 'mutable'
string_literal
syntax
template_argument
template_argument_list
template_declaration [ 'export' ] 'template' '<' template_parameter_list '>' declaration
template_id template_name '<' [ template_argument_list ] '>'
template_name identifier
template_parameter
template_parameter_list
throw_expression 'throw' [ assignment_expression ]
token (not used)
translation_unit [ declaration_seq ]
try_block 'try' compound_statement handler_seq
type_id type_specifier_seq [ abstract_declarator ]
type_id_list
type_name
type_parameter
type_specifier
type_specifier_seq type_specifier [ type_specifier_seq ]
typedef_name identifier
unary_expression
unary_operator
  • '*'
  • '&'
  • '+'
  • '-'
  • '!'
  • '~'
universal_character_name
unnamed_namespace_definition 'namespace' '{' namespace_body '}'
unqualified_id
unsigned_suffix
  • 'u'
  • 'U'
using_declaration
using_directive 'using' 'namespace' [ '::' ] [ nested_name_specifier ] namespace_name ';'


Variants

none

Terminals

Terminal Used in
ALPHA_CHARACTER nondigit
ANY_CHARACTER_EXCEPT_NEWLINE_DQUOTE q_char
ANY_CHARACTER_EXCEPT_NEWLINE_DQUOTE_BACKSLASH s_char
ANY_CHARACTER_EXCEPT_NEWLINE_GT h_char
ANY_CHARACTER_EXCEPT_NEWLINE_SQUOTE_BACKSLASH c_char
ANY_NOT_YET_COVERED_NON_WS_CHARACTER preprocessing_token
DIGIT digit
KEYWORD token
LEFT_PARENTHESIS_WITHOUT_LEADING_WS lparen
NEWLINE new_line
PUNCTUATOR token

Literals

Literal Used in
! operator / preprocessing_op_or_punc / unary_operator
!= equality_expression / operator / preprocessing_op_or_punc
" header_name / string_literal
# control_line / elif_group / else_group / endif_line / if_group / preprocessing_op_or_punc
## preprocessing_op_or_punc
% multiplicative_expression / operator / preprocessing_op_or_punc
%: preprocessing_op_or_punc
%:%: preprocessing_op_or_punc
%= assignment_operator / operator / preprocessing_op_or_punc
%> preprocessing_op_or_punc
& and_expression / operator / preprocessing_op_or_punc / ptr_operator / unary_operator
&& logical_and_expression / operator / preprocessing_op_or_punc
&= assignment_operator / operator / preprocessing_op_or_punc
' character_literal
( asm_definition / cast_expression / direct_abstract_declarator / direct_declarator / exception_specification / handler / initializer / iteration_statement / mem_initializer / new_expression / new_initializer / new_placement / postfix_expression / preprocessing_op_or_punc / primary_expression / selection_statement / unary_expression
() operator
) asm_definition / cast_expression / control_line / direct_abstract_declarator / direct_declarator / exception_specification / handler / initializer / iteration_statement / mem_initializer / new_expression / new_initializer / new_placement / postfix_expression / preprocessing_op_or_punc / primary_expression / selection_statement / unary_expression
* multiplicative_expression / operator / preprocessing_op_or_punc / ptr_operator / unary_operator
*= assignment_operator / operator / preprocessing_op_or_punc
+ additive_expression / operator / preprocessing_op_or_punc / sign / unary_operator
++ operator / postfix_expression / preprocessing_op_or_punc / unary_expression
+= assignment_operator / operator / preprocessing_op_or_punc
, base_specifier_list / enumerator_list / expression / expression_list / identifier_list / init_declarator_list / initializer_clause / initializer_list / mem_initializer_list / member_declarator_list / operator / paramerter_declaration_clause / parameter_declaration_list / preprocessing_op_or_punc / template_argument_list / template_parameter_list / type_id_list
- additive_expression / operator / preprocessing_op_or_punc / sign / unary_operator
-- operator / postfix_expression / preprocessing_op_or_punc / unary_expression
-= assignment_operator / operator / preprocessing_op_or_punc
-> operator / postfix_expression / preprocessing_op_or_punc
->* operator / pm_expression / preprocessing_op_or_punc
. fractional_constant / postfix_expression / pp_number / preprocessing_op_or_punc
.* pm_expression / preprocessing_op_or_punc
... exception_declatation / paramerter_declaration_clause / preprocessing_op_or_punc
/ multiplicative_expression / operator / preprocessing_op_or_punc
/= assignment_operator / operator / preprocessing_op_or_punc
: base_clause / conditional_expression / ctor_initializer / labeled_statement / member_declarator / member_specification / preprocessing_op_or_punc
:: base_specifier / declarator_id / delete_expression / elaborated_type_specifier / mem_initializer_id / member_declaration / nested_name_specifier / new_expression / postfix_expression / preprocessing_op_or_punc / pseudo_destructor_name / ptr_operator / qualified_id / qualified_namespace_specifier / simple_type_specifier / using_declaration / using_directive
:> preprocessing_op_or_punc
; asm_definition / expression_statement / iteration_statement / jump_statement / member_declaration / namespace_alias_definition / preprocessing_op_or_punc / simple_declaration / using_declaration / using_directive
< explicit_specialization / header_name / operator / postfix_expression / preprocessing_op_or_punc / relational_expression / template_declaration / template_id / type_parameter
<% preprocessing_op_or_punc
<: preprocessing_op_or_punc
<< operator / preprocessing_op_or_punc / shift_expression
<<= assignment_operator / operator / preprocessing_op_or_punc
<= operator / preprocessing_op_or_punc / relational_expression
= assignment_operator / condition / constant_initializer / enumerator_definition / initializer / namespace_alias_definition / operator / parameter_declaration / preprocessing_op_or_punc / pure_specifier / type_parameter
== equality_expression / operator / preprocessing_op_or_punc
> explicit_specialization / header_name / operator / postfix_expression / preprocessing_op_or_punc / relational_expression / template_declaration / template_id / type_parameter
>= operator / preprocessing_op_or_punc / relational_expression
>> operator / preprocessing_op_or_punc / shift_expression
>>= assignment_operator / operator / preprocessing_op_or_punc
? conditional_expression / preprocessing_op_or_punc
[ delete_expression / direct_abstract_declarator / direct_declarator / direct_new_declarator / postfix_expression / preprocessing_op_or_punc
[] operator
\ octal_escape_sequence
\" simple_escape_sequence
\' simple_escape_sequence
\? simple_escape_sequence
\U universal_character_name
\\ simple_escape_sequence
\a simple_escape_sequence
\b simple_escape_sequence
\f simple_escape_sequence
\n simple_escape_sequence
\r simple_escape_sequence
\t simple_escape_sequence
\u universal_character_name
\v simple_escape_sequence
\x hexadecimal_escape_sequence
] delete_expression / direct_abstract_declarator / direct_declarator / direct_new_declarator / postfix_expression / preprocessing_op_or_punc
^ exclusive_or_expression / operator / preprocessing_op_or_punc
^= assignment_operator / operator / preprocessing_op_or_punc
_ nondigit
{ class_specifier / compound_statement / enum_specifier / extension_namespace_definition / initializer_clause / linkage_specification / original_namespace_definition / preprocessing_op_or_punc / unnamed_namespace_definition
| inclusive_or_expression / operator / preprocessing_op_or_punc
|= assignment_operator / operator / preprocessing_op_or_punc
|| logical_or_expression / operator / preprocessing_op_or_punc
} class_specifier / compound_statement / enum_specifier / extension_namespace_definition / initializer_clause / linkage_specification / original_namespace_definition / preprocessing_op_or_punc / unnamed_namespace_definition
~ operator / preprocessing_op_or_punc / pseudo_destructor_name / unary_operator / unqualified_id
0 hexadecimal_digit / octal_digit / octal_literal / pure_specifier
0X hexadecimal_literal
0x hexadecimal_literal
1 hexadecimal_digit / nonzero_digit / octal_digit
2 hexadecimal_digit / nonzero_digit / octal_digit
3 hexadecimal_digit / nonzero_digit / octal_digit
4 hexadecimal_digit / nonzero_digit / octal_digit
5 hexadecimal_digit / nonzero_digit / octal_digit
6 hexadecimal_digit / nonzero_digit / octal_digit
7 hexadecimal_digit / nonzero_digit / octal_digit
8 hexadecimal_digit / nonzero_digit
9 hexadecimal_digit / nonzero_digit
a hexadecimal_digit
A hexadecimal_digit
and preprocessing_op_or_punc
and_eq preprocessing_op_or_punc
asm asm_definition
auto storage_class_specifier
b hexadecimal_digit
B hexadecimal_digit
bitand preprocessing_op_or_punc
bitor preprocessing_op_or_punc
bool simple_type_specifier
break jump_statement
C hexadecimal_digit
c hexadecimal_digit
case labeled_statement
catch handler
char simple_type_specifier
class class_key / type_parameter
compl preprocessing_op_or_punc
const cv_qualifier
const_cast postfix_expression
continue jump_statement
d hexadecimal_digit
D hexadecimal_digit
default labeled_statement
define control_line
delete delete_expression / operator / preprocessing_op_or_punc
delete[] operator
do iteration_statement
double simple_type_specifier
dynamic_cast postfix_expression
E exponent_part / hexadecimal_digit / pp_number
e exponent_part / hexadecimal_digit / pp_number
elif elif_group
else else_group / selection_statement
endif endif_line
enum elaborated_type_specifier / enum_specifier
error control_line
explicit function_specifier
export template_declaration
extern linkage_specification / storage_class_specifier
F floating_suffix / hexadecimal_digit
f floating_suffix / hexadecimal_digit
false boolean_literal
float simple_type_specifier
for iteration_statement
friend decl_specifier
goto jump_statement
if if_group / selection_statement
ifdef if_group
ifndef if_group
include control_line
inline function_specifier
int simple_type_specifier
L floating_suffix / long_suffix
l floating_suffix / long_suffix
L" string_literal
L' character_literal
line control_line
long simple_type_specifier
mutable storage_class_specifier
namespace extension_namespace_definition / namespace_alias_definition / original_namespace_definition / unnamed_namespace_definition / using_directive
new new_expression / operator / preprocessing_op_or_punc
new[] operator
not preprocessing_op_or_punc
not_eq preprocessing_op_or_punc
operator conversion_function_id / operator_function_id
or preprocessing_op_or_punc
or_eq preprocessing_op_or_punc
pragma control_line
private access_specifier
protected access_specifier
public access_specifier
register storage_class_specifier
reinterpret_cast postfix_expression
return jump_statement
short simple_type_specifier
signed simple_type_specifier
sizeof unary_expression
static storage_class_specifier
static_cast postfix_expression
struct class_key
switch selection_statement
template elaborated_type_specifier / explicit_instantiation / explicit_specialization / member_declaration / nested_name_specifier / postfix_expression / pseudo_destructor_name / qualified_id / simple_type_specifier / template_declaration / type_parameter
this primary_expression
throw exception_specification / throw_expression
true boolean_literal
try function_try_block / try_block
typedef decl_specifier
typeid postfix_expression
typename elaborated_type_specifier / postfix_expression / type_parameter / using_declaration
u unsigned_suffix
U unsigned_suffix
undef control_line
union class_key
unsigned simple_type_specifier
using using_declaration / using_directive
virtual base_specifier / function_specifier
void simple_type_specifier
volatile cv_qualifier
wchar_t simple_type_specifier
while iteration_statement
xor preprocessing_op_or_punc
xor_eq preprocessing_op_or_punc

Production Cross Reference

Production Used in
abstract_declaratorabstract_declarator / direct_abstract_declarator / exception_declatation / parameter_declaration / type_id
access_specifierbase_specifier / member_specification
additive_expressionadditive_expression / shift_expression
and_expressionand_expression / exclusive_or_expression
asm_definitionblock_declaration
assignment_expressionassignment_expression / condition / conditional_expression / expression / expression_list / initializer_clause / parameter_declaration / template_argument / throw_expression
assignment_operatorassignment_expression
base_clauseclass_head
base_specifierbase_specifier_list
base_specifier_listbase_clause / base_specifier_list
block_declarationdeclaration / declaration_statement
boolean_literalliteral
c_charc_char_sequence
c_char_sequencec_char_sequence / character_literal
cast_expressioncast_expression / delete_expression / pm_expression / unary_expression
character_literalliteral / preprocessing_token
class_headclass_specifier
class_keyclass_head / elaborated_type_specifier
class_namebase_specifier / class_or_namespace_name / mem_initializer_id / type_name / unqualified_id
class_or_namespace_namenested_name_specifier
class_specifiertype_specifier
compound_statementfunction_body / handler / statement / try_block
conditioniteration_statement / selection_statement
conditional_expressionassignment_expression / constant_expression
constant_expressionconstant_initializer / direct_abstract_declarator / direct_declarator / direct_new_declarator / elif_group / enumerator_definition / if_group / labeled_statement / member_declarator
constant_initializermember_declarator
control_linegroup_part
conversion_declaratorconversion_declarator / conversion_type_id
conversion_function_idunqualified_id
conversion_type_idconversion_function_id
ctor_initializerfunction_definition / function_try_block
cv_qualifiercv_qualifier_seq / type_specifier
cv_qualifier_seqcv_qualifier_seq / direct_abstract_declarator / direct_declarator / ptr_operator
decimal_literaldecimal_literal / integer_literal
decl_specifierdecl_specifier_seq
decl_specifier_seqdecl_specifier_seq / function_definition / member_declaration / parameter_declaration / simple_declaration
declarationdeclaration_seq / explicit_instantiation / explicit_specialization / linkage_specification / template_declaration
declaration_seqdeclaration_seq / linkage_specification / namespace_body / translation_unit
declaration_statementstatement
declaratorcondition / declarator / direct_declarator / exception_declatation / function_definition / init_declarator / member_declarator / parameter_declaration
declarator_iddirect_declarator
delete_expressionunary_expression
digitdecimal_literal / digit_sequence / identifier / pp_number
digit_sequencedigit_sequence / exponent_part / floating_literal / fractional_constant
direct_abstract_declaratorabstract_declarator / direct_abstract_declarator
direct_declaratordeclarator / direct_declarator
direct_new_declaratordirect_new_declarator / new_declarator
elaborated_type_specifiertype_specifier
elif_groupelif_groups
elif_groupselif_groups / if_section
else_groupif_section
endif_lineif_section
enum_nametype_name
enum_specifiertype_specifier
enumeratorenumerator_definition
enumerator_definitionenumerator_list
enumerator_listenum_specifier / enumerator_list
equality_expressionand_expression / equality_expression
escape_sequencec_char / s_char
exception_declatationhandler
exception_specificationdirect_abstract_declarator / direct_declarator
exclusive_or_expressionexclusive_or_expression / inclusive_or_expression
explicit_instantiationdeclaration
explicit_specializationdeclaration
exponent_partfloating_literal
expressioncondition / conditional_expression / direct_new_declarator / expression / expression_statement / iteration_statement / jump_statement / postfix_expression / primary_expression
expression_listexpression_list / initializer / mem_initializer / new_initializer / new_placement / postfix_expression
expression_statementfor_init_statement / statement
extension_namespace_definitionnamed_namespace_definition
floating_literalliteral
floating_suffixfloating_literal
for_init_statementiteration_statement
fractional_constantfloating_literal
function_bodyfunction_definition / function_try_block
function_definitiondeclaration / member_declaration
function_specifierdecl_specifier
function_try_blockfunction_definition
groupelif_group / else_group / group / if_group / preprocessing_file
group_partgroup
h_charh_char_sequence
h_char_sequenceh_char_sequence / header_name
handlerhandler_seq
handler_seqfunction_try_block / handler_seq / try_block
header_namepreprocessing_token
hex_quaduniversal_character_name
hexadecimal_digithex_quad / hexadecimal_escape_sequence / hexadecimal_literal
hexadecimal_escape_sequenceescape_sequence / hexadecimal_escape_sequence
hexadecimal_literalhexadecimal_literal / integer_literal
id_expressiondeclarator_id / postfix_expression / primary_expression / template_argument / type_parameter
identifierclass_head / class_name / control_line / elaborated_type_specifier / enum_name / enum_specifier / enumerator / identifier / identifier_list / if_group / jump_statement / labeled_statement / mem_initializer_id / member_declarator / namespace_alias / namespace_alias_definition / original_namespace_definition / original_namespace_name / postfix_expression / preprocessing_token / qualified_id / template_name / token / type_parameter / typedef_name / unqualified_id
identifier_listcontrol_line / identifier_list
if_groupif_section
if_sectiongroup_part
inclusive_or_expressioninclusive_or_expression / logical_and_expression
init_declaratorinit_declarator_list
init_declarator_listinit_declarator_list / simple_declaration
initializerinit_declarator
initializer_clauseinitializer / initializer_list
initializer_listinitializer_clause / initializer_list
integer_literalliteral
integer_suffixinteger_literal
iteration_statementstatement
jump_statementstatement
labeled_statementstatement
linkage_specificationdeclaration
literalprimary_expression / token
logical_and_expressionlogical_and_expression / logical_or_expression
logical_or_expressionassignment_expression / conditional_expression / logical_or_expression
long_suffixinteger_suffix
lparencontrol_line
mem_initializermem_initializer_list
mem_initializer_idmem_initializer
mem_initializer_listctor_initializer / mem_initializer_list
member_declarationmember_specification
member_declaratormember_declarator_list
member_declarator_listmember_declaration / member_declarator_list
member_specificationclass_specifier / member_specification
multiplicative_expressionadditive_expression / multiplicative_expression
named_namespace_definitionnamespace_definition
namespace_aliasnamespace_name
namespace_alias_definitionblock_declaration
namespace_bodyextension_namespace_definition / original_namespace_definition / unnamed_namespace_definition
namespace_definitiondeclaration
namespace_nameclass_or_namespace_name / qualified_namespace_specifier / using_directive
nested_name_specifierbase_specifier / class_head / declarator_id / elaborated_type_specifier / mem_initializer_id / member_declaration / nested_name_specifier / postfix_expression / pseudo_destructor_name / ptr_operator / qualified_id / qualified_namespace_specifier / simple_type_specifier / using_declaration / using_directive
new_declaratornew_declarator / new_type_id
new_expressionunary_expression
new_initializernew_expression
new_linecontrol_line / elif_group / else_group / endif_line / group_part / if_group
new_placementnew_expression
new_type_idnew_expression
nondigitidentifier / pp_number
nonzero_digitdecimal_literal
octal_digitoctal_escape_sequence / octal_literal
octal_escape_sequenceescape_sequence
octal_literalinteger_literal / octal_literal
operatoroperator_function_id / token
operator_function_idqualified_id / unqualified_id
original_namespace_definitionnamed_namespace_definition
original_namespace_nameextension_namespace_definition / namespace_name
paramerter_declaration_clausedirect_abstract_declarator / direct_declarator
parameter_declarationparameter_declaration_list / template_parameter
parameter_declaration_listparamerter_declaration_clause / parameter_declaration_list
pm_expressionmultiplicative_expression / pm_expression
postfix_expressionpostfix_expression / unary_expression
pp_numberpp_number / preprocessing_token
pp_tokenscontrol_line / group_part / pp_tokens / replacement_list
preprocessing_filesyntax
preprocessing_op_or_puncpreprocessing_token
preprocessing_tokenpp_tokens
primary_expressionpostfix_expression
pseudo_destructor_namepostfix_expression
ptr_operatorabstract_declarator / conversion_declarator / declarator / new_declarator
pure_specifiermember_declarator
q_charq_char_sequence
q_char_sequenceheader_name / q_char_sequence
qualified_idid_expression
qualified_namespace_specifiernamespace_alias_definition
relational_expressionequality_expression / relational_expression
replacement_listcontrol_line
s_chars_char_sequence
s_char_sequences_char_sequence / string_literal
selection_statementstatement
shift_expressionrelational_expression / shift_expression
signexponent_part / pp_number
simple_declarationblock_declaration / for_init_statement
simple_escape_sequenceescape_sequence
simple_type_specifierpostfix_expression / type_specifier
statementiteration_statement / labeled_statement / selection_statement / statement_seq
statement_seqcompound_statement / statement_seq
storage_class_specifierdecl_specifier
string_literalasm_definition / linkage_specification / literal / preprocessing_token
syntax
template_argumenttemplate_argument_list
template_argument_listtemplate_argument_list / template_id
template_declarationdeclaration / member_declaration
template_idclass_head / class_name / elaborated_type_specifier / postfix_expression / pseudo_destructor_name / qualified_id / simple_type_specifier / unqualified_id
template_nametemplate_id
template_parametertemplate_parameter_list
template_parameter_listtemplate_declaration / template_parameter_list / type_parameter
throw_expressionassignment_expression
translation_unitsyntax
try_blockstatement
type_idcast_expression / new_expression / postfix_expression / template_argument / type_id_list / type_parameter / unary_expression
type_id_listexception_specification / type_id_list
type_namedeclarator_id / pseudo_destructor_name / simple_type_specifier
type_parametertemplate_parameter
type_specifierdecl_specifier / type_specifier_seq
type_specifier_seqcondition / conversion_type_id / exception_declatation / new_type_id / type_id / type_specifier_seq
typedef_nametype_name
unary_expressioncast_expression / unary_expression
unary_operatorunary_expression
universal_character_namec_char / nondigit / s_char
unnamed_namespace_definitionnamespace_definition
unqualified_idid_expression / member_declaration / qualified_id / using_declaration
unsigned_suffixinteger_suffix
using_declarationblock_declaration / member_declaration
using_directiveblock_declaration
tokenNot used in any production

Created with ebnf2html.pl (andreas.gieriet@externsoft.ch)