📄 grammar.txt
字号:
using namespace ::-opt nested_name_specifier-opt
namespace_name ;
asm_definition:
asm ( string_literal ) ;
linkage_specification:
extern string_literal { declaration_seq-opt }
extern string_literal declaration
1.7 Declarators [gram.dcl.decl]
init_declarator_list:
init_declarator
init_declarator_list , init_declarator
init_declarator:
declarator initializer-opt
declarator:
ptr_operator declarator
direct_declarator
direct_declarator:
declarator_id
direct_declarator ( parameter_declaration_clause )
cv_qualifier_seq-opt exception_specification-opt
direct_declarator [ constant_expression-opt ]
( declarator )
ptr_operator:
* cv_qualifier_seq-opt
&
::-opt nested_name_specifier * cv_qualifier_seq-opt
cv_qualifier_seq:
cv_qualifier cv_qualifier_seq-opt
cv_qualifier:
const
volatile
declarator_id:
::-opt id_expression
::-opt nested_name_specifier-opt type_name
type_id:
type_specifier_seq abstract_declarator-opt
type_specifier_seq:
type_specifier type_specifier_seq-opt
abstract_declarator:
ptr_operator abstract_declarator-opt
direct_abstract_declarator
direct_abstract_declarator:
direct_abstract_declarator-opt ( parameter_declaration_clause
) cv_qualifier_seq-opt exception_specification-opt
direct_abstract_declarator-opt [ constant_expression-opt ]
( abstract_declarator )
parameter_declaration_clause:
parameter_declaration_list-opt ...-opt
parameter_declaration_list , ...
parameter_declaration_list:
parameter_declaration
parameter_declaration_list , parameter_declaration
parameter_declaration:
decl_specifier_seq declarator
decl_specifier_seq declarator = assignment_expression
decl_specifier_seq abstract_declarator-opt
decl_specifier_seq abstract_declarator-opt =
assignment_expression
function_definition:
decl_specifier_seq-opt declarator ctor_initializer-opt
function_body
decl_specifier_seq-opt declarator function_try_block
function_body:
compound_statement
initializer:
= initializer_clause
( expression_list )
initializer_clause:
assignment_expression
{ initializer_list ,-opt }
{ }
initializer_list:
initializer_clause
initializer_list , initializer_clause
1.8 Classes [gram.class]
class_name:
identifier
template_id
class_specifier:
class_head { member_specification-opt }
class_head:
class_key identifier-opt base_clause-opt
class_key nested_name_specifier identifier base_clause-opt
Book line class_key nested_name_specifier-opt template_id
base_clause-opt
class_key:
class
struct
union
member_specification:
member_declaration member_specification-opt
access_specifier : member_specification-opt
member_declaration:
decl_specifier_seq-opt member_declarator_list-opt ;
function_definition ;-opt
Old line [qualified_id ;] (However, see p.295 C++ In a Nutshell)
Book line ::-opt nested_name_specifier template-opt unqualified_id ;
using_declaration
template_declaration
member_declarator_list:
member_declarator
member_declarator_list , member_declarator
member_declarator:
declarator pure_specifier-opt
declarator constant_initializer-opt
identifier-opt : constant_expression
pure_specifier:
= 0
constant_initializer:
= constant_expression
1.9 Derived classes [gram.class.derived]
base_clause:
: base_specifier_list
base_specifier_list:
base_specifier
base_specifier_list , base_specifier
base_specifier:
::-opt nested_name_specifier-opt class_name
virtual access_specifier-opt ::-opt nested_name_specifier-opt
class_name
access_specifier virtual-opt ::-opt nested_name_specifier-opt
class_name
access_specifier:
private
protected
public
1.10 Special member functions [gram.special]
conversion_function_id:
operator conversion_type_id
conversion_type_id:
type_specifier_seq conversion_declarator-opt
conversion_declarator:
ptr_operator conversion_declarator-opt
ctor_initializer:
: mem_initializer_list
mem_initializer_list:
mem_initializer
mem_initializer , mem_initializer_list
mem_initializer:
mem_initializer_id ( expression_list-opt )
mem_initializer_id:
::-opt nested_name_specifier-opt class_name
identifier
1.11 Overloading [gram.over]
operator_function_id:
operator operator
operator: one of
new delete new[] delete[]
+ _ * / % ^ & | ~
! = < > += -= *= /= %=
^= &= |= << >> >>= <<= == !=
<= >= && || ++ -- , ->* ->
() []
1.12 Templates [gram.temp]
template_declaration:
export-opt template < template_parameter_list > declaration
template_parameter_list:
template_parameter
template_parameter_list , template_parameter
template_parameter:
type_parameter
parameter_declaration
type_parameter:
class identifier-opt
class identifier-opt = type_id
typename identifier-opt
typename identifier-opt = type_id
template < template_parameter_list > class identifier-opt
template < template_parameter_list > class identifier-opt =
template_name
template_id:
Old line [template_name < template_argument_list >]
Book line template_name < template_argument_list-opt >
template_name:
identifier
template_argument_list:
template_argument
template_argument_list , template_argument
template_argument:
assignment_expression
type_id
template_name
explicit_instantiation:
template declaration
explicit_specialization:
template < > declaration
1.13 Exception handling [gram.except]
try_block:
try compound_statement handler_seq
function_try_block:
try ctor_initializer-opt function_body handler_seq
handler_seq:
handler handler_seq-opt
handler:
catch ( exception_declaration ) compound_statement
exception_declaration:
type_specifier_seq declarator
type_specifier_seq abstract_declarator
type_specifier_seq
...
throw_expression:
throw assignment_expression-opt
exception_specification:
throw ( type_id_list-opt )
type_id_list:
type_id
type_id_list , type_id
1.14 Preprocessing directives [gram.cpp]
preprocessing_file:
group-opt
group:
group_part
group group_part
group_part:
pp_tokens-opt new_line
if_section
control_line
if_section:
if_group elif_groups-opt else_group-opt endif_line
if_group:
# if constant_expression new_line group-opt
# ifdef identifier new_line group-opt
# ifndef identifier new_line group-opt
elif_groups:
elif_group
elif_groups elif_group
elif_group:
# elif constant_expression new_line group-opt
else_group:
# else new_line group-opt
endif_line:
# endif new_line
control_line:
# include pp_tokens new_line
# define identifier replacement_list new_line
# define identifier lparen identifier_list-opt )
replacement_list new_line
# undef identifier new_line
# line pp_tokens new_line
# error pp_tokens-opt new_line
# pragma pp_tokens-opt new_line
# new_line
lparen:
the left_parenthesis character without preceding white_space
replacement_list:
pp_tokens-opt
pp_tokens:
preprocessing_token
pp_tokens preprocessing_token
new_line:
the new_line character
Book line identifier_list:
Book line identifier
Book line identifier_list , identifier
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -