📄 grammar.txt
字号:
postfix_expression . pseudo_destructor_name
postfix_expression -> pseudo_destructor_name
postfix_expression ++
postfix_expression --
dynamic_cast < type_id > ( expression )
static_cast < type_id > ( expression )
reinterpret_cast < type_id > ( expression )
const_cast < type_id > ( expression )
typeid ( expression )
typeid ( type_id )
expression_list:
assignment_expression
expression_list , assignment_expression
pseudo_destructor_name:
::-opt nested_name_specifier-opt type_name :: ~ type_name
Book line ::-opt nested_name_specifier template template_id :: ~
type_name
::-opt nested_name_specifier-opt ~ type_name
unary_expression:
postfix_expression
++ cast_expression
-- cast_expression
unary_operator cast_expression
sizeof unary_expression
sizeof ( type_id )
new_expression
delete_expression
unary_operator: one of
* & + - ! ~
new_expression:
::-opt new new_placement-opt new_type_id new_initializer-opt
::-opt new new_placement-opt ( type_id ) new_initializer-opt
new_placement:
( expression_list )
new_type_id:
type_specifier_seq new_declarator-opt
new_declarator:
ptr_operator new_declarator-opt
direct_new_declarator
direct_new_declarator:
[ expression ]
direct_new_declarator [ constant_expression ]
new_initializer:
( expression_list-opt )
delete_expression:
::-opt delete cast_expression
::-opt delete [ ] cast_expression
cast_expression:
unary_expression
( type_id ) cast_expression
pm_expression:
cast_expression
pm_expression .* cast_expression
pm_expression ->* cast_expression
multiplicative_expression:
pm_expression
multiplicative_expression * pm_expression
multiplicative_expression / pm_expression
multiplicative_expression % pm_expression
additive_expression:
multiplicative_expression
additive_expression + multiplicative_expression
additive_expression - multiplicative_expression
shift_expression:
additive_expression
shift_expression << additive_expression
shift_expression >> additive_expression
relational_expression:
shift_expression
relational_expression < shift_expression
relational_expression > shift_expression
relational_expression <= shift_expression
relational_expression >= shift_expression
equality_expression:
relational_expression
equality_expression == relational_expression
equality_expression != relational_expression
and_expression:
equality_expression
and_expression & equality_expression
exclusive_or_expression:
and_expression
exclusive_or_expression ^ and_expression
inclusive_or_expression:
exclusive_or_expression
inclusive_or_expression | exclusive_or_expression
logical_and_expression:
inclusive_or_expression
logical_and_expression && inclusive_or_expression
logical_or_expression:
logical_and_expression
logical_or_expression || logical_and_expression
conditional_expression:
logical_or_expression
logical_or_expression ? expression : assignment_expression
assignment_expression:
conditional_expression
logical_or_expression assignment_operator
assignment_expression
throw_expression
assignment_operator: one of
= *= /= %= += -= >>= <<= &= ^= |=
expression:
assignment_expression
expression , assignment_expression
constant_expression:
conditional_expression
1.5 Statements [gram.stmt.stmt]
statement:
labeled_statement
expression_statement
compound_statement
selection_statement
iteration_statement
jump_statement
declaration_statement
try_block
labeled_statement:
identifier : statement
case constant_expression : statement
default : statement
expression_statement:
expression-opt ;
compound_statement:
{ statement_seq-opt }
statement_seq:
statement
statement_seq statement
selection_statement:
if ( condition ) statement
if ( condition ) statement else statement
switch ( condition ) statement
condition:
expression
type_specifier_seq declarator = assignment_expression
iteration_statement:
while ( condition ) statement
do statement while ( expression ) ;
for ( for_init_statement condition-opt ; expression-opt )
statement
for_init_statement:
expression_statement
simple_declaration
jump_statement:
break ;
continue ;
return expression-opt ;
goto identifier ;
declaration_statement:
block_declaration
1.6 Declarations [gram.dcl.dcl]
declaration_seq:
declaration
declaration_seq declaration
declaration:
block_declaration
function_definition
template_declaration
explicit_instantiation
explicit_specialization
linkage_specification
namespace_definition
block_declaration:
simple_declaration
asm_definition
namespace_alias_definition
using_declaration
using_directive
simple_declaration:
decl_specifier_seq-opt init_declarator_list-opt ;
decl_specifier_seq:
decl_specifier_seq-opt decl_specifier
decl_specifier:
storage_class_specifier
type_specifier
function_specifier
friend
typedef
storage_class_specifier:
auto
register
static
extern
mutable
function_specifier:
inline
virtual
explicit
typedef_name:
identifier
type_specifier:
simple_type_specifier
class_specifier
enum_specifier
elaborated_type_specifier
cv_qualifier
simple_type_specifier:
::-opt nested_name_specifier-opt type_name
Book line ::-opt nested_name_specifier template-opt template_id
char
wchar_t
bool
short
int
long
signed
unsigned
float
double
void
type_name:
class_name
enum_name
typedef_name
elaborated_type_specifier:
class_key ::-opt nested_name_specifier-opt identifier
Nutshell class_key ::-opt nested_name_specifier-opt template-opt
template_id
enum ::-opt nested_name_specifier-opt identifier
typename ::-opt nested_name_specifier identifier
Old line [typename ::-opt nested_name_specifier identifier < template_argument_list >]
Book line typename ::-opt nested_name_specifier template-opt template_id
enum_name:
identifier
enum_specifier:
enum identifier-opt { enumerator_list-opt }
enumerator_list:
enumerator_definition
enumerator_list , enumerator_definition
enumerator_definition:
enumerator
enumerator = constant_expression
enumerator:
identifier
namespace_name:
original_namespace_name
namespace_alias
original_namespace_name:
identifier
namespace_definition:
named_namespace_definition
unnamed_namespace_definition
named_namespace_definition:
original_namespace_definition
extension_namespace_definition
original_namespace_definition:
namespace identifier { namespace_body }
extension_namespace_definition:
namespace original_namespace_name { namespace_body }
unnamed_namespace_definition:
namespace { namespace_body }
namespace_body:
declaration_seq-opt
namespace_alias:
identifier
namespace_alias_definition:
namespace identifier = qualified_namespace_specifier ;
qualified_namespace_specifier:
::-opt nested_name_specifier-opt namespace_name
using_declaration:
using typename-opt ::-opt nested_name_specifier unqualified_id
;
using :: unqualified_id ;
using_directive:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -