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

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
alias_declaration 'using' identifier '=' type_id ';'
alignment_specifier
  • 'alignas' '(' type_id [ '...' ] ')'
  • 'alignas' '(' alignment_expression [ '...' ] ')'
and_expression
asm_definition 'asm' '(' string_literal ')' ';'
assignment_expression
assignment_operator
  • '='
  • '*='
  • '/='
  • '%='
  • '+='
  • '-='
  • '>>='
  • '<<='
  • '&='
  • '^='
  • '|='
attribute attribute_token [ attribute_argument_clause ]
attribute_argument_clause '(' balanced_token_seq ')'
attribute_declaration attribute_specifier_seq ';'
attribute_list
attribute_namespace identifier
attribute_scoped_token attribute_namespace '::' identifier
attribute_specifier
attribute_specifier_seq [ attribute_specifier_seq ] attribute_specifier
attribute_token
balanced_token
balanced_token_seq
base_clause ':' base_specifier_list
base_specifier
base_specifier_list
base_type_specifier class_or_decltype
block_declaration
boolean_literal
  • 'false'
  • 'true'
brace_or_equal_initializer
braced_init_list
c_char
c_char_sequence
capture
capture_default
  • '&'
  • '='
capture_list
cast_expression
character_literal
class_head
class_head_name [ nested_name_specifier ] class_name
class_key
  • 'class'
  • 'struct'
  • 'union'
class_name
class_or_decltype
class_or_namespace_name
class_specifier class_head '{' [ member_specification ] '}'
class_virt_specifier
  • 'final'
  • 'explicit'
class_virt_specifier_seq
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 ]
d_char ANY_RAW_STRING_DELIMITER_CHAR
d_char_sequence
decimal_literal
decl_specifier
decl_specifier_seq
declaration
declaration_seq
declaration_statement block_declaration
declarator
declarator_id
decltype_specifier 'decltype' '(' expression ')'
delete_expression
digit DIGIT
digit_sequence
direct_abstract_declarator
direct_declarator
direct_new_declarator
dynamic_exception_specification 'throw' '(' [ type_id_list ] ')'
elaborated_type_specifier
elif_group '#' 'elif' constant_expression new_line [ group ]
elif_groups
else_group '#' 'else' new_line [ group ]
empty_declaration ';'
encoding_prefix
endif_line '#' 'endif' new_line
enum_base type_specifier_seq
enum_head
enum_key
  • 'enum'
  • 'enum' 'class'
  • 'enum' 'struct'
enum_name identifier
enum_specifier
enumerator identifier
enumerator_definition
enumerator_list
equality_expression
escape_sequence
exception_declatation
exception_specification
exclusive_or_expression
explicit_instantiation [ 'extern'(C++11 only) ] 'template' declaration
explicit_specialization 'template' '<' '>' declaration
exponent_part
expression
expression_list
expression_statement [ expression ] ';'
extension_namespace_definition [ 'inline'(C++11 only) ] 'namespace' original_namespace_name '{' namespace_body '}'
floating_literal
floating_suffix
  • 'f'
  • 'l'
  • 'F'
  • 'L'
for_init_statement
for_range_declaration [ attribute_specifier_seq ] type_specifier_seq declarator
for_range_initializer
fractional_constant
function_body
function_definition
function_specifier
  • 'inline'
  • 'virtual'
  • 'explicit'
function_try_block
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
lambda_capture
lambda_declarator '(' parameter_declaration_clause ')' [ 'mutable' ] [ exception_specification ] [ attribute_specifier_seq ] [ trailing_return_type ]
lambda_expression lambda_introducer [ lambda_declarator ] compound_statement
lambda_introducer '[' [ lambda_capture ] ']'
linkage_specification
literal
literal_operator_id 'operator' '""' identifier
logical_and_expression
logical_or_expression
long_long_suffix
  • 'll'
  • 'LL'
long_suffix
  • 'l'
  • 'L'
lparen LEFT_PARENTHESIS_WITHOUT_LEADING_WS
mem_initializer
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
new_line NEWLINE
new_placement '(' expression_list ')'
new_type_id type_specifier_seq [ new_declarator ]
noexcept_expression 'noexcept' '(' expression ')'
noexcept_specification
non_directive pp_tokens new_line
nondigit
nonzero_digit
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
  • '8'
  • '9'
noptr_abstract_declarator
noptr_declarator
noptr_new_declarator
octal_digit
  • '0'
  • '1'
  • '2'
  • '3'
  • '4'
  • '5'
  • '6'
  • '7'
