program:
extdefs
program
::=
extdefs
?
no references
extdefs:
lang_extdef
extdefs
::=
lang_extdef
+
referenced by:
extdefs_opt
program
extdefs_opt:
extdefs
extdefs_opt
::=
extdefs
?
referenced by:
lang_extdef
_hush_warning:
_hush_warning
::=
referenced by:
lang_extdef
template_def
_warning_ok:
_warning_ok
::=
referenced by:
lang_extdef
template_def
asm_keyword:
ASM_KEYWORD
asm_keyword
::=
ASM_KEYWORD
referenced by:
lang_extdef
maybeasm
simple_stmt
lang_extdef:
__extension__
fndef
eat_saved_input
datadef
export
template_def
asm_keyword
(
STRING
)
using_decl
;
extern_lang_string
{
extdefs_opt
}
_hush_warning
fndef
_warning_ok
eat_saved_input
datadef
_warning_ok
namespace
identifier
{
extdefs_opt
}
namespace_alias
using_directive
lang_extdef
::= '__extension__'* (
fndef
eat_saved_input
|
datadef
| 'export'?
template_def
| (
asm_keyword
'('
STRING
')' |
using_decl
) ';' |
extern_lang_string
( '{'
extdefs_opt
'}' |
_hush_warning
(
fndef
_warning_ok
eat_saved_input
|
datadef
_warning_ok
) ) | 'namespace'
identifier
? '{'
extdefs_opt
'}' |
namespace_alias
|
using_directive
)
referenced by:
extdefs
namespace_alias:
namespace
identifier
=
any_id
;
namespace_alias
::= 'namespace'
identifier
'='
any_id
';'
referenced by:
lang_extdef
simple_stmt
using_decl:
using
qualified_id
::
qualified_id
unqualified_id
using_decl
::= 'using' (
qualified_id
| '::' (
qualified_id
|
unqualified_id
) )
referenced by:
component_decl_1
lang_extdef
namespace_using_decl:
using
namespace_qualifier
::
namespace_qualifier
identifier
namespace_using_decl
::= 'using' (
namespace_qualifier
| '::'
namespace_qualifier
? )
identifier
referenced by:
simple_stmt
using_directive:
using
namespace
any_id
;
using_directive
::= 'using' 'namespace'
any_id
';'
referenced by:
lang_extdef
simple_stmt
namespace_qualifier:
NSNAME
::
namespace_qualifier
::= (
NSNAME
'::' )+
referenced by:
namespace_using_decl
any_id:
::
qualified_id
unqualified_id
any_id
::= '::'? (
qualified_id
|
unqualified_id
)
referenced by:
namespace_alias
using_directive
extern_lang_string:
EXTERN_LANG_STRING
extern_lang_string
::=
EXTERN_LANG_STRING
+
referenced by:
lang_extdef
template_def
template_parm_header:
template
<
template_parm
,
>
template_parm_header
::= 'template' '<'
template_parm
( ','
template_parm
)* '>'
referenced by:
template_header
template_template_parm
template_spec_header:
template
<
>
template_spec_header
::= 'template' '<' '>'
referenced by:
template_header
template_header:
template_parm_header
template_spec_header
template_header
::=
template_parm_header
|
template_spec_header
referenced by:
component_decl_list
template_def
maybe_identifier:
identifier
maybe_identifier
::=
identifier
?
referenced by:
template_template_parm
template_type_parm
template_type_parm:
aggr
typename
maybe_identifier
template_type_parm
::= (
aggr
| 'typename' )
maybe_identifier
referenced by:
template_parm
template_template_parm:
template_parm_header
aggr
maybe_identifier
template_template_parm
::=
template_parm_header
aggr
maybe_identifier
referenced by:
template_parm
template_parm:
template_type_parm
=
type_id
parm
=
expr_no_comma_rangle
template_template_parm
=
template_arg
template_parm
::=
template_type_parm
( '='
type_id
)?
|
parm
( '='
expr_no_comma_rangle
)?
|
template_template_parm
( '='
template_arg
)?
referenced by:
template_parm_header
template_def:
template_header
__extension__
fndef
eat_saved_input
template_datadef
template_def
extern_lang_string
_hush_warning
fndef
_warning_ok
eat_saved_input
template_datadef
_warning_ok
template_def
::=
template_header
'__extension__'* (
fndef
eat_saved_input
|
template_datadef
|
template_def
|
extern_lang_string
_hush_warning
(
fndef
_warning_ok
eat_saved_input
|
template_datadef
_warning_ok
) )
referenced by:
lang_extdef
template_def
template_datadef:
nomods_initdecls
declmods
notype_initdecls
typed_declspecs
initdecls
structsp
;
template_datadef
::= (
nomods_initdecls
|
declmods
notype_initdecls
|
typed_declspecs
initdecls
|
structsp
) ';'
referenced by:
template_def
datadef:
nomods_initdecls
explicit_instantiation
declmods
notype_initdecls
typed_declspecs
initdecls
;
bad_decl
datadef
::= (
nomods_initdecls
|
explicit_instantiation
|
declmods
notype_initdecls
? |
typed_declspecs
initdecls
? )? ';'
|
bad_decl
referenced by:
lang_extdef
ctor_initializer_opt:
nodecls
base_init
ctor_initializer_opt
::=
nodecls
|
base_init
referenced by:
function_body
maybe_return_init:
return_init
;
maybe_return_init
::= (
return_init
';'? )?
referenced by:
fndef
pending_inline
eat_saved_input:
END_OF_SAVED_INPUT
eat_saved_input
::=
END_OF_SAVED_INPUT
?
referenced by:
lang_extdef
structsp
template_def
function_body:
begin_function_body_
ctor_initializer_opt
save_lineno
{
compstmtend
function_body
::=
begin_function_body_
ctor_initializer_opt
save_lineno
'{'
compstmtend
referenced by:
fndef
function_try_block
pending_inline
fndef:
fn.def1
maybe_return_init
function_body
function_try_block
fndef
::=
fn.def1
maybe_return_init
(
function_body
|
function_try_block
)
referenced by:
lang_extdef
template_def
constructor_declarator:
::
nested_name_specifier
SELFNAME
self_template_type
(
parmlist
)
LEFT_RIGHT
cv_qualifiers
exception_specification_opt
constructor_declarator
::= '::'?
nested_name_specifier
(
SELFNAME
|
self_template_type
) ( '('
parmlist
')' |
LEFT_RIGHT
)
cv_qualifiers
exception_specification_opt
referenced by:
component_decl_1
explicit_instantiation
fn.def1
fn_def2
nomods_initdcl0
notype_component_declarator0
fn.def1:
typed_declspecs
declarator
declmods
notype_declarator
constructor_declarator
fn.def1
::=
typed_declspecs
declarator
|
declmods
? (
notype_declarator
|
constructor_declarator
)
referenced by:
fndef
component_constructor_declarator:
SELFNAME
(
SELFNAME
)
self_template_type
(
parmlist
)
LEFT_RIGHT
cv_qualifiers
exception_specification_opt
component_constructor_declarator
::= (
SELFNAME
| '('
SELFNAME
')' |
self_template_type
) ( '('
parmlist
')' |
LEFT_RIGHT
)
cv_qualifiers
exception_specification_opt
referenced by:
component_decl_1
fn_def2
fn_def2:
declmods
component_constructor_declarator
notype_declarator
constructor_declarator
typed_declspecs
declarator
fn_def2
::=
declmods
? (
component_constructor_declarator
|
notype_declarator
|
constructor_declarator
)
|
typed_declspecs
declarator
referenced by:
component_decl_list
return_id:
return
IDENTIFIER
return_id
::= 'return'
IDENTIFIER
referenced by:
return_init
return_init:
return_id
maybe_init
(
nonnull_exprlist
)
LEFT_RIGHT
return_init
::=
return_id
(
maybe_init
| '('
nonnull_exprlist
')' |
LEFT_RIGHT
)
referenced by:
maybe_return_init
base_init:
:
member_init
,
member_init
base_init
::= ':'
member_init
? ( ','
member_init
)*
referenced by:
ctor_initializer_opt
begin_function_body_:
begin_function_body_
::=
referenced by:
function_body
begin_member_init:
notype_identifier
nonnested_type
typename_sub
begin_member_init
::= (
notype_identifier
|
nonnested_type
|
typename_sub
)?
referenced by:
member_init
member_init:
begin_member_init
(
nonnull_exprlist
)
LEFT_RIGHT
member_init
::=
begin_member_init
( '('
nonnull_exprlist
')' |
LEFT_RIGHT
)
referenced by:
base_init
identifier:
IDENTIFIER
tTYPENAME
SELFNAME
PTYPENAME
NSNAME
identifier
::=
IDENTIFIER
|
tTYPENAME
|
SELFNAME
|
PTYPENAME
|
NSNAME
referenced by:
any_word
apparent_template_type
asm_operand
class_head
enumerator
explicit_template_type
initlist
label_decl
lang_extdef
maybe_identifier
namespace_alias
namespace_using_decl
notype_unqualified_id
object_template_id
simple_stmt
structsp
template_arg_1
typename_sub0
unary_expr
notype_identifier:
IDENTIFIER
PTYPENAME
NSNAME
notype_identifier
::=
IDENTIFIER
|
PTYPENAME
|
NSNAME
referenced by:
begin_member_init
identifier_defn:
IDENTIFIER_DEFN
TYPENAME_DEFN
PTYPENAME_DEFN
identifier_defn
::=
IDENTIFIER_DEFN
|
TYPENAME_DEFN
|
PTYPENAME_DEFN
referenced by:
class_head_decl
class_head_defn
explicit_instantiation:
SCSPEC
template
begin_explicit_instantiation
typespec
;
typed_declspecs
declarator
notype_declarator
constructor_declarator
end_explicit_instantiation
explicit_instantiation
::=
SCSPEC
? 'template'
begin_explicit_instantiation
(
typespec
';' |
typed_declspecs
declarator
|
notype_declarator
|
constructor_declarator
)
end_explicit_instantiation
referenced by:
datadef
begin_explicit_instantiation:
begin_explicit_instantiation
::=
referenced by:
explicit_instantiation
end_explicit_instantiation:
end_explicit_instantiation
::=
referenced by:
explicit_instantiation
template_type:
PTYPENAME
tTYPENAME
<
template_arg_list_opt
template_close_bracket
finish_template_type_
self_template_type
template_type
::= (
PTYPENAME
|
tTYPENAME
) '<'
template_arg_list_opt
template_close_bracket
finish_template_type_
|
self_template_type
referenced by:
apparent_template_type
nested_name_specifier_1
notype_unqualified_id
type_name
typename_sub0
typename_sub2
apparent_template_type:
template_type
identifier
<
template_arg_list_opt
>
finish_template_type_
apparent_template_type
::=
template_type
|
identifier
'<'
template_arg_list_opt
'>'
finish_template_type_
referenced by:
class_head_apparent_template
self_template_type:
SELFNAME
<
template_arg_list_opt
template_close_bracket
finish_template_type_
self_template_type
::=
SELFNAME
'<'
template_arg_list_opt
template_close_bracket
finish_template_type_
referenced by:
component_constructor_declarator
constructor_declarator
template_type
finish_template_type_:
finish_template_type_
::=
referenced by:
apparent_template_type
self_template_type
template_type
template_close_bracket:
>
>>
template_close_bracket
::= '>'
| '>>'
referenced by:
explicit_template_type
notype_template_declarator
object_template_id
self_template_type
template_arg_list_ignore
template_id
template_type
template_arg_list_opt:
template_arg_list
template_arg_list_opt
::=
template_arg_list
?
referenced by:
apparent_template_type
explicit_template_type
notype_template_declarator
object_template_id
self_template_type
template_arg_list_ignore
template_id
template_type
template_arg_list:
template_arg
,
template_arg_list
::=
template_arg
( ','
template_arg
)*
referenced by:
notype_template_declarator
template_arg_list_opt
template_arg:
template_arg_1
template_arg
::=
template_arg_1
referenced by:
template_arg_list
template_parm
template_arg_1:
type_id
::
PTYPENAME
expr_no_comma_rangle
nested_name_specifier
template
identifier
template_arg_1
::=
type_id
| '::'?
PTYPENAME
|
expr_no_comma_rangle
|
nested_name_specifier
'template'
identifier
referenced by:
template_arg
unop:
-
+
++
--
!
unop
::= '-'
| '+'
| '++'
| '--'
| '!'
referenced by:
unary_expr
expr:
nontrivial_exprlist
expr_no_commas
expr
::=
nontrivial_exprlist
|
expr_no_commas
referenced by:
absdcl
after_type_declarator
asm_operand
complex_direct_notype_declarator
condition
new_type_id
paren_expr_or_null
primary
simple_stmt
typespec
unary_expr
xexpr
paren_expr_or_null:
LEFT_RIGHT
(
expr
)
paren_expr_or_null
::=
LEFT_RIGHT
| '('
expr
')'
referenced by:
simple_stmt
paren_cond_or_null:
LEFT_RIGHT
(
condition
)
paren_cond_or_null
::=
LEFT_RIGHT
| '('
condition
')'
referenced by:
simple_if
simple_stmt
xcond:
condition
xcond
::=
condition
?
referenced by:
simple_stmt
condition:
type_specifier_seq
declarator
maybeasm
maybe_attribute
=
init
expr
condition
::=
type_specifier_seq
declarator
maybeasm
maybe_attribute
'='
init
|
expr
referenced by:
paren_cond_or_null
simple_stmt
xcond
compstmtend:
maybe_label_decls
stmt
}
compstmtend
::= (
maybe_label_decls
stmt
+ )? '}'
referenced by:
compstmt_or_stmtexpr
for.init.statement
function_body
nontrivial_exprlist:
expr_no_commas
,
expr_no_commas
nontrivial_exprlist
::=
expr_no_commas
( ','
expr_no_commas
)+
referenced by:
expr
nonnull_exprlist
nonnull_exprlist:
expr_no_commas
nontrivial_exprlist
nonnull_exprlist
::=
expr_no_commas
|
nontrivial_exprlist
referenced by:
arg_list_ignore
attrib
functional_cast
maybe_parmlist
member_init
new_initializer
new_placement
primary
return_init
unary_expr:
sizeof
alignof
::
delete
[
expr
]
__extension__
*
&
~
unop
REALPART
IMAGPART
cast_expr
primary
&&
identifier
sizeof
alignof
(
type_id
)
new
new_placement
new_type_id
(
type_id
)
new_initializer
unary_expr
::= ( 'sizeof' |
alignof
)* (
primary
| ( '__extension__' | '*' | '&' | '~' |
unop
|
REALPART
|
IMAGPART
| '::'* 'delete' ( '['
expr
? ']' )? )
cast_expr
| '&&'
identifier
| ( 'sizeof' |
alignof
) '('
type_id
')' |
new
new_placement
? (
new_type_id
| '('
type_id
')' )
new_initializer
? )
referenced by:
cast_expr
new_placement:
(
nonnull_exprlist
)
{
nonnull_exprlist
}
new_placement
::= '('
nonnull_exprlist
')'
| '{'
nonnull_exprlist
'}'
referenced by:
unary_expr
new_initializer:
(
nonnull_exprlist
typespec
)
LEFT_RIGHT
=
init
new_initializer
::= '(' (
nonnull_exprlist
|
typespec
) ')'
|
LEFT_RIGHT
| '='
init
referenced by:
unary_expr
regcast_or_absdcl:
(
type_id
)
regcast_or_absdcl
::= ( '('
type_id
')' )+
referenced by:
absdcl
cast_expr
cast_expr:
unary_expr
regcast_or_absdcl
unary_expr
{
initlist
maybecomma
}
cast_expr
::=
unary_expr
|
regcast_or_absdcl
(
unary_expr
| '{'
initlist
maybecomma
'}' )
referenced by:
expr_no_comma_rangle
expr_no_commas
unary_expr
expr_no_commas:
cast_expr
expr_no_commas
->*
.*
+
-
*
/
%
<<
>>
ARITHCOMPARE
<
>
EQCOMPARE
MIN_MAX
&
|
^
&&
||
?
xexpr
:
=
ASSIGN
expr_no_commas
throw
expr_no_commas
expr_no_commas
::=
cast_expr
|
expr_no_commas
( '->*' | '.*' | '+' | '-' | '*' | '/' | '%' | '<<' | '>>' |
ARITHCOMPARE
| '<' | '>' |
EQCOMPARE
|
MIN_MAX
| '&' | '|' | '^' | '&&' | '||' | '?'
xexpr
':' | '=' |
ASSIGN
)
expr_no_commas
| 'throw'
expr_no_commas
?
referenced by:
after_type_component_declarator
after_type_component_declarator0
component_decl_1
defarg_again
enumerator
expr
expr_no_commas
init
initlist
nonnull_exprlist
nontrivial_exprlist
notype_component_declarator
notype_component_declarator0
primary
simple_stmt
expr_no_comma_rangle:
cast_expr
expr_no_comma_rangle
->*
.*
+
-
*
/
%
<<
>>
ARITHCOMPARE
<
EQCOMPARE
MIN_MAX
&
|
^
&&
||
?
xexpr
:
=
ASSIGN
expr_no_comma_rangle
throw
expr_no_comma_rangle
expr_no_comma_rangle
::=
cast_expr
|
expr_no_comma_rangle
( '->*' | '.*' | '+' | '-' | '*' | '/' | '%' | '<<' | '>>' |
ARITHCOMPARE
| '<' |
EQCOMPARE
|
MIN_MAX
| '&' | '|' | '^' | '&&' | '||' | '?'
xexpr
':' | '=' |
ASSIGN
)
expr_no_comma_rangle
| 'throw'
expr_no_comma_rangle
?
referenced by:
expr_no_comma_rangle
template_arg_1
template_parm
notype_unqualified_id:
~
see_typename
identifier
template_type
template_id
operator_name
IDENTIFIER
PTYPENAME
NSNAME
notype_unqualified_id
::= '~'
see_typename
(
identifier
|
template_type
)
|
template_id
|
operator_name
|
IDENTIFIER
|
PTYPENAME
|
NSNAME
referenced by:
complex_direct_notype_declarator
direct_notype_declarator
expr_or_declarator
notype_qualified_id
primary
unqualified_id
do_id:
do_id
::=
referenced by:
template_id
template_id:
PFUNCNAME
operator_name
<
do_id
template_arg_list_opt
template_close_bracket
template_id
::= (
PFUNCNAME
|
operator_name
) '<'
do_id
template_arg_list_opt
template_close_bracket
referenced by:
notype_unqualified_id
primary
object_template_id:
template
identifier
PFUNCNAME
operator_name
<
template_arg_list_opt
template_close_bracket
object_template_id
::= 'template' (
identifier
|
PFUNCNAME
|
operator_name
) '<'
template_arg_list_opt
template_close_bracket
referenced by:
notype_qualified_id
primary
qualified_id
unqualified_id:
notype_unqualified_id
tTYPENAME
SELFNAME
unqualified_id
::=
notype_unqualified_id
|
tTYPENAME
|
SELFNAME
referenced by:
any_id
primary
qualified_id
using_decl
expr_or_declarator_intern:
attributes
expr_or_declarator
expr_or_declarator_intern
::=
attributes
?
expr_or_declarator
referenced by:
direct_notype_declarator
expr_or_declarator
functional_cast
primary
expr_or_declarator:
notype_unqualified_id
*
&
expr_or_declarator_intern
(
expr_or_declarator_intern
)
expr_or_declarator
::=
notype_unqualified_id
| ( '*' | '&' )
expr_or_declarator_intern
| '('
expr_or_declarator_intern
')'
referenced by:
expr_or_declarator_intern
notype_template_declarator:
IDENTIFIER
<
template_arg_list_opt
NSNAME
<
template_arg_list
template_close_bracket
notype_template_declarator
::= (
IDENTIFIER
'<'
template_arg_list_opt
|
NSNAME
'<'
template_arg_list
)
template_close_bracket
referenced by:
complex_direct_notype_declarator
direct_notype_declarator
direct_notype_declarator:
complex_direct_notype_declarator
notype_unqualified_id
notype_template_declarator
(
expr_or_declarator_intern
)
direct_notype_declarator
::=
complex_direct_notype_declarator
|
notype_unqualified_id
|
notype_template_declarator
| '('
expr_or_declarator_intern
')'
referenced by:
complex_direct_notype_declarator
notype_declarator
primary:
notype_unqualified_id
overqualified_id
(
nonnull_exprlist
)
LEFT_RIGHT
CONSTANT
boolean_literal
STRING
VAR_FUNC_NAME
(
expr
expr_or_declarator_intern
compstmt_or_stmtexpr
__builtin_va_arg
(
expr_no_commas
,
type_id
CV_QUALIFIER
(
nonnull_exprlist
dynamic_cast
static_cast
reinterpret_cast
const_cast
<
type_id
>
(
expr
typeid
(
expr
type_id
)
this
functional_cast
::
IDENTIFIER
template_id
operator_name
object
object_template_id
unqualified_id
overqualified_id
(
nonnull_exprlist
)
LEFT_RIGHT
TYPESPEC
::
~
TYPESPEC
LEFT_RIGHT
(
nonnull_exprlist
)
LEFT_RIGHT
[
expr
]
++
--
primary
::= ( (
notype_unqualified_id
|
overqualified_id
) ( '('
nonnull_exprlist
')' |
LEFT_RIGHT
)? |
CONSTANT
|
boolean_literal
|
STRING
|
VAR_FUNC_NAME
| ( '(' (
expr
|
expr_or_declarator_intern
|
compstmt_or_stmtexpr
) | '__builtin_va_arg' '('
expr_no_commas
','
type_id
|
CV_QUALIFIER
'('
nonnull_exprlist
| ( 'dynamic_cast' | 'static_cast' | 'reinterpret_cast' | 'const_cast' ) '<'
type_id
'>' '('
expr
| 'typeid' '(' (
expr
|
type_id
) ) ')' | 'this' |
functional_cast
| '::' (
IDENTIFIER
|
template_id
|
operator_name
) |
object
( (
object_template_id
|
unqualified_id
|
overqualified_id
) ( '('
nonnull_exprlist
')' |
LEFT_RIGHT
)? | (
TYPESPEC
'::' )? '~'
TYPESPEC
LEFT_RIGHT
) ) ( '('
nonnull_exprlist
')' |
LEFT_RIGHT
| '['
expr
']' | '++' | '--' )*
referenced by:
object
unary_expr
new:
::
new
new
::= '::'? 'new'
referenced by:
unary_expr
boolean_literal:
true
false
boolean_literal
::= 'true'
| 'false'
referenced by:
primary
nodecls:
nodecls
::=
referenced by:
ctor_initializer_opt
object:
primary
.
->
object
::=
primary
( '.' | '->' )
referenced by:
primary
decl:
__extension__
typespec
initdecls
typed_declspecs
initdecls
declmods
notype_initdecls
;
decl
::= '__extension__'* (
typespec
initdecls
|
typed_declspecs
initdecls
? |
declmods
notype_initdecls
? ) ';'
referenced by:
for.init.statement
simple_stmt
declarator:
after_type_declarator
notype_declarator
declarator
::=
after_type_declarator
|
notype_declarator
referenced by:
condition
explicit_instantiation
fn.def1
fn_def2
initdcl
initdcl0
named_parm
fcast_or_absdcl:
LEFT_RIGHT
fcast_or_absdcl
::=
LEFT_RIGHT
+
referenced by:
absdcl
functional_cast
type_id:
typed_typespecs
nonempty_cv_qualifiers
absdcl
typespec
absdcl
type_id
::= (
typed_typespecs
|
nonempty_cv_qualifiers
)
absdcl
?
|
typespec
absdcl
referenced by:
ansi_raise_identifier
complex_parmlist
new_type_id
parm
parmlist
parms_comma
primary
regcast_or_absdcl
template_arg_1
template_parm
typespec
unary_expr
typed_declspecs:
typed_typespecs
typed_declspecs1
typed_declspecs
::=
typed_typespecs
|
typed_declspecs1
referenced by:
component_decl_1
component_decl_list
datadef
decl
explicit_instantiation
fn.def1
fn_def2
template_datadef
typed_declspecs1:
declmods
typespec
reserved_typespecquals
reserved_declspecs
typespec
reserved_typespecquals
reserved_declspecs
typed_declspecs1
::=
declmods
typespec
reserved_typespecquals
?
reserved_declspecs
?
|
typespec
reserved_typespecquals
?
reserved_declspecs
referenced by:
named_parm
typed_declspecs
reserved_declspecs:
SCSPEC
typespecqual_reserved
SCSPEC
reserved_declspecs
::=
SCSPEC
(
typespecqual_reserved
|
SCSPEC
)*
referenced by:
typed_declspecs1
declmods:
nonempty_cv_qualifiers
SCSPEC
CV_QUALIFIER
SCSPEC
attributes
declmods
::= (
nonempty_cv_qualifiers
|
SCSPEC
) (
CV_QUALIFIER
|
SCSPEC
|
attributes
)*
referenced by:
component_decl_1
datadef
decl
fn.def1
fn_def2
named_parm
template_datadef
typed_declspecs1
typed_typespecs:
nonempty_cv_qualifiers
typespec
reserved_typespecquals
typed_typespecs
::=
nonempty_cv_qualifiers
?
typespec
reserved_typespecquals
?
referenced by:
named_parm
type_id
type_specifier_seq
typed_declspecs
reserved_typespecquals:
typespecqual_reserved
attributes
reserved_typespecquals
::= (
typespecqual_reserved
|
attributes
)+
referenced by:
typed_declspecs1
typed_typespecs
alignof:
ALIGNOF
alignof
::=
ALIGNOF
referenced by:
unary_expr
typeof:
TYPEOF
typeof
::=
TYPEOF
referenced by:
typespec
typespec:
structsp
TYPESPEC
complete_type_name
typeof
SIGOF
(
expr
type_id
)
typespec
::=
structsp
|
TYPESPEC
|
complete_type_name
| (
typeof
|
SIGOF
) '(' (
expr
|
type_id
) ')'
referenced by:
decl
explicit_instantiation
functional_cast
named_parm
new_initializer
type_id
typed_declspecs1
typed_typespecs
typespecqual_reserved:
TYPESPEC
CV_QUALIFIER
structsp
typespecqual_reserved
::=
TYPESPEC
|
CV_QUALIFIER
|
structsp
referenced by:
reserved_declspecs
reserved_typespecquals
initdecls:
initdcl0
,
initdcl
initdecls
::=
initdcl0
( ','
initdcl
)*
referenced by:
datadef
decl
template_datadef
notype_initdecls:
notype_initdcl0
,
initdcl
notype_initdecls
::=
notype_initdcl0
( ','
initdcl
)*
referenced by:
datadef
decl
template_datadef
nomods_initdecls:
nomods_initdcl0
,
initdcl
nomods_initdecls
::=
nomods_initdcl0
( ','
initdcl
)*
referenced by:
datadef
template_datadef
maybeasm:
asm_keyword
(
STRING
)
maybeasm
::= (
asm_keyword
'('
STRING
')' )?
referenced by:
after_type_component_declarator
after_type_component_declarator0
component_decl_1
condition
initdcl
initdcl0
nomods_initdcl0
notype_component_declarator
notype_component_declarator0
notype_initdcl0
initdcl:
declarator
maybeasm
maybe_attribute
=
init
initdcl
::=
declarator
maybeasm
maybe_attribute
( '='
init
)?
referenced by:
initdecls
nomods_initdecls
notype_initdecls
initdcl0_innards:
maybe_attribute
=
init
initdcl0_innards
::=
maybe_attribute
( '='
init
)?
referenced by:
initdcl0
nomods_initdcl0
notype_initdcl0
initdcl0:
declarator
maybeasm
initdcl0_innards
initdcl0
::=
declarator
maybeasm
initdcl0_innards
referenced by:
initdecls
notype_initdcl0:
notype_declarator
maybeasm
initdcl0_innards
notype_initdcl0
::=
notype_declarator
maybeasm
initdcl0_innards
referenced by:
notype_initdecls
nomods_initdcl0:
notype_declarator
maybeasm
initdcl0_innards
constructor_declarator
maybeasm
maybe_attribute
nomods_initdcl0
::=
notype_declarator
maybeasm
initdcl0_innards
|
constructor_declarator
maybeasm
maybe_attribute
referenced by:
nomods_initdecls
maybe_attribute:
attributes
maybe_attribute
::=
attributes
?
referenced by:
after_type_component_declarator
after_type_component_declarator0
component_decl_1
condition
initdcl
initdcl0_innards
nomods_initdcl0
notype_component_declarator
notype_component_declarator0
structsp
attributes:
attribute
attributes
::=
attribute
+
referenced by:
absdcl_intern
after_type_declarator_intern
aggr
declmods
expr_or_declarator_intern
maybe_attribute
nonempty_cv_qualifiers
notype_declarator_intern
reserved_typespecquals
attribute:
ATTRIBUTE
(
(
attrib
,
)
)
attribute
::=
ATTRIBUTE
'(' '('
attrib
( ','
attrib
)* ')' ')'
referenced by:
attributes
attrib:
any_word
(
IDENTIFIER
,
nonnull_exprlist
nonnull_exprlist
)
attrib
::= (
any_word
( '(' (
IDENTIFIER
( ','
nonnull_exprlist
)? |
nonnull_exprlist
) ')' )? )?
referenced by:
attribute
any_word:
identifier
SCSPEC
TYPESPEC
CV_QUALIFIER
any_word
::=
identifier
|
SCSPEC
|
TYPESPEC
|
CV_QUALIFIER
referenced by:
attrib
maybe_init:
=
init
maybe_init
::= ( '='
init
)?
referenced by:
after_type_component_declarator
after_type_component_declarator0
component_decl_1
notype_component_declarator
notype_component_declarator0
return_init
init:
expr_no_commas
{
initlist
,
}
init
::=
expr_no_commas
| '{' (
initlist
','? )? '}'
referenced by:
condition
defarg1
initdcl
initdcl0_innards
initlist
maybe_init
new_initializer
parms
initlist:
[
expr_no_commas
]
identifier
:
init
:
identifier
,
initlist
::= ( '['
expr_no_commas
']' |
identifier
':' )?
init
( ',' (
identifier
':' )?
init
)*
referenced by:
cast_expr
init
pending_inline:
PRE_PARSED_FUNCTION_DECL
maybe_return_init
function_body
function_try_block
pending_inline
::=
PRE_PARSED_FUNCTION_DECL
maybe_return_init
(
function_body
|
function_try_block
)
referenced by:
structsp
defarg_again:
DEFARG_MARKER
expr_no_commas
END_OF_SAVED_INPUT
defarg_again
::=
DEFARG_MARKER
expr_no_commas
END_OF_SAVED_INPUT
referenced by:
structsp
structsp:
class_head_defn
maybe_base_class_list
{
component_decl_list
access_specifier
}
maybe_attribute
defarg_again
pending_inline
eat_saved_input
enum
identifier
{
enumlist_opt
}
{
enumlist_opt
}
complex_type_name
typename
typename_sub
class_head_decl
structsp
::= 'enum' (
identifier
( '{'
enumlist_opt
'}' )? | '{'
enumlist_opt
'}' |
complex_type_name
)
| 'typename'
typename_sub
|
class_head_defn
maybe_base_class_list
'{'
component_decl_list
? (
access_specifier
component_decl_list
? )* '}'
maybe_attribute
defarg_again
* (
pending_inline
eat_saved_input
)*
|
class_head_decl
referenced by:
template_datadef
typespec
typespecqual_reserved
maybecomma:
,
maybecomma
::= ','?
referenced by:
cast_expr
maybecomma_warn:
,
maybecomma_warn
::= ','?
referenced by:
enumlist_opt
aggr:
AGGR
SCSPEC
TYPESPEC
CV_QUALIFIER
AGGR
attributes
aggr
::=
AGGR
(
SCSPEC
|
TYPESPEC
|
CV_QUALIFIER
|
AGGR
|
attributes
)*
referenced by:
class_head
class_head_apparent_template
class_head_decl
class_head_defn
template_template_parm
template_type_parm
class_head:
aggr
::
nested_name_specifier
identifier
class_head
::=
aggr
'::'?
nested_name_specifier
?
identifier
referenced by:
class_head_decl
class_head_defn
class_head_apparent_template:
aggr
::
nested_name_specifier
apparent_template_type
class_head_apparent_template
::=
aggr
( '::'?
nested_name_specifier
)?
apparent_template_type
referenced by:
class_head_decl
class_head_defn
class_head_decl:
class_head
aggr
identifier_defn
class_head_apparent_template
class_head_decl
::=
class_head
|
aggr
identifier_defn
|
class_head_apparent_template
referenced by:
structsp
class_head_defn:
class_head
class_head_apparent_template
{
:
aggr
identifier_defn
{
:
{
class_head_defn
::= (
class_head
|
class_head_apparent_template
) ( '{' | ':' )
|
aggr
(
identifier_defn
( '{' | ':' ) | '{' )
referenced by:
structsp
maybe_base_class_list:
:
see_typename
base_class
see_typename
,
maybe_base_class_list
::= ( ':'
see_typename
(
base_class
( ','
see_typename
base_class
)* )? )?
referenced by:
structsp
base_class:
VISSPEC
SCSPEC
see_typename
see_typename
base_class_1
base_class
::= ( ( (
VISSPEC
|
SCSPEC
)
see_typename
)+
see_typename
)?
base_class_1
referenced by:
maybe_base_class_list
base_class_1:
typename_sub
nonnested_type
base_class_1
::=
typename_sub
|
nonnested_type
referenced by:
base_class
access_specifier:
VISSPEC
:
access_specifier
::=
VISSPEC
':'
referenced by:
structsp
component_decl_list:
__extension__
template_header
component_decl_1
;
}
fn_def2
:
try
return
{
template_header
typed_declspecs
;
bad_decl
component_decl_list
::= ( ( '__extension__' |
template_header
)* (
component_decl_1
( ';' | '}' ) |
fn_def2
( ':' | 'try' | 'return' | '{' ) | (
template_header
typed_declspecs
)? ';' |
bad_decl
) )+
referenced by:
structsp
component_decl_1:
typed_declspecs
component_declarator0
,
component_declarator
declmods
notype_component_declarator0
,
notype_component_declarator
component_constructor_declarator
maybeasm
maybe_attribute
maybe_init
notype_declarator
constructor_declarator
component_constructor_declarator
maybeasm
maybe_attribute
maybe_init
:
expr_no_commas
using_decl
component_decl_1
::=
typed_declspecs
component_declarator0
? ( ','
component_declarator
)*
|
declmods
(
notype_component_declarator0
? ( ','
notype_component_declarator
)* |
component_constructor_declarator
maybeasm
maybe_attribute
maybe_init
)
| (
notype_declarator
|
constructor_declarator
|
component_constructor_declarator
)
maybeasm
maybe_attribute
maybe_init
| ':'
expr_no_commas
|
using_decl
referenced by:
component_decl_list
component_declarator0:
after_type_component_declarator0
notype_component_declarator0
component_declarator0
::=
after_type_component_declarator0
|
notype_component_declarator0
referenced by:
component_decl_1
component_declarator:
after_type_component_declarator
notype_component_declarator
component_declarator
::=
after_type_component_declarator
|
notype_component_declarator
referenced by:
component_decl_1
after_type_component_declarator0:
after_type_declarator
maybeasm
maybe_attribute
maybe_init
tTYPENAME
:
expr_no_commas
maybe_attribute
after_type_component_declarator0
::=
after_type_declarator
maybeasm
maybe_attribute
maybe_init
|
tTYPENAME
':'
expr_no_commas
maybe_attribute
referenced by:
component_declarator0
notype_component_declarator0:
notype_declarator
constructor_declarator
maybeasm
maybe_attribute
maybe_init
IDENTIFIER
:
expr_no_commas
maybe_attribute
notype_component_declarator0
::= (
notype_declarator
|
constructor_declarator
)
maybeasm
maybe_attribute
maybe_init
|
IDENTIFIER
? ':'
expr_no_commas
maybe_attribute
referenced by:
component_decl_1
component_declarator0
after_type_component_declarator:
after_type_declarator
maybeasm
maybe_attribute
maybe_init
tTYPENAME
:
expr_no_commas
maybe_attribute
after_type_component_declarator
::=
after_type_declarator
maybeasm
maybe_attribute
maybe_init
|
tTYPENAME
':'
expr_no_commas
maybe_attribute
referenced by:
component_declarator
notype_component_declarator:
notype_declarator
maybeasm
maybe_attribute
maybe_init
IDENTIFIER
:
expr_no_commas
maybe_attribute
notype_component_declarator
::=
notype_declarator
maybeasm
maybe_attribute
maybe_init
|
IDENTIFIER
? ':'
expr_no_commas
maybe_attribute
referenced by:
component_decl_1
component_declarator
enumlist_opt:
enumerator
,
maybecomma_warn
enumlist_opt
::= (
enumerator
( ','
enumerator
)* )?
maybecomma_warn
referenced by:
structsp
enumerator:
identifier
=
expr_no_commas
enumerator
::=
identifier
( '='
expr_no_commas
)?
referenced by:
enumlist_opt
new_type_id:
type_specifier_seq
*
&
ptr_to_mem
cv_qualifiers
*
&
ptr_to_mem
cv_qualifiers
[
expr
]
(
type_id
)
[
expr
]
new_type_id
::=
type_specifier_seq
( ( ( '*' | '&' |
ptr_to_mem
)
cv_qualifiers
)* ( ( '*' | '&' |
ptr_to_mem
)
cv_qualifiers
| ( '['
expr
']' )+ ) )?
| '('
type_id
')' '['
expr
']'
referenced by:
unary_expr
cv_qualifiers:
CV_QUALIFIER
cv_qualifiers
::=
CV_QUALIFIER
*
referenced by:
absdcl
after_type_declarator
complex_direct_notype_declarator
component_constructor_declarator
constructor_declarator
new_type_id
notype_declarator
operator_name
nonempty_cv_qualifiers:
CV_QUALIFIER
attributes
nonempty_cv_qualifiers
::= (
CV_QUALIFIER
|
attributes
)+
referenced by:
absdcl
after_type_declarator
complex_direct_notype_declarator
declmods
notype_declarator
type_id
type_specifier_seq
typed_typespecs
maybe_parmlist:
(
nonnull_exprlist
parmlist
)
LEFT_RIGHT
maybe_parmlist
::= '(' (
nonnull_exprlist
|
parmlist
) ')'
|
LEFT_RIGHT
referenced by:
after_type_declarator
complex_direct_notype_declarator
after_type_declarator_intern:
attributes
after_type_declarator
after_type_declarator_intern
::=
attributes
?
after_type_declarator
referenced by:
after_type_declarator
after_type_declarator:
*
&
nonempty_cv_qualifiers
ptr_to_mem
cv_qualifiers
after_type_declarator_intern
(
after_type_declarator_intern
)
nested_name_specifier
type_name
maybe_parmlist
cv_qualifiers
exception_specification_opt
[
expr
]
after_type_declarator
::= ( ( '*' | '&' )
nonempty_cv_qualifiers
? |
ptr_to_mem
cv_qualifiers
)
after_type_declarator_intern
| ( '('
after_type_declarator_intern
')' |
nested_name_specifier
?
type_name
) (
maybe_parmlist
cv_qualifiers
exception_specification_opt
| '['
expr
? ']' )*
referenced by:
after_type_component_declarator
after_type_component_declarator0
after_type_declarator_intern
declarator
nonnested_type:
::
type_name
nonnested_type
::= '::'?
type_name
referenced by:
base_class_1
begin_member_init
complete_type_name
complete_type_name:
nonnested_type
::
nested_type
complete_type_name
::=
nonnested_type
| '::'?
nested_type
referenced by:
typespec
nested_type:
nested_name_specifier
type_name
nested_type
::=
nested_name_specifier
type_name
referenced by:
complete_type_name
complex_type_name
notype_declarator_intern:
attributes
notype_declarator
notype_declarator_intern
::=
attributes
?
notype_declarator
referenced by:
complex_direct_notype_declarator
notype_declarator
notype_declarator:
*
&
nonempty_cv_qualifiers
ptr_to_mem
cv_qualifiers
notype_declarator_intern
direct_notype_declarator
notype_declarator
::= ( ( '*' | '&' )
nonempty_cv_qualifiers
? |
ptr_to_mem
cv_qualifiers
)
notype_declarator_intern
|
direct_notype_declarator
referenced by:
bad_parm
component_decl_1
declarator
explicit_instantiation
fn.def1
fn_def2
named_parm
nomods_initdcl0
notype_component_declarator
notype_component_declarator0
notype_declarator_intern
notype_initdcl0
complex_direct_notype_declarator:
(
*
&
*
&
nonempty_cv_qualifiers
ptr_to_mem
cv_qualifiers
notype_declarator_intern
complex_direct_notype_declarator
)
direct_notype_declarator
maybe_parmlist
cv_qualifiers
exception_specification_opt
[
expr
]
notype_qualified_id
::
notype_qualified_id
notype_unqualified_id
nested_name_specifier
notype_template_declarator
complex_direct_notype_declarator
::=
direct_notype_declarator
(
maybe_parmlist
cv_qualifiers
exception_specification_opt
| '['
expr
? ']' )
| '(' ( '*' | '&' )* ( ( ( '*' | '&' )
nonempty_cv_qualifiers
|
ptr_to_mem
cv_qualifiers
)
notype_declarator_intern
|
complex_direct_notype_declarator
) ')'
|
notype_qualified_id
| '::' (
notype_qualified_id
|
notype_unqualified_id
)
|
nested_name_specifier
notype_template_declarator
referenced by:
complex_direct_notype_declarator
direct_notype_declarator
qualified_id:
nested_name_specifier
unqualified_id
object_template_id
qualified_id
::=
nested_name_specifier
(
unqualified_id
|
object_template_id
)
referenced by:
any_id
using_decl
notype_qualified_id:
nested_name_specifier
notype_unqualified_id
object_template_id
notype_qualified_id
::=
nested_name_specifier
(
notype_unqualified_id
|
object_template_id
)
referenced by:
complex_direct_notype_declarator
overqualified_id
overqualified_id:
::
notype_qualified_id
overqualified_id
::= '::'?
notype_qualified_id
referenced by:
primary
functional_cast:
typespec
(
nonnull_exprlist
expr_or_declarator_intern
)
fcast_or_absdcl
functional_cast
::=
typespec
( '(' (
nonnull_exprlist
|
expr_or_declarator_intern
) ')' |
fcast_or_absdcl
)
referenced by:
primary
type_name:
tTYPENAME
SELFNAME
template_type
type_name
::=
tTYPENAME
|
SELFNAME
|
template_type
referenced by:
after_type_declarator
complex_type_name
nested_type
nonnested_type
nested_name_specifier:
nested_name_specifier_1
nested_name_specifier_1
template
explicit_template_type
IDENTIFIER
PTYPENAME
::
nested_name_specifier
::=
nested_name_specifier_1
(
nested_name_specifier_1
| ( 'template'
explicit_template_type
|
IDENTIFIER
|
PTYPENAME
) '::' )*
referenced by:
after_type_declarator
class_head
class_head_apparent_template
complex_direct_notype_declarator
constructor_declarator
nested_type
notype_qualified_id
ptr_to_mem
qualified_id
template_arg_1
nested_name_specifier_1:
tTYPENAME
SELFNAME
NSNAME
template_type
::
nested_name_specifier_1
::= (
tTYPENAME
|
SELFNAME
|
NSNAME
|
template_type
) '::'
referenced by:
nested_name_specifier
typename_sub:
::
typename_sub0
typename_sub
::= '::'?
typename_sub0
referenced by:
base_class_1
begin_member_init
structsp
typename_sub0:
typename_sub2
typename_sub2
template
explicit_template_type
::
identifier
template_type
template
explicit_template_type
typename_sub0
::=
typename_sub2
(
typename_sub2
| 'template'?
explicit_template_type
'::' )* (
identifier
|
template_type
| 'template'?
explicit_template_type
)
referenced by:
typename_sub
typename_sub2:
tTYPENAME
SELFNAME
template_type
PTYPENAME
IDENTIFIER
NSNAME
::
typename_sub2
::= (
tTYPENAME
|
SELFNAME
|
template_type
|
PTYPENAME
|
IDENTIFIER
|
NSNAME
) '::'
referenced by:
typename_sub0
explicit_template_type:
identifier
<
template_arg_list_opt
template_close_bracket
explicit_template_type
::=
identifier
'<'
template_arg_list_opt
template_close_bracket
referenced by:
nested_name_specifier
typename_sub0
complex_type_name:
::
type_name
nested_type
nested_type
complex_type_name
::= '::' (
type_name
|
nested_type
)
|
nested_type
referenced by:
structsp
ptr_to_mem:
::
nested_name_specifier
*
ptr_to_mem
::= '::'?
nested_name_specifier
'*'
referenced by:
absdcl
after_type_declarator
complex_direct_notype_declarator
new_type_id
notype_declarator
operator_name
absdcl_intern:
attributes
absdcl
absdcl_intern
::=
attributes
?
absdcl
referenced by:
absdcl
absdcl:
*
&
nonempty_cv_qualifiers
ptr_to_mem
cv_qualifiers
absdcl_intern
(
absdcl_intern
)
complex_parmlist
)
cv_qualifiers
exception_specification_opt
regcast_or_absdcl
fcast_or_absdcl
cv_qualifiers
exception_specification_opt
[
expr
]
(
parmlist
)
LEFT_RIGHT
cv_qualifiers
exception_specification_opt
[
expr
]
absdcl
::= ( ( '*' | '&' )
nonempty_cv_qualifiers
? |
ptr_to_mem
cv_qualifiers
)
absdcl_intern
?
| ( '(' (
absdcl_intern
')' |
complex_parmlist
')'
cv_qualifiers
exception_specification_opt
) | (
regcast_or_absdcl
|
fcast_or_absdcl
)
cv_qualifiers
exception_specification_opt
| '['
expr
? ']' ) ( ( '('
parmlist
')' |
LEFT_RIGHT
)
cv_qualifiers
exception_specification_opt
| '['
expr
? ']' )*
referenced by:
absdcl_intern
named_parm
type_id
maybe_label_decls:
label_decl
maybe_label_decls
::=
label_decl
*
referenced by:
compstmtend
label_decl:
__label__
identifier
,
;
label_decl
::= '__label__'
identifier
( ','
identifier
)* ';'
referenced by:
maybe_label_decls
compstmt_or_stmtexpr:
save_lineno
{
compstmtend
compstmt_or_stmtexpr
::=
save_lineno
'{'
compstmtend
referenced by:
compstmt
primary
compstmt:
compstmt_or_stmtexpr
compstmt
::=
compstmt_or_stmtexpr
referenced by:
handler
implicitly_scoped_stmt
stmt
try_block
simple_if:
if
paren_cond_or_null
implicitly_scoped_stmt
simple_if
::= 'if'
paren_cond_or_null
implicitly_scoped_stmt
referenced by:
simple_stmt
implicitly_scoped_stmt:
compstmt
save_lineno
simple_stmt
implicitly_scoped_stmt
::=
compstmt
|
save_lineno
simple_stmt
referenced by:
simple_if
simple_stmt
stmt:
compstmt
save_lineno
simple_stmt
stmt
::=
compstmt
|
save_lineno
simple_stmt
referenced by:
compstmtend
simple_stmt
simple_stmt:
decl
return
expr
do
implicitly_scoped_stmt
while
paren_expr_or_null
break
continue
goto
*
expr
identifier
asm_keyword
maybe_cv_qualifier
(
STRING
::
asm_operands
:
asm_clobbers
:
asm_operands
::
asm_clobbers
:
asm_operands
:
asm_clobbers
)
;
simple_if
else
implicitly_scoped_stmt
while
paren_cond_or_null
for
(
for.init.statement
xcond
;
xexpr
switch
(
condition
)
implicitly_scoped_stmt
case
expr_no_commas
...
expr_no_commas
default
:
stmt
label_colon
stmt
}
try_block
using_directive
namespace_using_decl
namespace_alias
simple_stmt
::=
decl
| ( 'return'?
expr
? | 'do'
implicitly_scoped_stmt
'while'
paren_expr_or_null
| 'break' | 'continue' | 'goto' ( '*'
expr
|
identifier
) |
asm_keyword
maybe_cv_qualifier
'('
STRING
( '::'
asm_operands
( ':'
asm_clobbers
)? | ':'
asm_operands
( '::'
asm_clobbers
| ':'
asm_operands
( ':'
asm_clobbers
)? )? )? ')' ) ';'
|
simple_if
( 'else'
implicitly_scoped_stmt
)?
| ( 'while'
paren_cond_or_null
| ( 'for' '('
for.init.statement
xcond
';'
xexpr
| 'switch' '('
condition
) ')' )
implicitly_scoped_stmt
| ( 'case'
expr_no_commas
( '...'
expr_no_commas
)? | 'default' ) ':'
stmt
|
label_colon
(
stmt
| '}' )
|
try_block
|
using_directive
|
namespace_using_decl
|
namespace_alias
referenced by:
implicitly_scoped_stmt
stmt
function_try_block:
try
function_body
handler_seq
function_try_block
::= 'try'
function_body
handler_seq
referenced by:
fndef
pending_inline
try_block:
try
compstmt
handler_seq
try_block
::= 'try'
compstmt
handler_seq
referenced by:
simple_stmt
handler_seq:
handler
handler
handler_seq
::=
handler
?
handler
*
referenced by:
function_try_block
try_block
handler:
catch
handler_args
compstmt
handler
::= 'catch'
handler_args
compstmt
referenced by:
handler_seq
type_specifier_seq:
typed_typespecs
nonempty_cv_qualifiers
type_specifier_seq
::=
typed_typespecs
|
nonempty_cv_qualifiers
referenced by:
condition
new_type_id
operator_name
handler_args:
(
...
parm
)
handler_args
::= '(' ( '...' |
parm
) ')'
referenced by:
handler
label_colon:
IDENTIFIER
PTYPENAME
tTYPENAME
SELFNAME
:
label_colon
::= (
IDENTIFIER
|
PTYPENAME
|
tTYPENAME
|
SELFNAME
) ':'
referenced by:
simple_stmt
for.init.statement:
xexpr
;
decl
{
compstmtend
for.init.statement
::=
xexpr
';'
|
decl
| '{'
compstmtend
referenced by:
simple_stmt
maybe_cv_qualifier:
CV_QUALIFIER
maybe_cv_qualifier
::=
CV_QUALIFIER
?
referenced by:
simple_stmt
xexpr:
expr
xexpr
::=
expr
?
referenced by:
expr_no_comma_rangle
expr_no_commas
for.init.statement
simple_stmt
asm_operands:
asm_operand
,
asm_operands
::= (
asm_operand
( ','
asm_operand
)* )?
referenced by:
simple_stmt
asm_operand:
[
identifier
]
STRING
(
expr
)
asm_operand
::= ( '['
identifier
']' )?
STRING
'('
expr
')'
referenced by:
asm_operands
asm_clobbers:
STRING
,
asm_clobbers
::=
STRING
( ','
STRING
)*
referenced by:
simple_stmt
parmlist:
complex_parmlist
type_id
parmlist
::= (
complex_parmlist
|
type_id
)?
referenced by:
absdcl
component_constructor_declarator
constructor_declarator
maybe_parmlist
complex_parmlist:
parms
...
:
parms_comma
...
type_id
...
:
complex_parmlist
::=
parms
( '...' | ':' )?
|
parms_comma
? '...'
|
type_id
( '...' | ':' )
referenced by:
absdcl
parmlist
defarg:
=
defarg1
defarg
::= '='
defarg1
referenced by:
full_parm
parms
defarg1:
DEFARG
init
defarg1
::=
DEFARG
|
init
referenced by:
defarg
parms:
named_parm
parm
defarg
parms_comma
full_parm
bad_parm
=
init
parms
::=
named_parm
|
parm
defarg
|
parms_comma
(
full_parm
|
bad_parm
( '='
init
)? )
referenced by:
complex_parmlist
parms_comma
parms_comma:
parms
type_id
,
parms_comma
::= (
parms
|
type_id
) ','
referenced by:
complex_parmlist
parms
named_parm:
typed_declspecs1
declarator
absdcl
typed_typespecs
typespec
declarator
declmods
notype_declarator
named_parm
::=
typed_declspecs1
(
declarator
|
absdcl
)?
| (
typed_typespecs
|
typespec
)
declarator
|
declmods
notype_declarator
referenced by:
parm
parms
full_parm:
parm
defarg
full_parm
::=
parm
defarg
?
referenced by:
parms
parm:
named_parm
type_id
parm
::=
named_parm
|
type_id
referenced by:
full_parm
handler_args
parms
template_parm
see_typename:
see_typename
::=
referenced by:
base_class
maybe_base_class_list
notype_unqualified_id
bad_parm:
notype_declarator
bad_parm
::=
notype_declarator
?
referenced by:
parms
bad_decl:
IDENTIFIER
template_arg_list_ignore
IDENTIFIER
arg_list_ignore
;
bad_decl
::=
IDENTIFIER
template_arg_list_ignore
IDENTIFIER
arg_list_ignore
';'
referenced by:
component_decl_list
datadef
template_arg_list_ignore:
<
template_arg_list_opt
template_close_bracket
template_arg_list_ignore
::= ( '<'
template_arg_list_opt
template_close_bracket
)?
referenced by:
bad_decl
arg_list_ignore:
(
nonnull_exprlist
)
arg_list_ignore
::= ( '('
nonnull_exprlist
')' )?
referenced by:
bad_decl
exception_specification_opt:
throw
(
ansi_raise_identifier
,
)
LEFT_RIGHT
exception_specification_opt
::= ( 'throw' ( '('
ansi_raise_identifier
( ','
ansi_raise_identifier
)* ')' |
LEFT_RIGHT
) )?
referenced by:
absdcl
after_type_declarator
complex_direct_notype_declarator
component_constructor_declarator
constructor_declarator
ansi_raise_identifier:
type_id
ansi_raise_identifier
::=
type_id
referenced by:
exception_specification_opt
unoperator:
unoperator
::=
referenced by:
operator_name
operator_name:
operator
*
/
%
+
-
&
|
^
~
,
ARITHCOMPARE
<
>
EQCOMPARE
ASSIGN
=
<<
>>
++
--
&&
||
!
?
:
MIN_MAX
->
->*
LEFT_RIGHT
[
]
type_specifier_seq
*
&
ptr_to_mem
cv_qualifiers
new
delete
[
]
unoperator
operator_name
::= 'operator' ( '*' | '/' | '%' | '+' | '-' | '&' | '|' | '^' | '~' | ',' |
ARITHCOMPARE
| '<' | '>' |
EQCOMPARE
|
ASSIGN
| '=' | '<<' | '>>' | '++' | '--' | '&&' | '||' | '!' | '?' ':' |
MIN_MAX
| '->' | '->*' |
LEFT_RIGHT
| '[' ']' |
type_specifier_seq
( ( '*' | '&' |
ptr_to_mem
)
cv_qualifiers
)* | ( 'new' | 'delete' ) ( '[' ']' )? )
unoperator
referenced by:
notype_unqualified_id
object_template_id
primary
template_id
save_lineno:
save_lineno
::=
referenced by:
compstmt_or_stmtexpr
function_body
implicitly_scoped_stmt
stmt
COMPLEX:
_Complex
__complex
__complex__
COMPLEX
::= '_Complex'
| '__complex'
| '__complex__'
no references
ALIGNOF:
__alignof
__alignof__
ALIGNOF
::= '__alignof'
| '__alignof__'
referenced by:
alignof
ASM_KEYWORD:
__asm
__asm__
asm
ASM_KEYWORD
::= '__asm'
| '__asm__'
| 'asm'
referenced by:
asm_keyword
ATTRIBUTE:
__attribute
__attribute__
ATTRIBUTE
::= '__attribute'
| '__attribute__'
referenced by:
attribute
CONST:
__const
__const__
const
CONST
::= '__const'
| '__const__'
| 'const'
no references
IMAGPART:
__imag
__imag__
IMAGPART
::= '__imag'
| '__imag__'
referenced by:
unary_expr
INLINE:
__inline
__inline__
inline
INLINE
::= '__inline'
| '__inline__'
| 'inline'
no references
REALPART:
__real
__real__
REALPART
::= '__real'
| '__real__'
referenced by:
unary_expr
RESTRICT:
__restrict
__restrict__
RESTRICT
::= '__restrict'
| '__restrict__'
no references
SIGNED:
__signed
__signed__
signed
SIGNED
::= '__signed'
| '__signed__'
| 'signed'
no references
TYPEOF:
__typeof
__typeof__
typeof
TYPEOF
::= '__typeof'
| '__typeof__'
| 'typeof'
referenced by:
typeof
VOLATILE:
__volatile
__volatile__
volatile
VOLATILE
::= '__volatile'
| '__volatile__'
| 'volatile'
no references
LEFT_RIGHT:
(
)
LEFT_RIGHT
::= '(' ')'
referenced by:
absdcl
component_constructor_declarator
constructor_declarator
exception_specification_opt
fcast_or_absdcl
maybe_parmlist
member_init
new_initializer
operator_name
paren_cond_or_null
paren_expr_or_null
primary
return_init
... generated by
RR - Railroad Diagram Generator
R
R