| 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 |
|
| c_char |
|
| c_char_sequence |
|
| cast_expression |
|
| character_literal |
|
| class_head |
|
| class_key |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| using_declaration |
|
| using_directive |
'using' 'namespace' [ '::' ] [ nested_name_specifier ] namespace_name ';' |