abstract_declarator |
|
access_specifier |
-
'private'
-
'protected'
-
'public'
|
additive_expression |
|
alias_declaration |
'using' identifier '=' type_id ';' |
alignment_specifier |
|
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 |
|
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_name |
|
class_or_decltype |
|
class_or_namespace_name |
|
class_specifier |
class_head '{' [ member_specification ] '}' |
class_virt_specifier |
|
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 |
|
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 |
|
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 |
|
long_suffix |
|
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 |
|
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 |
|
virt_specifier_seq |
|