octal_escape_sequence
octal_literal
opaque_enum_declaration enum_key [ attribute_specifier_seq ] identifier [ enum_base ]
operator
  • 'new'
  • 'delete'
  • 'new[]'
  • 'delete[]'
  • '+'
  • '-'
  • '*'
  • '/'
  • '%'
  • '^'
  • '&'
  • '|'
  • '~'
  • '!'
  • '='
  • '<'
  • '>'
  • '+='
  • '-='
  • '*='
  • '/='
  • '%='
  • '^='
  • '&='
  • '|='
  • '<<'
  • '>>'
  • '>>='
  • '<<='
  • '=='
  • '!='
  • '<='
  • '>='
  • '&&'
  • '||'
  • '++'
  • '--'
  • ','
  • '->*'
  • '->'
  • '()'
  • '[]'
operator_function_id 'operator' operator
original_namespace_definition [ 'inline'(C++11 only) ] 'namespace' identifier '{' namespace_body '}'
original_namespace_name identifier
parameter_declaration
parameter_declaration_clause
parameter_declaration_list
parameters_and_qualifiers '(' parameter_declaration_clause ')' [ attribute_specifier_seq ] [ cv_qualifier_seq ] [ ref_qualifier ] [ exception_specification ]
pm_expression
pointer_literal 'nullptr'
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_abstract_declarator
ptr_declarator
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
r_char ANY_CHAR_UNTIL_END_OF_RAW_STRING
r_char_sequence
raw_string '"' [ d_char_sequence ] '(' [ r_char_sequence ] ')' [ d_char_sequence ] '"'
ref_qualifier
  • '&'
  • '&&'
relational_expression
replacement_list [ pp_tokens ]
s_char
s_char_sequence
selection_statement
shift_expression
sign
  • '+'
  • '-'
simple_declaration [ attribute_specifier_seq ] [ decl_specifier_seq ] [ init_declarator_list ] ';'
simple_escape_sequence
  • "\'"
  • '\"'
  • '\?'
  • '\\'
  • '\a'
  • '\b'
  • '\f'
  • '\n'
  • '\r'
  • '\t'
  • '\v'
simple_template_id template_name '<' [ template_argument_list ] '>'
simple_type_specifier
statement
statement_seq
static_assert_declaration 'static_assert' '(' constant_expression ',' string_literal ')' ';'
storage_class_specifier
string_literal
syntax
template_argument
template_argument_list
template_declaration [ 'export'(C++98 only) ] 'template' '<' template_parameter_list '>' declaration
template_id
template_name identifier
template_parameter
template_parameter_list
text_line [ pp_tokens ] new_line
throw_expression 'throw' [ assignment_expression ]
token (not used)
trailing_return_type '->' trailing_type_specifier_seq [ abstract_declarator ]
trailing_type_specifier
trailing_type_specifier_seq
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
typedef_name identifier
typename_specifier
ud_suffix identifier
unary_expression
unary_operator
  • '*'
  • '&'
  • '+'
  • '-'
  • '!'
  • '~'
universal_character_name
unnamed_namespace_definition [ 'inline'(C++11 only) ] 'namespace' '{' namespace_body '}'
unqualified_id
unsigned_suffix
  • 'u'
  • 'U'
user_defined_character_literal character_literal ud_suffix
user_defined_floating_literal
user_defined_integer_literal
user_defined_literal
user_defined_string_literal string_literal ud_suffix
using_declaration
using_directive [ attribute_specifier_seq(C++11 only) ] 'using' 'namespace' [ '::' ] [ nested_name_specifier ] namespace_name ';'
virt_specifier
  • 'override'
  • 'final'
  • 'new'
virt_specifier_seq


Variants

