| 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 |
|