goal-symbol:
Y_EXPRESSION_SPECIAL
expression
type-specifier-seq
declaring-declarator
initializer
Y_EXPR_DECL_SPECIAL
expr-decl-stmt
Y_FUNCTION_DECL_SPECIAL
decl-specifier-seq
declarator
ctor-declarator
declarator
might-restart-declarations
Y_EXCEPTION_SPECIAL
exception-declaration
Y_MEM_INIT_SPECIAL
mem-initializer
,
{
Y_DEFARG_SPECIAL
assignment-expression
Y_TEMPLATE_INT_DEFARG_SPECIAL
logical-or-expression
Y_TEMPLATE_TYPE_DEFARG_SPECIAL
expect-type-id
type-id
Y_DEFARG_END
Y_CLASS_INST_SPECIAL
class-specifier
}
goal-symbol
::= (
Y_EXPRESSION_SPECIAL
(
expression
|
type-specifier-seq
declaring-declarator
initializer
) |
Y_EXPR_DECL_SPECIAL
expr-decl-stmt
|
Y_FUNCTION_DECL_SPECIAL
(
decl-specifier-seq
(
declarator
|
ctor-declarator
) |
declarator
) |
might-restart-declarations
|
Y_EXCEPTION_SPECIAL
exception-declaration
|
Y_MEM_INIT_SPECIAL
mem-initializer
( ','
mem-initializer
)* '{' | (
Y_DEFARG_SPECIAL
assignment-expression
|
Y_TEMPLATE_INT_DEFARG_SPECIAL
logical-or-expression
|
Y_TEMPLATE_TYPE_DEFARG_SPECIAL
expect-type-id
type-id
)
Y_DEFARG_END
|
Y_CLASS_INST_SPECIAL
class-specifier
| '}' )?
no references
expect-string-literal:
expect-string-literal
::=
referenced by:
asm-definition
based-expression
postfix-expression
static_assert-declaration
expect-identifier:
expect-identifier
::=
referenced by:
namespace-alias-definition
namespace-key
expect-id-expression:
expect-id-expression
::=
referenced by:
postfix-expression
expect-type-name:
expect-type-name
::=
referenced by:
pseudo-destructor-name
unqualified-id
expect-type-id:
expect-type-id
::=
referenced by:
cast-expression
exception-specification
goal-symbol
postfix-expression
expect-qualified-namespace-specifier:
expect-qualified-namespace-specifier
::=
referenced by:
namespace-alias-definition
using-directive
lt-special-init:
lt-special-init
::=
referenced by:
lt-special
lt-special:
lt-special-init
<
lt-special
::=
lt-special-init
'<'
referenced by:
postfix-expression
scoped-template-id
scoped-template-type-instantiation
template-declaration-start
template-id
template-scoped-template-type-instantiation
template-scoped-unqualified-id
template-type-instantiation
expr-decl-stmt:
expression-before-semicolon
;
local-declaration
expr-decl-stmt
::=
expression-before-semicolon
';'
|
local-declaration
referenced by:
goal-symbol
expression-before-semicolon:
expression
expression-before-semicolon
::=
expression
referenced by:
expr-decl-stmt
access-declaration:
qualified-id
qualified-type-specifier
Y_SCOPED_UNKNOWN_ID
nested-name-specifier
Y_TEMPLATE_SCOPED_UNKNOWN_ID
access-declaration
::=
qualified-id
|
qualified-type-specifier
|
Y_SCOPED_UNKNOWN_ID
|
nested-name-specifier
Y_TEMPLATE_SCOPED_UNKNOWN_ID
referenced by:
member-declaration
identifier:
Y_ID
Y_UNKNOWN_ID
Y_TEMPLATE_ID
identifier
::=
Y_ID
|
Y_UNKNOWN_ID
|
Y_TEMPLATE_ID
referenced by:
based-expression
mem-initializer
pseudo-destructor-name
unqualified-id
literal:
Y_CONSTANT
string-literal
boolean-literal
nullptr
literal
::=
Y_CONSTANT
|
string-literal
|
boolean-literal
| 'nullptr'
referenced by:
primary-expression
string-literal:
Y_STRING
string-literal
::=
Y_STRING
+
referenced by:
asm-definition
based-expression
linkage-id
literal
postfix-expression
pragma-id
static_assert-declaration
boolean-literal:
true
false
boolean-literal
::= 'true'
| 'false'
referenced by:
literal
primary-expression:
literal
this
(
expression
)
id-expression
primary-expression
::=
literal
| 'this'
| '('
expression
')'
|
id-expression
referenced by:
postfix-expression
id-expression:
unqualified-id
qualified-id
id-expression
::=
unqualified-id
|
qualified-id
referenced by:
declarator-id
decltype-specifier
postfix-expression
primary-expression
unqualified-id:
identifier
operator-function-id
conversion-function-id
~
expect-type-name
Y_TYPE_NAME
Y_UNKNOWN_ID
template-type
template-id
unqualified-id
::=
identifier
|
operator-function-id
|
conversion-function-id
| '~'
expect-type-name
(
Y_TYPE_NAME
|
Y_UNKNOWN_ID
|
template-type
)
|
template-id
referenced by:
id-expression
qualified-id:
nested-name-specifier
template-scoped-unqualified-id
Y_GLOBAL_ID
Y_GLOBAL_TEMPLATE_ID
Y_SCOPED_ID
Y_SCOPED_TEMPLATE_ID
scoped-operator-function-id
scoped-conversion-function-id
scoped-template-id
pseudo-destructor-name
qualified-id
::=
nested-name-specifier
template-scoped-unqualified-id
|
Y_GLOBAL_ID
|
Y_GLOBAL_TEMPLATE_ID
|
Y_SCOPED_ID
|
Y_SCOPED_TEMPLATE_ID
|
scoped-operator-function-id
|
scoped-conversion-function-id
|
scoped-template-id
|
pseudo-destructor-name
referenced by:
access-declaration
id-expression
using-declaration
nested-name-specifier:
template-type
scoped-template-type
template-scoped-template-type
nested-name-specifier
::= (
template-type
|
scoped-template-type
)
template-scoped-template-type
*
referenced by:
access-declaration
class-name
declarator-id
new-declarator
pseudo-destructor-name
ptr-operator
qualified-class-type
qualified-id
qualified-type-specifier
template-class-directive-extern
template-class-directive-instantiate
typename-specifier
template-scoped-unqualified-id:
Y_TEMPLATE_SCOPED_ID
Y_TEMPLATE_SCOPED_TEMPLATE_ID
lt-special
template-argument-list-opt
Y_GT_SPECIAL
Y_TEMPLATE_SCOPED_TEMPLATE_NAME
lt-special
template-argument-list-opt
Y_GT_SPECIAL
template-scoped-operator-function-id
template-scoped-conversion-function-id
template-scoped-unqualified-id
::=
Y_TEMPLATE_SCOPED_ID
|
Y_TEMPLATE_SCOPED_TEMPLATE_ID
(
lt-special
template-argument-list-opt
Y_GT_SPECIAL
)?
|
Y_TEMPLATE_SCOPED_TEMPLATE_NAME
lt-special
template-argument-list-opt
Y_GT_SPECIAL
|
template-scoped-operator-function-id
|
template-scoped-conversion-function-id
referenced by:
qualified-id
postfix-expression:
primary-expression
simple-type-specifier
typename-specifier
(
expression-list-opt
dynamic_cast
static_cast
reinterpret_cast
const_cast
lt-special
expect-type-id
type-id
Y_GT_SPECIAL
(
expression
___segname
(
expect-string-literal
string-literal
Y_TYPEID
(
expression
type-id
)
postfix-expression-before-dot
.
postfix-expression-before-arrow
->
expect-id-expression
id-expression
[
expression
]
(
expression-list-opt
)
++
--
postfix-expression
::= (
primary-expression
| ( (
simple-type-specifier
|
typename-specifier
) '('
expression-list-opt
| ( 'dynamic_cast' | 'static_cast' | 'reinterpret_cast' | 'const_cast' )
lt-special
expect-type-id
type-id
Y_GT_SPECIAL
'('
expression
| '___segname' '('
expect-string-literal
string-literal
|
Y_TYPEID
'(' (
expression
|
type-id
) ) ')' | (
postfix-expression-before-dot
'.' |
postfix-expression-before-arrow
'->' )
expect-id-expression
id-expression
) ( '['
expression
']' | '('
expression-list-opt
')' | '++' | '--' )*
referenced by:
cast-expression
postfix-expression-before-arrow
postfix-expression-before-dot
postfix-expression-before-dot:
postfix-expression
postfix-expression-before-dot
::=
postfix-expression
referenced by:
postfix-expression
postfix-expression-before-arrow:
postfix-expression
postfix-expression-before-arrow
::=
postfix-expression
referenced by:
postfix-expression
expression-list-opt:
expression-list
expression-list-opt
::=
expression-list
?
referenced by:
mem-initializer
postfix-expression
expression-list:
assignment-expression
,
expression-list
::=
assignment-expression
( ','
assignment-expression
)*
referenced by:
comma-init-declarator
expression-list-opt
init-declarator
new-initializer
new-placement
ptr-mod-init-declarator
pseudo-destructor-name:
Y_SCOPED_TILDE
expect-type-name
identifier
Y_TYPE_NAME
nested-name-specifier
Y_TEMPLATE_SCOPED_TILDE
expect-type-name
Y_ID
Y_UNKNOWN_ID
Y_TEMPLATE_NAME
Y_TYPE_NAME
pseudo-destructor-name
::=
Y_SCOPED_TILDE
expect-type-name
(
identifier
|
Y_TYPE_NAME
)
|
nested-name-specifier
Y_TEMPLATE_SCOPED_TILDE
expect-type-name
(
Y_ID
|
Y_UNKNOWN_ID
|
Y_TEMPLATE_NAME
|
Y_TYPE_NAME
)
referenced by:
qualified-id
unary-operator:
*
&
+
-
!
~
unary-operator
::= '*'
| '&'
| '+'
| '-'
| '!'
| '~'
referenced by:
cast-expression
new-expression:
new-keyword
new-modifier-opt
new-placement
new-type-id
(
special-new-type-id
)
new-initializer-opt
new-expression
::=
new-keyword
new-modifier-opt
new-placement
? (
new-type-id
| '('
special-new-type-id
')' )
new-initializer-opt
referenced by:
cast-expression
new-keyword:
new
::new
new-keyword
::= 'new'
| '::new'
referenced by:
new-expression
new-modifier-opt:
modifier
new-modifier-opt
::=
modifier
?
referenced by:
new-expression
new-placement:
(
expression-list
)
new-placement
::= '('
expression-list
')'
referenced by:
new-expression
new-type-id:
dynamic-type-id
(
special-new-type-id
)
new-type-id
::=
dynamic-type-id
| '('
special-new-type-id
')'
referenced by:
new-expression
new-initializer-opt:
new-initializer
new-initializer-opt
::=
new-initializer
?
referenced by:
new-expression
new-initializer:
(
expression-list
)
new-initializer
::= '('
expression-list
? ')'
referenced by:
new-initializer-opt
dynamic-type-id:
type-specifier-seq
new-declarator
dynamic-type-id
::=
type-specifier-seq
new-declarator
?
referenced by:
new-type-id
new-declarator:
*
Y_SCOPED_TIMES
nested-name-specifier
Y_TEMPLATE_SCOPED_TIMES
cv-qualifier-seq-opt
direct-new-declarator
direct-new-declarator
new-declarator
::= ( ( '*' |
Y_SCOPED_TIMES
|
nested-name-specifier
Y_TEMPLATE_SCOPED_TIMES
)
cv-qualifier-seq-opt
)+
direct-new-declarator
?
|
direct-new-declarator
referenced by:
dynamic-type-id
delete-expression:
delete-keyword
[
delete-size-expression-opt
]
cast-expression
delete-expression
::=
delete-keyword
( '['
delete-size-expression-opt
']' )?
cast-expression
referenced by:
cast-expression
delete-keyword:
delete
::delete
delete-keyword
::= 'delete'
| '::delete'
referenced by:
delete-expression
delete-size-expression-opt:
expression
delete-size-expression-opt
::=
expression
?
referenced by:
delete-expression
cast-expression:
(
type-id
)
sizeof
postfix-expression
++
--
unary-operator
cast-expression
sizeof
(
type-id
)
Y_TYPE_NAME
new-expression
delete-expression
Y___BUILTIN_ISFLOAT
(
expect-type-id
type-id
__offsetof
(
expect-type-id
type-id
,
make-id
offsetof-index
.
)
cast-expression
::= ( '('
type-id
')' )* 'sizeof'* (
postfix-expression
| ( '++' | '--' |
unary-operator
)
cast-expression
| 'sizeof' ( '('
type-id
')' |
Y_TYPE_NAME
) |
new-expression
|
delete-expression
| (
Y___BUILTIN_ISFLOAT
'('
expect-type-id
type-id
| '__offsetof' '('
expect-type-id
type-id
','
make-id
offsetof-index
? ( '.'
make-id
offsetof-index
? )* ) ')' )
referenced by:
cast-expression
delete-expression
segment-expression
segment-expression:
cast-expression
Y_SEG_OP
segment-expression
::=
cast-expression
(
Y_SEG_OP
cast-expression
)*
referenced by:
pm-expression
pm-expression:
segment-expression
.*
->*
pm-expression
::=
segment-expression
( ( '.*' | '->*' )
segment-expression
)*
referenced by:
multiplicative-expression
multiplicative-expression:
pm-expression
*
/
%
multiplicative-expression
::=
pm-expression
( ( '*' | '/' | '%' )
pm-expression
)*
referenced by:
additive-expression
additive-expression:
multiplicative-expression
+
-
additive-expression
::=
multiplicative-expression
( ( '+' | '-' )
multiplicative-expression
)*
referenced by:
shift-expression
shift-expression:
additive-expression
>>
<<
shift-expression
::=
additive-expression
( ( '>>' | '<<' )
additive-expression
)*
referenced by:
relational-expression
relational-expression:
shift-expression
<
<=
>
>=
relational-expression
::=
shift-expression
( ( '<' | '<=' | '>' | '>=' )
shift-expression
)*
referenced by:
equality-expression
equality-expression:
relational-expression
==
!=
equality-expression
::=
relational-expression
( ( '==' | '!=' )
relational-expression
)*
referenced by:
and-expression
and-expression:
equality-expression
&
and-expression
::=
equality-expression
( '&'
equality-expression
)*
referenced by:
exclusive-or-expression
exclusive-or-expression:
and-expression
^
exclusive-or-expression
::=
and-expression
( '^'
and-expression
)*
referenced by:
inclusive-or-expression
inclusive-or-expression:
exclusive-or-expression
|
inclusive-or-expression
::=
exclusive-or-expression
( '|'
exclusive-or-expression
)*
referenced by:
logical-and-expression
logical-and-expression:
inclusive-or-expression
&&
logical-and-expression
::=
inclusive-or-expression
( '&&'
inclusive-or-expression
)*
referenced by:
logical-or-expression
logical-or-expression:
logical-and-expression
||
logical-or-expression
::=
logical-and-expression
( '||'
logical-and-expression
)*
referenced by:
assignment-expression
conditional-expression
goal-symbol
conditional-expression:
logical-or-expression
?
expression
:
assignment-expression
conditional-expression
::=
logical-or-expression
( '?'
expression
':'
assignment-expression
)?
referenced by:
assignment-expression
constant-expression
assignment-expression:
logical-or-expression
assignment-operator
conditional-expression
throw
assignment-expression-opt
assignment-expression
::= (
logical-or-expression
assignment-operator
)* (
conditional-expression
| 'throw'
assignment-expression-opt
)
referenced by:
assignment-expression-opt
braced-initializer
conditional-expression
defarg-parse-or-copy
expression
expression-list
goal-symbol
initializer
template-argument
assignment-expression-opt:
assignment-expression
assignment-expression-opt
::=
assignment-expression
?
referenced by:
assignment-expression
assignment-operator:
=
*=
/=
%=
+=
-=
<<=
>>=
|=
&=
^=
assignment-operator
::= '='
| '*='
| '/='
| '%='
| '+='
| '-='
| '<<='
| '>>='
| '|='
| '&='
| '^='
referenced by:
assignment-expression
expression:
assignment-expression
,
expression
::=
assignment-expression
( ','
assignment-expression
)*
referenced by:
conditional-expression
decltype-specifier
delete-size-expression-opt
direct-new-declarator
expression-before-semicolon
goal-symbol
postfix-expression
primary-expression
special-new-direct-abstract-declarator
typeof-specifier
constant-expression:
conditional-expression
constant-expression
::=
conditional-expression
referenced by:
constant-initializer
direct-abstract-declarator
direct-declarator
direct-new-declarator
enumerator-definition
member-declarator
offsetof-index
special-new-direct-abstract-declarator
static_assert-declaration
offsetof-index:
[
constant-expression
]
offsetof-index
::= ( '['
constant-expression
']' )+
referenced by:
cast-expression
direct-new-declarator:
[
expression
]
constant-expression
[
direct-new-declarator
::= '['
expression
']' ( '['
constant-expression
']' )*
referenced by:
new-declarator
make-id:
Y_ID
Y_UNKNOWN_ID
Y_TEMPLATE_ID
Y_TYPE_NAME
Y_TEMPLATE_NAME
Y_NAMESPACE_NAME
make-id
::=
Y_ID
|
Y_UNKNOWN_ID
|
Y_TEMPLATE_ID
|
Y_TYPE_NAME
|
Y_TEMPLATE_NAME
|
Y_NAMESPACE_NAME
referenced by:
cast-expression
declarator-id
elaborated-type-specifier
enum-key
enumerator
ms-specific-declspec
namespace-alias-definition
namespace-key
type-parameter-no-defarg
declaration:
block-declaration-before-semicolon
;
function-definition
template-declaration
explicit-instantiation
linkage-specification
namespace-definition
declaration
::=
block-declaration-before-semicolon
? ';'
|
function-definition
|
template-declaration
|
explicit-instantiation
|
linkage-specification
|
namespace-definition
referenced by:
might-restart-declarations
block-declaration-before-semicolon:
block-declaration
block-declaration-before-semicolon
::=
block-declaration
referenced by:
declaration
explicit-instantiation
local-declaration
simple-template-declaration-before-semicolon
block-declaration:
simple-declaration
asm-definition
namespace-alias-definition
using-declaration
using-directive
static_assert-declaration
block-declaration
::=
simple-declaration
|
asm-definition
|
namespace-alias-definition
|
using-declaration
|
using-directive
|
static_assert-declaration
referenced by:
block-declaration-before-semicolon
simple-declaration:
decl-specifier-seq
init-declarator
,
comma-init-declarator
no-declarator-declaration
simple-declaration
::=
decl-specifier-seq
init-declarator
( ','
comma-init-declarator
)*
|
no-declarator-declaration
referenced by:
block-declaration
static_assert-declaration:
static_assert
(
constant-expression
,
expect-string-literal
string-literal
)
static_assert-declaration
::= 'static_assert' '('
constant-expression
','
expect-string-literal
string-literal
')'
referenced by:
block-declaration
member-declaration
decl-specifier-seq:
non-type-decl-specifier
type-specifier
maybe-type-decl-specifier-seq
type-specifier
maybe-type-decl-specifier-seq
decl-specifier-seq
::=
non-type-decl-specifier
+ (
type-specifier
maybe-type-decl-specifier-seq
? )?
|
type-specifier
maybe-type-decl-specifier-seq
?
referenced by:
arg-decl-specifier-seq
function-declaration
goal-symbol
no-declarator-declaration
simple-declaration
simple-member-declaration
type-specifier-seq
maybe-type-decl-specifier-seq:
non-type-decl-specifier
basic-type-specifier
maybe-type-decl-specifier-seq
::= (
non-type-decl-specifier
|
basic-type-specifier
)+
referenced by:
decl-specifier-seq
non-type-decl-specifier:
storage-class-specifier
function-specifier
cv-qualifier
ms-specific-declspec
friend
non-type-decl-specifier
::=
storage-class-specifier
|
function-specifier
|
cv-qualifier
|
ms-specific-declspec
| 'friend'
referenced by:
decl-specifier-seq
maybe-type-decl-specifier-seq
ms-specific-declspec:
__declspec
(
make-id
pragma-modifier
)
ms-specific-declspec
::= '__declspec' '(' (
make-id
|
pragma-modifier
)* ')'
referenced by:
class-mod
non-type-decl-specifier
storage-class-specifier:
auto
register
static
extern
linkage-id
mutable
typedef
storage-class-specifier
::= 'auto'
| 'register'
| 'static'
| 'extern'
linkage-id
?
| 'mutable'
| 'typedef'
referenced by:
non-type-decl-specifier
function-specifier:
inline
virtual
explicit
__inline
function-specifier
::= 'inline'
| 'virtual'
| 'explicit'
| '__inline'
referenced by:
non-type-decl-specifier
type-specifier:
simple-type-specifier
class-specifier
enum-specifier
elaborated-type-specifier
typename-specifier
type-specifier
::=
simple-type-specifier
|
class-specifier
|
enum-specifier
|
elaborated-type-specifier
|
typename-specifier
referenced by:
decl-specifier-seq
simple-type-specifier:
Y_TYPE_NAME
qualified-type-specifier
basic-type-specifier
decltype-specifier
typeof-specifier
simple-type-specifier
::=
Y_TYPE_NAME
|
qualified-type-specifier
|
basic-type-specifier
|
decltype-specifier
|
typeof-specifier
referenced by:
postfix-expression
type-specifier
decltype-specifier:
decltype
(
id-expression
expression
)
decltype-specifier
::= 'decltype' '(' (
id-expression
|
expression
) ')'
referenced by:
simple-type-specifier
qualified-type-specifier:
Y_GLOBAL_TYPE_NAME
Y_SCOPED_TYPE_NAME
nested-name-specifier
Y_TEMPLATE_SCOPED_TYPE_NAME
qualified-type-specifier
::=
Y_GLOBAL_TYPE_NAME
|
Y_SCOPED_TYPE_NAME
|
nested-name-specifier
Y_TEMPLATE_SCOPED_TYPE_NAME
?
referenced by:
access-declaration
simple-type-specifier
using-declaration
enum-specifier:
enum-key
{
enumerator-definition
,
,
}
enum-specifier
::=
enum-key
'{' (
enumerator-definition
( ','
enumerator-definition
)* ','? )? '}'
referenced by:
type-specifier
enum-key:
enum
make-id
enum-key
::= 'enum'
make-id
?
referenced by:
enum-specifier
enumerator-definition:
enumerator
=
constant-expression
enumerator-definition
::=
enumerator
( '='
constant-expression
)?
referenced by:
enum-specifier
enumerator:
make-id
enumerator
::=
make-id
referenced by:
enumerator-definition
elaborated-type-specifier:
enum
make-id
elaborated-type-name
elaborated-type-specifier
::= 'enum' (
make-id
|
elaborated-type-name
)
referenced by:
type-specifier
namespace-definition:
namespace-key
{
namespace-body
}
namespace-definition
::=
namespace-key
'{'
namespace-body
'}'
referenced by:
declaration
namespace-key:
namespace
expect-identifier
make-id
namespace-key
::= 'namespace' (
expect-identifier
make-id
)?
referenced by:
namespace-definition
namespace-body:
might-restart-declarations
namespace-body
::=
might-restart-declarations
?
referenced by:
namespace-definition
namespace-alias-definition:
namespace
expect-identifier
make-id
=
expect-qualified-namespace-specifier
qualified-namespace-specifier
namespace-alias-definition
::= 'namespace'
expect-identifier
make-id
'='
expect-qualified-namespace-specifier
qualified-namespace-specifier
referenced by:
block-declaration
qualified-namespace-specifier:
Y_NAMESPACE_NAME
Y_GLOBAL_NAMESPACE_NAME
Y_SCOPED_NAMESPACE_NAME
qualified-namespace-specifier
::=
Y_NAMESPACE_NAME
|
Y_GLOBAL_NAMESPACE_NAME
|
Y_SCOPED_NAMESPACE_NAME
referenced by:
namespace-alias-definition
using-declaration
using-directive
using-declaration:
using
qualified-id
qualified-type-specifier
Y_GLOBAL_TEMPLATE_NAME
Y_SCOPED_TEMPLATE_NAME
qualified-namespace-specifier
using-declaration
::= 'using' (
qualified-id
|
qualified-type-specifier
|
Y_GLOBAL_TEMPLATE_NAME
|
Y_SCOPED_TEMPLATE_NAME
|
qualified-namespace-specifier
)
referenced by:
block-declaration
simple-member-declaration
using-directive:
using
namespace
expect-qualified-namespace-specifier
qualified-namespace-specifier
using-directive
::= 'using' 'namespace'
expect-qualified-namespace-specifier
qualified-namespace-specifier
referenced by:
block-declaration
asm-definition:
asm
(
expect-string-literal
string-literal
)
asm-definition
::= 'asm' '('
expect-string-literal
string-literal
')'
referenced by:
block-declaration
linkage-specification:
extern
linkage-id
{
linkage-body
}
linkage-specification
::= 'extern'
linkage-id
'{'
linkage-body
'}'
referenced by:
declaration
linkage-id:
string-literal
linkage-id
::=
string-literal
referenced by:
linkage-specification
storage-class-specifier
linkage-body:
might-restart-declarations
linkage-body
::=
might-restart-declarations
?
referenced by:
linkage-specification
init-declarator:
declarator
declaring-declarator
initializer
ptr-mod-init-declarator
direct-declarator
(
expression-list
)
init-declarator
::=
declarator
|
declaring-declarator
initializer
|
ptr-mod-init-declarator
|
direct-declarator
'('
expression-list
')'
referenced by:
simple-declaration
declarator:
ptr-mod-declarator
direct-declarator
declarator
::=
ptr-mod-declarator
|
direct-declarator
referenced by:
actual-exception-declaration
declaring-declarator
function-declaration
goal-symbol
init-declarator
member-declaring-declarator
simple-parameter-declaration
comma-init-declarator:
comma-declarator
comma-declaring-declarator
initializer
cv-qualifier-seq-opt
ptr-mod-init-declarator
direct-declarator
(
expression-list
)
comma-init-declarator
::=
comma-declarator
|
comma-declaring-declarator
initializer
|
cv-qualifier-seq-opt
(
ptr-mod-init-declarator
|
direct-declarator
'('
expression-list
')' )
referenced by:
simple-declaration
declaring-declarator:
declarator
declaring-declarator
::=
declarator
referenced by:
goal-symbol
init-declarator
comma-declaring-declarator:
comma-declarator
comma-declaring-declarator
::=
comma-declarator
referenced by:
comma-init-declarator
comma-declarator:
cv-qualifier-seq-opt
ptr-mod-declarator
direct-declarator
comma-declarator
::=
cv-qualifier-seq-opt
(
ptr-mod-declarator
|
direct-declarator
)
referenced by:
comma-declaring-declarator
comma-init-declarator
ptr-mod:
modifier
__based
(
based-expression
)
pragma-modifier
ptr-operator
ptr-mod
::=
modifier
| '__based' '('
based-expression
')'
|
pragma-modifier
|
ptr-operator
referenced by:
abstract-ptr-mod-declarator
ptr-mod-declarator
ptr-mod-init-declarator
special-new-abstract-ptr-mod-declarator
ptr-mod-init-declarator:
ptr-mod
direct-declarator
(
expression-list
)
ptr-mod-init-declarator
::=
ptr-mod
+
direct-declarator
'('
expression-list
')'
referenced by:
comma-init-declarator
init-declarator
ptr-mod-declarator:
ptr-mod
direct-declarator
ptr-mod-declarator
::=
ptr-mod
+
direct-declarator
referenced by:
comma-declarator
declarator
direct-declarator
direct-declarator:
declarator-id
direct-declarator
(
parameter-declaration-clause
)
cv-qualifier-seq-opt
exception-specification-opt
[
constant-expression
]
(
ptr-mod-declarator
direct-declarator
)
direct-declarator
::=
declarator-id
|
direct-declarator
( '('
parameter-declaration-clause
')'
cv-qualifier-seq-opt
exception-specification-opt
| '['
constant-expression
? ']' )
| '(' (
ptr-mod-declarator
|
direct-declarator
) ')'
referenced by:
comma-declarator
comma-init-declarator
declarator
direct-declarator
init-declarator
ptr-mod-declarator
ptr-mod-init-declarator
modifier:
___near
___far
__far16
___far16
huge
__export
___export
___loadds
___saveregs
___interrupt
modifier
::= '___near'
| '___far'
| '__far16'
| '___far16'
| 'huge'
| '__export'
| '___export'
| '___loadds'
| '___saveregs'
| '___interrupt'
referenced by:
class-mod
new-modifier-opt
ptr-mod
based-expression:
segment-cast-opt
___segname
(
expect-string-literal
string-literal
)
identifier
void
___self
based-expression
::=
segment-cast-opt
( '___segname' '('
expect-string-literal
string-literal
')' |
identifier
| 'void' | '___self' )
referenced by:
ptr-mod
segment-cast-opt:
(
__segment
)
segment-cast-opt
::= ( '(' '__segment' ')' )?
referenced by:
based-expression
pragma-modifier:
___pragma
(
pragma-id
)
__cdecl
___cdecl
__fastcall
___fastcall
___fortran
__optlink
__pascal
___pascal
___stdcall
__syscall
___syscall
__system
___watcall
pragma-modifier
::= '___pragma' '('
pragma-id
')'
| '__cdecl'
| '___cdecl'
| '__fastcall'
| '___fastcall'
| '___fortran'
| '__optlink'
| '__pascal'
| '___pascal'
| '___stdcall'
| '__syscall'
| '___syscall'
| '__system'
| '___watcall'
referenced by:
class-mod
ms-specific-declspec
ptr-mod
pragma-id:
string-literal
pragma-id
::=
string-literal
referenced by:
pragma-modifier
ptr-operator:
*
__seg16
&
Y_SCOPED_TIMES
nested-name-specifier
Y_TEMPLATE_SCOPED_TIMES
cv-qualifier-seq-opt
ptr-operator
::= ( '*' '__seg16'? | '&' |
Y_SCOPED_TIMES
|
nested-name-specifier
Y_TEMPLATE_SCOPED_TIMES
)
cv-qualifier-seq-opt
referenced by:
conversion-type-id
ptr-mod
cv-qualifier-seq-opt:
const
volatile
__unaligned
__unaligned
volatile
volatile
const
__unaligned
__unaligned
const
__unaligned
const
volatile
volatile
const
cv-qualifier-seq-opt
::= ( 'const' ( 'volatile' '__unaligned'? | '__unaligned' 'volatile'? )? | 'volatile' ( 'const' '__unaligned'? | '__unaligned' 'const'? )? | '__unaligned' ( 'const' 'volatile'? | 'volatile' 'const'? )? )?
referenced by:
comma-declarator
comma-init-declarator
ctor-declarator
direct-abstract-declarator
direct-declarator
new-declarator
ptr-operator
special-new-direct-abstract-declarator
declarator-id:
id-expression
Y_TEMPLATE_NAME
Y_NAMESPACE_NAME
Y_TYPE_NAME
Y_GLOBAL_UNKNOWN_ID
Y_SCOPED_UNKNOWN_ID
nested-name-specifier
Y_TEMPLATE_SCOPED_UNKNOWN_ID
Y_TEMPLATE_SCOPED_ID
Y_TEMPLATE_SCOPED_TILDE
make-id
template-scoped-conversion-function-id
template-scoped-operator-function-id
declarator-id
::=
id-expression
|
Y_TEMPLATE_NAME
|
Y_NAMESPACE_NAME
|
Y_TYPE_NAME
|
Y_GLOBAL_UNKNOWN_ID
|
Y_SCOPED_UNKNOWN_ID
|
nested-name-specifier
?
Y_TEMPLATE_SCOPED_UNKNOWN_ID
|
Y_TEMPLATE_SCOPED_ID
|
Y_TEMPLATE_SCOPED_TILDE
make-id
|
template-scoped-conversion-function-id
|
template-scoped-operator-function-id
referenced by:
direct-declarator
member-declarator
type-id:
type-specifier-seq
abstract-declarator
type-id
::=
type-specifier-seq
abstract-declarator
?
referenced by:
cast-expression
exception-specification
goal-symbol
postfix-expression
template-argument
type-defarg-parse-or-copy
typeof-specifier
type-specifier-seq:
decl-specifier-seq
type-specifier-seq
::=
decl-specifier-seq
referenced by:
actual-exception-declaration
conversion-type-id
dynamic-type-id
goal-symbol
special-new-type-id
type-id
abstract-declarator:
abstract-ptr-mod-declarator
direct-abstract-declarator
abstract-declarator
::=
abstract-ptr-mod-declarator
|
direct-abstract-declarator
referenced by:
actual-exception-declaration
simple-parameter-declaration
type-id
abstract-ptr-mod-declarator:
ptr-mod
direct-abstract-declarator
abstract-ptr-mod-declarator
::=
ptr-mod
+
direct-abstract-declarator
?
referenced by:
abstract-declarator
direct-abstract-declarator
direct-abstract-declarator:
direct-abstract-declarator
(
parameter-declaration-clause
)
cv-qualifier-seq-opt
exception-specification-opt
[
constant-expression
]
(
parameter-declaration-clause
)
cv-qualifier-seq-opt
exception-specification-opt
direct-abstract-declarator
abstract-ptr-mod-declarator
)
[
constant-expression
]
direct-abstract-declarator
::=
direct-abstract-declarator
( '('
parameter-declaration-clause
')'
cv-qualifier-seq-opt
exception-specification-opt
| '['
constant-expression
? ']' )
| '(' (
parameter-declaration-clause
')'
cv-qualifier-seq-opt
exception-specification-opt
| (
direct-abstract-declarator
|
abstract-ptr-mod-declarator
) ')' )
| '['
constant-expression
? ']'
referenced by:
abstract-declarator
abstract-ptr-mod-declarator
direct-abstract-declarator
parameter-declaration-clause:
parameter-declaration
,
,
...
...
parameter-declaration-clause
::= (
parameter-declaration
( ','
parameter-declaration
)* ( ','? '...' )? | '...' )?
referenced by:
ctor-declarator
direct-abstract-declarator
direct-declarator
special-new-direct-abstract-declarator
arg-decl-specifier-seq:
decl-specifier-seq
arg-decl-specifier-seq
::=
decl-specifier-seq
referenced by:
simple-parameter-declaration
parameter-declaration:
simple-parameter-declaration
parameter-declaration
::=
simple-parameter-declaration
referenced by:
parameter-declaration-clause
template-parameter
simple-parameter-declaration:
arg-decl-specifier-seq
simple-arg-no-id
defarg-parse-or-copy
declarator
abstract-declarator
defarg-parse-or-copy
simple-parameter-declaration
::=
arg-decl-specifier-seq
(
simple-arg-no-id
defarg-parse-or-copy
| (
declarator
|
abstract-declarator
)
defarg-parse-or-copy
? )?
referenced by:
parameter-declaration
simple-arg-no-id:
simple-arg-no-id
::=
referenced by:
simple-parameter-declaration
defarg-parse-or-copy:
defarg-check
=
assignment-expression
Y_DEFARG_GONE_SPECIAL
defarg-parse-or-copy
::=
defarg-check
( '='
assignment-expression
|
Y_DEFARG_GONE_SPECIAL
)
referenced by:
simple-parameter-declaration
type-defarg-parse-or-copy:
defarg-check
=
type-id
Y_DEFARG_GONE_SPECIAL
type-defarg-parse-or-copy
::=
defarg-check
( '='
type-id
|
Y_DEFARG_GONE_SPECIAL
)
referenced by:
type-parameter
defarg-check:
defarg-check
::=
referenced by:
defarg-parse-or-copy
type-defarg-parse-or-copy
ctor-declarator:
(
parameter-declaration-clause
)
cv-qualifier-seq-opt
exception-specification-opt
ctor-declarator
::= '('
parameter-declaration-clause
')'
cv-qualifier-seq-opt
exception-specification-opt
referenced by:
function-declaration
goal-symbol
simple-member-declaration
function-declaration:
decl-specifier-seq
declarator
ctor-declarator
declarator
:
function-declaration
::= (
decl-specifier-seq
(
declarator
|
ctor-declarator
) |
declarator
) ':'?
referenced by:
function-definition
function-definition:
function-declaration
function-body
function-definition
::=
function-declaration
function-body
referenced by:
declaration
member-declaration
template-function-declaration
function-body:
check-for-rewrite
{
absorb-body
}
function-body
::=
check-for-rewrite
'{'
absorb-body
'}'
referenced by:
function-definition
check-for-rewrite:
check-for-rewrite
::=
referenced by:
function-body
absorb-body:
absorb-body
::=
referenced by:
function-body
initializer:
=
assignment-expression
braced-initializer
initializer
::= '=' (
assignment-expression
|
braced-initializer
)
referenced by:
comma-init-declarator
goal-symbol
init-declarator
start-class:
start-class
::=
referenced by:
class-substance
invalid-class-name-id:
Y_GLOBAL_UNKNOWN_ID
Y_SCOPED_UNKNOWN_ID
invalid-class-name-id
::=
Y_GLOBAL_UNKNOWN_ID
|
Y_SCOPED_UNKNOWN_ID
referenced by:
class-name-id
class-name-id:
Y_ID
Y_UNKNOWN_ID
Y_TEMPLATE_ID
Y_TYPE_NAME
Y_TEMPLATE_NAME
Y_NAMESPACE_NAME
Y_GLOBAL_ID
Y_GLOBAL_TYPE_NAME
Y_SCOPED_ID
Y_SCOPED_TYPE_NAME
invalid-class-name-id
class-name-id
::=
Y_ID
|
Y_UNKNOWN_ID
|
Y_TEMPLATE_ID
|
Y_TYPE_NAME
|
Y_TEMPLATE_NAME
|
Y_NAMESPACE_NAME
|
Y_GLOBAL_ID
|
Y_GLOBAL_TYPE_NAME
|
Y_SCOPED_ID
|
Y_SCOPED_TYPE_NAME
|
invalid-class-name-id
referenced by:
class-name
class-name:
class-name-id
nested-name-specifier
class-name
::=
class-name-id
|
nested-name-specifier
referenced by:
class-specifier
class-specifier:
class-key
class-name
base-clause
class-body
no-class-name
base-clause
class-body
class-specifier
::=
class-key
(
class-name
(
base-clause
?
class-body
)? |
no-class-name
base-clause
?
class-body
)
referenced by:
goal-symbol
type-specifier
class-key:
packed-class-opt
class
struct
union
class-mod-opt
class-key
::=
packed-class-opt
( 'class' | 'struct' | 'union' )
class-mod-opt
referenced by:
class-specifier
class-body:
class-substance
}
class-body
::=
class-substance
'}'
referenced by:
class-specifier
class-substance:
start-class
{
member-specification-opt
class-substance
::=
start-class
'{'
member-specification-opt
referenced by:
class-body
no-class-name:
no-class-name
::=
referenced by:
class-specifier
packed-class-opt:
__packed
packed-class-opt
::= '__packed'?
referenced by:
class-key
class-mod-opt:
class-mod
class-mod-opt
::=
class-mod
*
referenced by:
class-key
class-mod:
pragma-modifier
modifier
ms-specific-declspec
class-mod
::=
pragma-modifier
|
modifier
|
ms-specific-declspec
referenced by:
class-mod-opt
member-specification-opt:
member-specification
member-specification-opt
::=
member-specification
?
referenced by:
class-substance
member-specification
member-specification:
member-specification-opt
member-declaration
access-specifier
:
member-specification
::=
member-specification-opt
(
member-declaration
|
access-specifier
':' )
referenced by:
member-specification-opt
member-declaration:
simple-member-declaration-before-semicolon
access-declaration
static_assert-declaration
;
function-definition
template-declaration
member-declaration
::= (
simple-member-declaration-before-semicolon
|
access-declaration
|
static_assert-declaration
)? ';'
|
function-definition
|
template-declaration
referenced by:
member-specification
simple-member-declaration-before-semicolon:
simple-member-declaration
simple-member-declaration-before-semicolon
::=
simple-member-declaration
referenced by:
member-declaration
simple-template-declaration-before-semicolon
simple-member-declaration:
decl-specifier-seq
member-declarator-list
ctor-declarator
member-declarator-list
using-declaration
simple-member-declaration
::=
decl-specifier-seq
(
member-declarator-list
|
ctor-declarator
)?
|
member-declarator-list
|
using-declaration
referenced by:
simple-member-declaration-before-semicolon
member-declarator-list:
member-declarator
,
member-declarator-list
::=
member-declarator
( ','
member-declarator
)*
referenced by:
simple-member-declaration
member-declarator:
member-declaring-declarator
constant-initializer
Y_PURE_FUNCTION_SPECIAL
Y_CONSTANT
declarator-id
:
constant-expression
member-declarator
::=
member-declaring-declarator
(
constant-initializer
|
Y_PURE_FUNCTION_SPECIAL
Y_CONSTANT
)?
|
declarator-id
? ':'
constant-expression
referenced by:
member-declarator-list
member-declaring-declarator:
declarator
member-declaring-declarator
::=
declarator
referenced by:
member-declarator
constant-initializer:
=
constant-expression
constant-initializer
::= '='
constant-expression
referenced by:
member-declarator
base-clause:
:
base-specifier
,
base-clause
::= ':'
base-specifier
( ','
base-specifier
)*
referenced by:
class-specifier
base-specifier:
private
public
protected
virtual
qualified-class-specifier
base-specifier
::= ( 'private' | 'public' | 'protected' | 'virtual' )*
qualified-class-specifier
referenced by:
base-clause
access-specifier:
private
protected
public
access-specifier
::= 'private'
| 'protected'
| 'public'
referenced by:
member-specification
conversion-function-id:
operator
conversion-type-id
conversion-function-id
::= 'operator'
conversion-type-id
referenced by:
unqualified-id
scoped-conversion-function-id:
Y_SCOPED_OPERATOR
Y_GLOBAL_OPERATOR
conversion-type-id
scoped-conversion-function-id
::= (
Y_SCOPED_OPERATOR
|
Y_GLOBAL_OPERATOR
)
conversion-type-id
referenced by:
qualified-id
template-scoped-conversion-function-id:
Y_TEMPLATE_SCOPED_OPERATOR
conversion-type-id
template-scoped-conversion-function-id
::=
Y_TEMPLATE_SCOPED_OPERATOR
conversion-type-id
referenced by:
declarator-id
template-scoped-unqualified-id
conversion-type-id:
type-specifier-seq
ptr-operator
conversion-type-id
::=
type-specifier-seq
ptr-operator
*
referenced by:
conversion-function-id
scoped-conversion-function-id
template-scoped-conversion-function-id
mem-initializer:
qualified-class-specifier
identifier
(
expression-list-opt
)
mem-initializer
::= (
qualified-class-specifier
|
identifier
) '('
expression-list-opt
')'
referenced by:
goal-symbol
qualified-class-specifier:
qualified-class-type
qualified-class-specifier
::=
qualified-class-type
referenced by:
base-specifier
mem-initializer
qualified-class-type:
Y_TYPE_NAME
Y_GLOBAL_TYPE_NAME
Y_SCOPED_TYPE_NAME
nested-name-specifier
Y_TEMPLATE_SCOPED_TYPE_NAME
qualified-class-type
::=
Y_TYPE_NAME
|
Y_GLOBAL_TYPE_NAME
|
Y_SCOPED_TYPE_NAME
|
nested-name-specifier
Y_TEMPLATE_SCOPED_TYPE_NAME
?
referenced by:
qualified-class-specifier
operator-function-id:
operator
operator
operator-function-id
::= 'operator'
operator
referenced by:
unqualified-id
scoped-operator-function-id:
Y_SCOPED_OPERATOR
Y_GLOBAL_OPERATOR
operator
scoped-operator-function-id
::= (
Y_SCOPED_OPERATOR
|
Y_GLOBAL_OPERATOR
)
operator
referenced by:
qualified-id
template-scoped-operator-function-id:
Y_TEMPLATE_SCOPED_OPERATOR
operator
template-scoped-operator-function-id
::=
Y_TEMPLATE_SCOPED_OPERATOR
operator
referenced by:
declarator-id
template-scoped-unqualified-id
operator:
new
delete
[
]
+
-
*
/
%
^
&
|
~
!
=
*=
/=
%=
+=
-=
<<=
>>=
|=
&=
^=
<<
>>
==
!=
<=
>=
<
>
&&
||
++
--
,
->*
->
(
)
[
]
Y_SEG_OP
operator
::= ( 'new' | 'delete' ) ( '[' ']' )?
| '+'
| '-'
| '*'
| '/'
| '%'
| '^'
| '&'
| '|'
| '~'
| '!'
| '='
| '*='
| '/='
| '%='
| '+='
| '-='
| '<<='
| '>>='
| '|='
| '&='
| '^='
| '<<'
| '>>'
| '=='
| '!='
| '<='
| '>='
| '<'
| '>'
| '&&'
| '||'
| '++'
| '--'
| ','
| '->*'
| '->'
| '(' ')'
| '[' ']'
|
Y_SEG_OP
referenced by:
operator-function-id
scoped-operator-function-id
template-scoped-operator-function-id
template-declaration:
template-declaration-before-semicolon
;
template-function-declaration
template-declaration
::=
template-declaration-before-semicolon
';'
|
template-function-declaration
referenced by:
declaration
member-declaration
template-declaration-start:
template
template-declaration-init
lt-special
template-parameter-list-opt
Y_GT_SPECIAL
template-declaration-start
::= 'template'
template-declaration-init
lt-special
template-parameter-list-opt
Y_GT_SPECIAL
referenced by:
template-declaration-before-semicolon
template-function-declaration
simple-template-declaration-before-semicolon:
block-declaration-before-semicolon
simple-member-declaration-before-semicolon
simple-template-declaration-before-semicolon
::=
block-declaration-before-semicolon
|
simple-member-declaration-before-semicolon
referenced by:
template-declaration-before-semicolon
template-declaration-before-semicolon:
export
template-declaration-start
simple-template-declaration-before-semicolon
template-declaration-before-semicolon
::= 'export'?
template-declaration-start
simple-template-declaration-before-semicolon
referenced by:
template-declaration
template-function-declaration:
export
template-declaration-start
function-definition
template-function-declaration
::= 'export'?
template-declaration-start
function-definition
referenced by:
template-declaration
template-declaration-init:
template-declaration-init
::=
referenced by:
template-declaration-start
template-parameter-list-opt:
template-parameter
,
template-parameter-list-opt
::= (
template-parameter
( ','
template-parameter
)* )?
referenced by:
template-declaration-start
template-parameter:
type-parameter
parameter-declaration
template-parameter
::=
type-parameter
|
parameter-declaration
referenced by:
template-parameter-list-opt
type-parameter:
type-parameter-no-defarg
type-defarg-parse-or-copy
type-parameter
::=
type-parameter-no-defarg
type-defarg-parse-or-copy
?
referenced by:
template-parameter
type-parameter-no-defarg:
template-typename-key
make-id
type-parameter-no-defarg
::=
template-typename-key
make-id
?
referenced by:
type-parameter
template-typename-key:
typename
class
template-typename-key
::= 'typename'
| 'class'
referenced by:
type-parameter-no-defarg
template-id:
Y_TEMPLATE_ID
lt-special
template-argument-list-opt
Y_GT_SPECIAL
template-id
::=
Y_TEMPLATE_ID
lt-special
template-argument-list-opt
Y_GT_SPECIAL
referenced by:
unqualified-id
scoped-template-id:
Y_SCOPED_TEMPLATE_ID
Y_GLOBAL_TEMPLATE_ID
lt-special
template-argument-list-opt
Y_GT_SPECIAL
scoped-template-id
::= (
Y_SCOPED_TEMPLATE_ID
|
Y_GLOBAL_TEMPLATE_ID
)
lt-special
template-argument-list-opt
Y_GT_SPECIAL
referenced by:
qualified-id
template-argument:
assignment-expression
type-id
template-argument
::=
assignment-expression
|
type-id
referenced by:
template-argument-list-opt
typename-specifier:
typename-special
nested-name-specifier
Y_TEMPLATE_SCOPED_TYPE_NAME
Y_SCOPED_TYPE_NAME
typename-specifier
::=
typename-special
(
nested-name-specifier
Y_TEMPLATE_SCOPED_TYPE_NAME
? |
Y_SCOPED_TYPE_NAME
)
referenced by:
postfix-expression
type-specifier
explicit-instantiation-special:
extern
template
explicit-instantiation-special
::= 'extern'? 'template'
referenced by:
explicit-instantiation
explicit-instantiation:
extern
template
template-class-directive-extern
template
template-class-directive-instantiate
explicit-instantiation-special
block-declaration-before-semicolon
;
explicit-instantiation
::= ( 'extern' 'template'
template-class-directive-extern
| 'template'
template-class-directive-instantiate
|
explicit-instantiation-special
block-declaration-before-semicolon
) ';'
referenced by:
declaration
template-argument-list-opt:
template-argument
,
template-argument-list-opt
::= (
template-argument
( ','
template-argument
)* )?
referenced by:
scoped-template-id
scoped-template-type-instantiation
template-id
template-scoped-template-type-instantiation
template-scoped-unqualified-id
template-type-instantiation
template-class-directive-extern:
nested-name-specifier
template-class-directive-extern
::=
nested-name-specifier
referenced by:
explicit-instantiation
template-class-directive-instantiate:
nested-name-specifier
template-class-directive-instantiate
::=
nested-name-specifier
referenced by:
explicit-instantiation
template-type:
template-type-instantiation
Y_GT_SPECIAL
template-type
::=
template-type-instantiation
Y_GT_SPECIAL
referenced by:
nested-name-specifier
unqualified-id
template-type-instantiation:
Y_TEMPLATE_NAME
lt-special
template-argument-list-opt
template-type-instantiation
::=
Y_TEMPLATE_NAME
lt-special
template-argument-list-opt
referenced by:
template-type
scoped-template-type:
scoped-template-type-instantiation
Y_GT_SPECIAL
scoped-template-type
::=
scoped-template-type-instantiation
Y_GT_SPECIAL
referenced by:
nested-name-specifier
scoped-template-type-instantiation:
Y_SCOPED_TEMPLATE_NAME
Y_GLOBAL_TEMPLATE_NAME
lt-special
template-argument-list-opt
scoped-template-type-instantiation
::= (
Y_SCOPED_TEMPLATE_NAME
|
Y_GLOBAL_TEMPLATE_NAME
)
lt-special
template-argument-list-opt
referenced by:
scoped-template-type
template-scoped-template-type:
template-scoped-template-type-instantiation
Y_GT_SPECIAL
template-scoped-template-type
::=
template-scoped-template-type-instantiation
Y_GT_SPECIAL
referenced by:
nested-name-specifier
template-scoped-template-type-instantiation:
Y_TEMPLATE_SCOPED_TEMPLATE_NAME
lt-special
template-argument-list-opt
template-scoped-template-type-instantiation
::=
Y_TEMPLATE_SCOPED_TEMPLATE_NAME
lt-special
template-argument-list-opt
referenced by:
template-scoped-template-type
exception-declaration:
actual-exception-declaration
exception-declaration
::=
actual-exception-declaration
referenced by:
goal-symbol
actual-exception-declaration:
type-specifier-seq
declarator
abstract-declarator
actual-exception-declaration
::=
type-specifier-seq
(
declarator
|
abstract-declarator
)?
referenced by:
exception-declaration
exception-specification-opt:
exception-specification
exception-specification-opt
::=
exception-specification
?
referenced by:
ctor-declarator
direct-abstract-declarator
direct-declarator
special-new-direct-abstract-declarator
exception-specification:
throw
(
expect-type-id
type-id
,
)
exception-specification
::= 'throw' '(' (
expect-type-id
type-id
( ','
expect-type-id
type-id
)* )? ')'
referenced by:
exception-specification-opt
might-restart-declarations:
start-restart-declarations
declaration
might-restart-declarations
::=
start-restart-declarations
declaration
*
referenced by:
goal-symbol
linkage-body
namespace-body
start-restart-declarations:
start-restart-declarations
::=
referenced by:
might-restart-declarations
local-declaration:
block-declaration-before-semicolon
;
local-declaration
::=
block-declaration-before-semicolon
';'
referenced by:
expr-decl-stmt
no-declarator-declaration:
decl-specifier-seq
no-declarator-declaration
::=
decl-specifier-seq
referenced by:
simple-declaration
typeof-specifier:
__typeof
(
expression
type-id
)
typeof-specifier
::= '__typeof' '(' (
expression
|
type-id
) ')'
referenced by:
simple-type-specifier
cv-qualifier:
const
volatile
__unaligned
cv-qualifier
::= 'const'
| 'volatile'
| '__unaligned'
referenced by:
non-type-decl-specifier
basic-type-specifier:
char
wchar_t
bool
short
int
long
signed
unsigned
float
double
void
__segment
__int8
__int16
__int32
__int64
basic-type-specifier
::= 'char'
| 'wchar_t'
| 'bool'
| 'short'
| 'int'
| 'long'
| 'signed'
| 'unsigned'
| 'float'
| 'double'
| 'void'
| '__segment'
| '__int8'
| '__int16'
| '__int32'
| '__int64'
referenced by:
maybe-type-decl-specifier-seq
simple-type-specifier
elaborated-type-name:
Y_GLOBAL_ID
Y_GLOBAL_TEMPLATE_ID
Y_GLOBAL_TYPE_NAME
Y_SCOPED_ID
Y_SCOPED_TEMPLATE_ID
Y_SCOPED_TYPE_NAME
elaborated-type-name
::=
Y_GLOBAL_ID
|
Y_GLOBAL_TEMPLATE_ID
|
Y_GLOBAL_TYPE_NAME
|
Y_SCOPED_ID
|
Y_SCOPED_TEMPLATE_ID
|
Y_SCOPED_TYPE_NAME
referenced by:
elaborated-type-specifier
braced-initializer:
{
assignment-expression
braced-initializer
,
,
}
braced-initializer
::= '{' (
assignment-expression
|
braced-initializer
) ( ',' (
assignment-expression
|
braced-initializer
) )* ','? '}'
referenced by:
braced-initializer
initializer
typename-special:
typename-special-init
typename
typename-special
::=
typename-special-init
'typename'
referenced by:
typename-specifier
typename-special-init:
typename-special-init
::=
referenced by:
typename-special
special-new-type-id:
type-specifier-seq
special-new-abstract-declarator
special-new-type-id
::=
type-specifier-seq
special-new-abstract-declarator
?
referenced by:
new-expression
new-type-id
special-new-abstract-declarator:
special-new-abstract-ptr-mod-declarator
special-new-direct-abstract-declarator
special-new-abstract-declarator
::=
special-new-abstract-ptr-mod-declarator
|
special-new-direct-abstract-declarator
referenced by:
special-new-type-id
special-new-abstract-ptr-mod-declarator:
ptr-mod
special-new-direct-abstract-declarator
special-new-abstract-ptr-mod-declarator
::=
ptr-mod
+
special-new-direct-abstract-declarator
?
referenced by:
special-new-abstract-declarator
special-new-direct-abstract-declarator
special-new-direct-abstract-declarator:
special-new-direct-abstract-declarator
(
parameter-declaration-clause
)
cv-qualifier-seq-opt
exception-specification-opt
[
constant-expression
]
(
parameter-declaration-clause
)
cv-qualifier-seq-opt
exception-specification-opt
special-new-direct-abstract-declarator
special-new-abstract-ptr-mod-declarator
)
[
expression
]
special-new-direct-abstract-declarator
::=
special-new-direct-abstract-declarator
( '('
parameter-declaration-clause
')'
cv-qualifier-seq-opt
exception-specification-opt
| '['
constant-expression
? ']' )
| '(' (
parameter-declaration-clause
')'
cv-qualifier-seq-opt
exception-specification-opt
| (
special-new-direct-abstract-declarator
|
special-new-abstract-ptr-mod-declarator
) ')' )
| '['
expression
? ']'
referenced by:
special-new-abstract-declarator
special-new-abstract-ptr-mod-declarator
special-new-direct-abstract-declarator
... generated by
RR - Railroad Diagram Generator
R
R