Variant Used in Variant Expressions
C++11 onlyabstract_declarator ... ptr_abstract_declarator ...
... [ noptr_abstract_declarator ] [ parameters_and_qualifiers ] trailing_return_type ...
... '...' ...
assignment_expression ... logical_or_expression assignment_operator initializer_clause ...
base_specifier ... [ attribute_specifier_seq ] base_type_specifier ...
... [ attribute_specifier_seq ] 'virtual' [ access_specifier ] base_type_specifier ...
... [ attribute_specifier_seq ] access_specifier [ 'virtual' ] base_type_specifier ...
base_specifier_list ... '...' ...
... '...' ...
block_declaration ... static_assert_declaration ...
... alias_declaration ...
... opaque_enum_declaration ...
character_literal ... "u'" c_char_sequence "'" ...
... "U'" c_char_sequence "'" ...
class_head ... class_key [ attribute_specifier_seq ] class_head_name [ class_virt_specifier_seq ] [ base_clause ] ...
... class_key [ attribute_specifier_seq ] [ base_clause ] ...
class_name ... simple_template_id ...
condition ... [ attribute_specifier_seq ] decl_specifier_seq declarator '=' initializer_clause ...
... [ attribute_specifier_seq ] decl_specifier_seq declarator braced_init_list ...
control_line ... '#' 'define' identifier lparen '...' ')' replacement_list new_line ...
... '#' 'define' identifier lparen identifier_list ',' '...' ')' replacement_list new_line ...
decl_specifier ... 'constexpr' ...
decl_specifier_seq ... decl_specifier [ attribute_specifier_seq ] ...
... decl_specifier decl_specifier_seq ...
declaration ... empty_declaration ...
... attribute_declaration ...
declarator ... ptr_declarator ...
... noptr_declarator parameters_and_qualifiers trailing_return_type ...
declarator_id ... [ '...' ] id_expression ...
... [ '::' ] [ nested_name_specifier ] class_name ...
elaborated_type_specifier ... attribute_specifier_seq ...
... class_key [ '::' ] [ nested_name_specifier ] [ 'template' ] simple_template_id ...
encoding_prefix ... 'u8' ...
... 'u' ...
... 'U' ...
enum_specifier ... enum_head '{' [ enumerator_list ] '}' ...
... enum_head '{' enumerator_list [ ',' ] '}' ...
exception_declatation ... [ attribute_specifier_seq ] type_specifier_seq declarator ...
... [ attribute_specifier_seq ] type_specifier_seq [ abstract_declarator ] ...
exception_specification ... dynamic_exception_specification ...
... noexcept_specification ...
explicit_instantiation ... 'extern' ...
expression_list ... initializer_list ...
extension_namespace_definition ... 'inline' ...
function_body ... ctor_initializer ...
... function_try_block ...
function_definition ... [ attribute_specifier_seq ] [ decl_specifier_seq ] declarator function_body ...
... [ attribute_specifier_seq ] [ decl_specifier_seq ] declarator '=' 'default' ';' ...
... [ attribute_specifier_seq ] [ decl_specifier_seq ] declarator '=' 'delete' ';' ...
function_try_block ... 'try' [ ctor_initializer ] compound_statement handler_seq ...
group_part ... text_line ...
... '#' non_directive ...
initializer ... brace_or_equal_initializer ...
initializer_clause ... braced_init_list ...
initializer_list ... '...' ...
... '...' ...
iteration_statement ... 'for' '(' for_range_declaration ':' for_range_initializer ')' statement ...
jump_statement ... 'return' braced_init_list ';' ...
labeled_statement ... attribute_specifier_seq ...
... attribute_specifier_seq ...
... attribute_specifier_seq ...
literal ... pointer_literal ...
... user_defined_literal ...
mem_initializer ... mem_initializer_id braced_init_list ...
mem_initializer_id ... class_or_decltype ...
mem_initializer_list ... '...' ...
... '...' ...
member_declaration ... attribute_specifier_seq ...
... static_assert_declaration ...
... alias_declaration ...
member_declarator ... declarator [ virt_specifier_seq ] [ pure_specifier ] ...
... declarator [ virt_specifier_seq ] [ brace_or_equal_initializer ] ...
... [ identifier ] [ attribute_specifier_seq ] [ virt_specifier_seq ] ':' constant_expression ...
nested_name_specifier ... type_name '::' ...
... namespace_name '::' ...
... decltype_specifier '::' ...
... nested_name_specifier identifier '::' ...
... nested_name_specifier [ 'template' ] simple_template_id '::' ...
new_declarator ... noptr_new_declarator ...
new_initializer ... braced_init_list ...
nondigit ... OTHER_IMPLEMENTATION_DEFINED_CHARACTERS ...
original_namespace_definition ... 'inline' ...
parameter_declaration ... [ attribute_specifier_seq ] decl_specifier_seq declarator ...
... [ attribute_specifier_seq ] decl_specifier_seq declarator '=' initializer_clause ...
... [ attribute_specifier_seq ] decl_specifier_seq [ abstract_declarator ] ...
... [ attribute_specifier_seq ] decl_specifier_seq [ abstract_declarator ] '=' initializer_clause ...
postfix_expression ... typename_specifier '(' [ expression_list ] ')' ...
... simple_type_specifier braced_init_list ...
... typename_specifier braced_init_list ...
preprocessing_token ... user_defined_character_literal ...
... user_defined_string_literal ...
primary_expression ... lambda_expression ...
pseudo_destructor_name ... [ '::' ] nested_name_specifier 'template' simple_template_id '::' '~' type_name ...
... '~' decltype_specifier ...
ptr_operator ... attribute_specifier_seq ...
... attribute_specifier_seq ...
... '&&' [ attribute_specifier_seq ] ...
... attribute_specifier_seq ...
qualified_id ... '::' literal_operator_id ...
simple_type_specifier ... [ '::' ] nested_name_specifier 'template' simple_template_id ...
... 'char16_t' ...
... 'char32_t' ...
... 'auto' ...
... decltype_specifier ...
statement ... attribute_specifier_seq ...
... attribute_specifier_seq ...
... attribute_specifier_seq ...
... attribute_specifier_seq ...
... attribute_specifier_seq ...
... attribute_specifier_seq ...
storage_class_specifier ... 'thread_local' ...
string_literal ... [ encoding_prefix ] 'R' raw_string ...
template_argument ... constant_expression ...
template_argument_list ... '...' ...
... '...' ...
template_id ... simple_template_id ...
... operator_function_id '<' [ template_argument_list ] '>' ...
... literal_operator_id '<' [ template_argument_list ] '>' ...
type_id_list ... '...' ...
... '...' ...
type_name ... simple_template_id ...
type_parameter ... '...' ...
... '...' ...
... '...' ...
type_specifier ... trailing_type_specifier ...
type_specifier_seq ... type_specifier type_specifier_seq ...
... type_specifier [ attribute_specifier_seq ] ...
typename_specifier ... 'typename' [ '::' ] nested_name_specifier [ 'template' ] simple_template_id ...
unary_expression ... 'sizeof' '...' '(' identifier ')' ...
... 'alignof' '(' type_id ')' ...
... noexcept_expression ...
unnamed_namespace_definition ... 'inline' ...
unqualified_id ... literal_operator_id ...
... '~' decltype_specifier ...
using_directive ... attribute_specifier_seq ...
C++98 onlyabstract_declarator ... ptr_operator [ abstract_declarator ] ...
... direct_abstract_declarator ...
assignment_expression ... logical_or_expression assignment_operator assignment_expression ...
base_specifier ... [ '::' ] [ nested_name_specifier ] class_name ...
... 'virtual' [ access_specifier ] [ '::' ] [ nested_name_specifier ] class_name ...
... access_specifier [ 'virtual' ] [ '::' ] [ nested_name_specifier ] class_name ...
class_head ... class_key [ identifier ] [ base_clause ] ...
... class_key nested_name_specifier identifier [ base_clause ] ...
... class_key [ nested_name_specifier ] template_id [ base_clause ] ...
class_name ... template_id ...
condition ... type_specifier_seq declarator '=' assignment_expression ...
decl_specifier_seq ... [ decl_specifier_seq ] decl_specifier ...
declarator ... direct_declarator ...
... ptr_operator declarator ...
declarator_id ... id_expression ...
... [ '::' ] [ nested_name_specifier ] type_name ...
elaborated_type_specifier ... 'typename' [ '::' ] nested_name_specifier identifier ...
... 'typename' [ '::' ] nested_name_specifier [ 'template' ] template_id ...
enum_specifier ... 'enum' [ identifier ] '{' [ enumerator_list ] '}' ...
exception_declatation ... type_specifier_seq declarator ...
... type_specifier_seq abstract_declarator ...
... type_specifier_seq ...
exception_specification ... 'throw' '(' [ type_id_list ] ')' ...
expression_list ... assignment_expression ...
... expression_list ',' assignment_expression ...
function_definition ... [ decl_specifier_seq ] declarator [ ctor_initializer ] function_body ...
... [ decl_specifier_seq ] declarator function_try_block ...
function_try_block ... 'try' [ ctor_initializer ] function_body handler_seq ...
group_part ... [ pp_tokens ] new_line ...
initializer ... '=' initializer_clause ...
initializer_clause ... '{' initializer_list [ ',' ] '}' ...
... '{' '}' ...
mem_initializer_id ... [ '::' ] [ nested_name_specifier ] class_name ...
member_declaration ... [ '::' ] nested_name_specifier [ 'template' ] unqualified_id ';' ...
member_declarator ... declarator [ pure_specifier ] ...
... declarator [ constant_initializer ] ...
... [ identifier ] ':' constant_expression ...
nested_name_specifier ... class_or_namespace_name '::' [ nested_name_specifier ] ...
... class_or_namespace_name '::' 'template' nested_name_specifier ...
new_declarator ... direct_new_declarator ...
parameter_declaration ... decl_specifier_seq declarator ...
... decl_specifier_seq declarator '=' assignment_expression ...
... decl_specifier_seq [ abstract_declarator ] ...
... decl_specifier_seq [ abstract_declarator ] '=' assignment_expression ...
postfix_expression ... 'typename' [ '::' ] nested_name_specifier identifier '(' [ expression_list ] ')' ...
... 'typename' [ '::' ] nested_name_specifier [ 'template' ] template_id '(' [ expression_list ] ')' ...
pseudo_destructor_name ... [ '::' ] nested_name_specifier 'template' template_id '::' '~' type_name ...
simple_type_specifier ... [ '::' ] nested_name_specifier 'template' template_id ...
storage_class_specifier ... 'auto' ...
template_argument ... assignment_expression ...
template_declaration ... 'export' ...
template_id ... template_name '<' [ template_argument_list ] '>' ...
type_specifier ... simple_type_specifier ...
... elaborated_type_specifier ...
... cv_qualifier ...
type_specifier_seq ... type_specifier [ type_specifier_seq ] ...
typename_specifier ... 'typename' [ '::' ] nested_name_specifier [ 'template' ] template_id ...

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_CHAR_UNTIL_END_OF_RAW_STRING r_char
ANY_NOT_YET_COVERED_NON_WS_CHARACTER preprocessing_token
ANY_RAW_STRING_DELIMITER_CHAR d_char
ANY_TOKEN_OTHER_THAN_PARENTHESIS_BRAVKET_BRACE balanced_token
DIGIT digit
KEYWORD token
LEFT_PARENTHESIS_WITHOUT_LEADING_WS lparen
NEWLINE new_line
OTHER_IMPLEMENTATION_DEFINED_CHARACTERS nondigit
PUNCTUATOR token

Literals

Literal Used in
! operator / preprocessing_op_or_punc / unary_operator
!= equality_expression / operator / preprocessing_op_or_punc
" header_name / raw_string / string_literal
"" literal_operator_id
# control_line / elif_group / else_group / endif_line / group_part / 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 / capture / capture_default / operator / preprocessing_op_or_punc / ptr_operator / ref_qualifier / unary_operator
&& logical_and_expression / operator / preprocessing_op_or_punc / ptr_operator / ref_qualifier
&= assignment_operator / operator / preprocessing_op_or_punc
' character_literal
( alignment_specifier / asm_definition / attribute_argument_clause / balanced_token / cast_expression / decltype_specifier / direct_abstract_declarator / direct_declarator / dynamic_exception_specification / exception_specification / handler / initializer / iteration_statement / lambda_declarator / mem_initializer / new_expression / new_initializer / new_placement / noexcept_expression / noexcept_specification / noptr_abstract_declarator / noptr_declarator / parameters_and_qualifiers / postfix_expression / preprocessing_op_or_punc / primary_expression / raw_string / selection_statement / static_assert_declaration / unary_expression
() operator
) alignment_specifier / asm_definition / attribute_argument_clause / balanced_token / cast_expression / control_line / decltype_specifier / direct_abstract_declarator / direct_declarator / dynamic_exception_specification / exception_specification / handler / initializer / iteration_statement / lambda_declarator / mem_initializer / new_expression / new_initializer / new_placement / noexcept_expression / noexcept_specification / noptr_abstract_declarator / noptr_declarator / parameters_and_qualifiers / postfix_expression / preprocessing_op_or_punc / primary_expression / raw_string / selection_statement / static_assert_declaration / 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
, attribute_list / base_specifier_list / braced_init_list / capture_list / control_line / enum_specifier / enumerator_list / expression / expression_list / identifier_list / init_declarator_list / initializer_clause / initializer_list / lambda_capture / mem_initializer_list / member_declarator_list / operator / parameter_declaration_clause / parameter_declaration_list / preprocessing_op_or_punc / static_assert_declaration / 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 / trailing_return_type
->* operator / pm_expression / preprocessing_op_or_punc
. fractional_constant / postfix_expression / pp_number / preprocessing_op_or_punc
.* pm_expression / preprocessing_op_or_punc
.. class_or_decltype
... abstract_declarator / alignment_specifier / attribute_list / base_specifier_list / capture_list / control_line / declarator_id / exception_declatation / initializer_list / mem_initializer_list / parameter_declaration_clause / preprocessing_op_or_punc / template_argument_list / type_id_list / type_parameter / unary_expression
/ multiplicative_expression / operator / preprocessing_op_or_punc
/= assignment_operator / operator / preprocessing_op_or_punc
: base_clause / conditional_expression / ctor_initializer / iteration_statement / labeled_statement / member_declarator / member_specification / preprocessing_op_or_punc
:: attribute_scoped_token / 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 / typename_specifier / using_declaration / using_directive
:> preprocessing_op_or_punc
; alias_declaration / asm_definition / attribute_declaration / empty_declaration / expression_statement / function_definition / iteration_statement / jump_statement / member_declaration / namespace_alias_definition / preprocessing_op_or_punc / simple_declaration / static_assert_declaration / using_declaration / using_directive
< explicit_specialization / header_name / operator / postfix_expression / preprocessing_op_or_punc / relational_expression / simple_template_id / 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
= alias_declaration / assignment_operator / brace_or_equal_initializer / capture_default / condition / constant_initializer / enumerator_definition / function_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 / simple_template_id / 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
[ attribute_specifier / balanced_token / delete_expression / direct_abstract_declarator / direct_declarator / direct_new_declarator / lambda_introducer / noptr_abstract_declarator / noptr_declarator / noptr_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
] attribute_specifier / balanced_token / delete_expression / direct_abstract_declarator / direct_declarator / direct_new_declarator / lambda_introducer / noptr_abstract_declarator / noptr_declarator / noptr_new_declarator / postfix_expression / preprocessing_op_or_punc
^ exclusive_or_expression / operator / preprocessing_op_or_punc
^= assignment_operator / operator / preprocessing_op_or_punc
_ nondigit
{ balanced_token / braced_init_list / 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
} balanced_token / braced_init_list / 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
alignas alignment_specifier
alignof unary_expression
and preprocessing_op_or_punc
and_eq preprocessing_op_or_punc
asm asm_definition
auto simple_type_specifier / 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
char16_t simple_type_specifier
char32_t simple_type_specifier
class class_key / enum_key / type_parameter
compl preprocessing_op_or_punc
const cv_qualifier
const_cast postfix_expression
constexpr decl_specifier
continue jump_statement
D hexadecimal_digit
d hexadecimal_digit
decltype decltype_specifier
default function_definition / labeled_statement
define control_line
delete delete_expression / function_definition / 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_key / enum_specifier
error control_line
explicit class_virt_specifier / function_specifier
export template_declaration
extern explicit_instantiation / linkage_specification / storage_class_specifier
F floating_suffix / hexadecimal_digit
f floating_suffix / hexadecimal_digit
false boolean_literal
final class_virt_specifier / virt_specifier
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 extension_namespace_definition / function_specifier / original_namespace_definition / unnamed_namespace_definition
int simple_type_specifier
L encoding_prefix / floating_suffix / long_suffix
l floating_suffix / long_suffix
L' character_literal
line control_line
ll long_long_suffix
LL long_long_suffix
long simple_type_specifier
mutable lambda_declarator / 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 / virt_specifier
new[] operator
noexcept noexcept_expression / noexcept_specification
not preprocessing_op_or_punc
not_eq preprocessing_op_or_punc
nullptr pointer_literal
operator conversion_function_id / literal_operator_id / operator_function_id
or preprocessing_op_or_punc
or_eq preprocessing_op_or_punc
override virt_specifier
pragma control_line
private access_specifier
protected access_specifier
public access_specifier
R string_literal
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_assert static_assert_declaration
static_cast postfix_expression
struct class_key / enum_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 / typename_specifier
this capture / primary_expression
thread_local storage_class_specifier
throw dynamic_exception_specification / 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 / typename_specifier / using_declaration
u encoding_prefix / unsigned_suffix
U encoding_prefix / unsigned_suffix
u' character_literal
U' character_literal
u8 encoding_prefix
undef control_line
union class_key
unsigned simple_type_specifier
using alias_declaration / 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 / trailing_return_type / type_id
access_specifierbase_specifier / member_specification
additive_expressionadditive_expression / shift_expression
alias_declarationblock_declaration / member_declaration
alignment_specifierattribute_specifier
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
attributeattribute_list
attribute_argument_clauseattribute
attribute_declarationdeclaration
attribute_listattribute_list / attribute_specifier
attribute_namespaceattribute_scoped_token
attribute_scoped_tokenattribute_token
attribute_specifierattribute_specifier_seq
attribute_specifier_seqattribute_declaration / attribute_specifier_seq / base_specifier / class_head / condition / decl_specifier_seq / elaborated_type_specifier / enum_head / exception_declatation / for_range_declaration / function_definition / labeled_statement / lambda_declarator / member_declaration / member_declarator / noptr_abstract_declarator / noptr_declarator / noptr_new_declarator / opaque_enum_declaration / parameter_declaration / parameters_and_qualifiers / ptr_operator / simple_declaration / statement / trailing_type_specifier_seq / type_specifier_seq / using_directive
attribute_tokenattribute
balanced_tokenbalanced_token_seq
balanced_token_seqattribute_argument_clause / balanced_token / balanced_token_seq
base_clauseclass_head
base_specifierbase_specifier_list
base_specifier_listbase_clause / base_specifier_list
base_type_specifierbase_specifier
block_declarationdeclaration / declaration_statement
boolean_literalliteral
brace_or_equal_initializerinitializer / member_declarator
braced_init_listbrace_or_equal_initializer / condition / for_range_initializer / initializer_clause / jump_statement / mem_initializer / new_initializer / postfix_expression
c_charc_char_sequence
c_char_sequencec_char_sequence / character_literal
capturecapture_list
capture_defaultlambda_capture
capture_listcapture_list / lambda_capture
cast_expressioncast_expression / delete_expression / pm_expression / unary_expression
character_literalliteral / preprocessing_token / user_defined_character_literal
class_headclass_specifier
class_head_nameclass_head
class_keyclass_head / elaborated_type_specifier
class_namebase_specifier / class_head_name / class_or_decltype / class_or_namespace_name / declarator_id / mem_initializer_id / type_name / unqualified_id
class_or_decltypebase_type_specifier / mem_initializer_id
class_or_namespace_namenested_name_specifier
class_specifiertype_specifier
class_virt_specifierclass_virt_specifier_seq
class_virt_specifier_seqclass_head / class_virt_specifier_seq
compound_statementfunction_body / function_try_block / handler / lambda_expression / 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 / noexcept_specification / noptr_abstract_declarator / noptr_declarator / noptr_new_declarator / static_assert_declaration / template_argument
constant_initializermember_declarator
control_linegroup_part
conversion_declaratorconversion_declarator / conversion_type_id
conversion_function_idunqualified_id
conversion_type_idconversion_function_id
ctor_initializerfunction_body / function_definition / function_try_block
cv_qualifiercv_qualifier_seq / trailing_type_specifier / type_specifier
cv_qualifier_seqcv_qualifier_seq / direct_abstract_declarator / direct_declarator / parameters_and_qualifiers / ptr_operator
d_chard_char_sequence
d_char_sequenced_char_sequence / raw_string
decimal_literaldecimal_literal / integer_literal / user_defined_integer_literal
decl_specifierdecl_specifier_seq
decl_specifier_seqcondition / decl_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 / for_range_declaration / function_definition / init_declarator / member_declarator / parameter_declaration
declarator_iddirect_declarator / noptr_declarator
decltype_specifierclass_or_decltype / nested_name_specifier / pseudo_destructor_name / simple_type_specifier / unqualified_id
delete_expressionunary_expression
digitdecimal_literal / digit_sequence / identifier / pp_number
digit_sequencedigit_sequence / exponent_part / floating_literal / fractional_constant / user_defined_floating_literal
direct_abstract_declaratorabstract_declarator / direct_abstract_declarator
direct_declaratordeclarator / direct_declarator
direct_new_declaratordirect_new_declarator / new_declarator
dynamic_exception_specificationexception_specification
elaborated_type_specifiertrailing_type_specifier / type_specifier
elif_groupelif_groups
elif_groupselif_groups / if_section
else_groupif_section
empty_declarationdeclaration
encoding_prefixstring_literal
endif_lineif_section
enum_baseenum_head / opaque_enum_declaration
enum_headenum_specifier
enum_keyenum_head / opaque_enum_declaration
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 / lambda_declarator / parameters_and_qualifiers
exclusive_or_expressionexclusive_or_expression / inclusive_or_expression
explicit_instantiationdeclaration
explicit_specializationdeclaration
exponent_partfloating_literal / user_defined_floating_literal
expressionalignment_specifier / condition / conditional_expression / decltype_specifier / direct_new_declarator / expression / expression_statement / for_range_initializer / iteration_statement / jump_statement / noexcept_expression / noptr_new_declarator / 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
for_range_declarationiteration_statement
for_range_initializeriteration_statement
fractional_constantfloating_literal / user_defined_floating_literal
function_bodyfunction_definition / function_try_block
function_definitiondeclaration / member_declaration
function_specifierdecl_specifier
function_try_blockfunction_body / function_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 / user_defined_integer_literal
id_expressiondeclarator_id / postfix_expression / primary_expression / template_argument / type_parameter
identifieralias_declaration / attribute_namespace / attribute_scoped_token / attribute_token / capture / class_head / class_name / control_line / elaborated_type_specifier / enum_head / enum_name / enum_specifier / enumerator / identifier / identifier_list / if_group / jump_statement / labeled_statement / literal_operator_id / mem_initializer_id / member_declarator / namespace_alias / namespace_alias_definition / nested_name_specifier / opaque_enum_declaration / original_namespace_definition / original_namespace_name / postfix_expression / preprocessing_token / qualified_id / template_name / token / type_parameter / typedef_name / typename_specifier / ud_suffix / unary_expression / 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_clauseassignment_expression / brace_or_equal_initializer / condition / initializer / initializer_list / parameter_declaration
initializer_listbraced_init_list / expression_list / initializer_clause / initializer_list
integer_literalliteral
integer_suffixinteger_literal
iteration_statementstatement
jump_statementstatement
labeled_statementstatement
lambda_capturelambda_introducer
lambda_declaratorlambda_expression
lambda_expressionprimary_expression
lambda_introducerlambda_expression
linkage_specificationdeclaration
literalprimary_expression / token
literal_operator_idqualified_id / template_id / unqualified_id
logical_and_expressionlogical_and_expression / logical_or_expression
logical_or_expressionassignment_expression / conditional_expression / logical_or_expression
long_long_suffixinteger_suffix
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 / nested_name_specifier / qualified_namespace_specifier / using_directive
nested_name_specifierbase_specifier / class_head / class_head_name / class_or_decltype / declarator_id / elaborated_type_specifier / enum_head / mem_initializer_id / member_declaration / nested_name_specifier / postfix_expression / pseudo_destructor_name / ptr_operator / qualified_id / qualified_namespace_specifier / simple_type_specifier / typename_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 / non_directive / text_line
new_placementnew_expression
new_type_idnew_expression
noexcept_expressionunary_expression
noexcept_specificationexception_specification
non_directivegroup_part
nondigitidentifier / pp_number
nonzero_digitdecimal_literal
noptr_abstract_declaratorabstract_declarator / noptr_abstract_declarator / ptr_abstract_declarator
noptr_declaratordeclarator / noptr_declarator / ptr_declarator
noptr_new_declaratornew_declarator / noptr_new_declarator
octal_digitoctal_escape_sequence / octal_literal
octal_escape_sequenceescape_sequence
octal_literalinteger_literal / octal_literal / user_defined_integer_literal
opaque_enum_declarationblock_declaration
operatoroperator_function_id / token
operator_function_idqualified_id / template_id / unqualified_id
original_namespace_definitionnamed_namespace_definition
original_namespace_nameextension_namespace_definition / namespace_name
parameter_declarationparameter_declaration_list / template_parameter
parameter_declaration_clausedirect_abstract_declarator / direct_declarator / lambda_declarator / parameters_and_qualifiers
parameter_declaration_listparameter_declaration_clause / parameter_declaration_list
parameters_and_qualifiersabstract_declarator / declarator / noptr_abstract_declarator / noptr_declarator
pm_expressionmultiplicative_expression / pm_expression
pointer_literalliteral
postfix_expressionpostfix_expression / unary_expression
pp_numberpp_number / preprocessing_token
pp_tokenscontrol_line / group_part / non_directive / pp_tokens / replacement_list / text_line
preprocessing_filesyntax
preprocessing_op_or_puncpreprocessing_token
preprocessing_tokenpp_tokens
primary_expressionpostfix_expression
pseudo_destructor_namepostfix_expression
ptr_abstract_declaratorabstract_declarator / noptr_abstract_declarator / ptr_abstract_declarator
ptr_declaratordeclarator / noptr_declarator / ptr_declarator
ptr_operatorabstract_declarator / conversion_declarator / declarator / new_declarator / ptr_abstract_declarator / ptr_declarator
pure_specifiermember_declarator
q_charq_char_sequence
q_char_sequenceheader_name / q_char_sequence
qualified_idid_expression
qualified_namespace_specifiernamespace_alias_definition
r_charr_char_sequence
r_char_sequencer_char_sequence / raw_string
raw_stringstring_literal
ref_qualifierparameters_and_qualifiers
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_template_idclass_name / elaborated_type_specifier / nested_name_specifier / pseudo_destructor_name / simple_type_specifier / template_id / type_name / typename_specifier
simple_type_specifierpostfix_expression / trailing_type_specifier / type_specifier
statementiteration_statement / labeled_statement / selection_statement / statement_seq
statement_seqcompound_statement / statement_seq
static_assert_declarationblock_declaration / member_declaration
storage_class_specifierdecl_specifier
string_literalasm_definition / linkage_specification / literal / preprocessing_token / static_assert_declaration / user_defined_string_literal
syntax
template_argumenttemplate_argument_list
template_argument_listsimple_template_id / template_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 / typename_specifier / unqualified_id
template_namesimple_template_id / template_id
template_parametertemplate_parameter_list
template_parameter_listtemplate_declaration / template_parameter_list / type_parameter
text_linegroup_part
throw_expressionassignment_expression
trailing_return_typeabstract_declarator / declarator / lambda_declarator
trailing_type_specifiertrailing_type_specifier_seq / type_specifier
trailing_type_specifier_seqtrailing_return_type / trailing_type_specifier_seq
translation_unitsyntax
try_blockstatement
type_idalias_declaration / alignment_specifier / cast_expression / new_expression / postfix_expression / template_argument / type_id_list / type_parameter / unary_expression
type_id_listdynamic_exception_specification / exception_specification / type_id_list
type_namedeclarator_id / nested_name_specifier / pseudo_destructor_name / simple_type_specifier
type_parametertemplate_parameter
type_specifierdecl_specifier / type_specifier_seq
type_specifier_seqcondition / conversion_type_id / enum_base / exception_declatation / for_range_declaration / new_type_id / type_id / type_specifier_seq
typedef_nametype_name
typename_specifierpostfix_expression / trailing_type_specifier
ud_suffixuser_defined_character_literal / user_defined_floating_literal / user_defined_integer_literal / user_defined_string_literal
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
user_defined_character_literalpreprocessing_token / user_defined_literal
user_defined_floating_literaluser_defined_literal
user_defined_integer_literaluser_defined_literal
user_defined_literalliteral
user_defined_string_literalpreprocessing_token / user_defined_literal
using_declarationblock_declaration / member_declaration
using_directiveblock_declaration
virt_specifiervirt_specifier_seq
virt_specifier_seqmember_declarator / virt_specifier_seq
tokenNot used in any production

Created with D:\Projects\KnowHow\EBNF\xsebnf\bin\ebnf2html.pl (andreas.gieriet@externsoft.ch)