__EarlyStartSymbol:
File
TOK_EOF
__EarlyStartSymbol
::=
File
TOK_EOF
no references
File:
TranslationUnit
File
::=
TranslationUnit
referenced by:
__EarlyStartSymbol
Identifier:
TOK_NAME
Identifier
::=
TOK_NAME
referenced by:
ClassHeadNameOpt
Declarator
Designator
EnumSpecifier
EnumeratorDefinition
IdentifierOpt
LabelAndColon
NAD1
NAD2
NamespaceDecl
PQTypeName_ncc
PQualifiedId
Statement
TemplateId
UnqualifiedId
TranslationUnit:
TFDeclaration
;
TranslationUnit
::= (
TFDeclaration
| ';' )*
referenced by:
File
LinkageSpecification
NamespaceDefinition
PrimaryExpression:
Literal
this
(
Expression
)
IdExpression
PrimaryExpression
::=
Literal
| 'this'
| '('
Expression
')'
|
IdExpression
referenced by:
CastExpression
Literal:
TOK_INT_LITERAL
TOK_FLOAT_LITERAL
StringLiteral
TOK_CHAR_LITERAL
true
false
Literal
::=
TOK_INT_LITERAL
|
TOK_FLOAT_LITERAL
|
StringLiteral
|
TOK_CHAR_LITERAL
| 'true'
| 'false'
referenced by:
PrimaryExpression
PreprocString:
TOK_STRING_LITERAL
PreprocString
::=
TOK_STRING_LITERAL
referenced by:
StringLiteral
StringLiteral:
PreprocString
StringLiteral
::=
PreprocString
+
referenced by:
AsmDefinition
Literal
IdExpression:
::
PQualifiedId
IdExpression
::= '::'?
PQualifiedId
referenced by:
CastExpression
Declarator
MemberDeclaration
NamespaceDecl
PrimaryExpression
PtrToMemberName
UnqualifiedId:
Identifier
OperatorFunctionId
ConversionFunctionId
TemplateId
UnqualifiedId
::=
Identifier
|
OperatorFunctionId
|
ConversionFunctionId
|
TemplateId
referenced by:
PQualifiedId
PQualifiedId:
Identifier
<
TemplateArgumentListOpt
>
template
Identifier
<
TemplateArgumentListOpt
>
::
UnqualifiedId
PQualifiedId
::= ( (
Identifier
( '<'
TemplateArgumentListOpt
'>' )? | 'template'
Identifier
'<'
TemplateArgumentListOpt
'>' ) '::' )*
UnqualifiedId
referenced by:
IdExpression
MemberDeclaration
ArgumentList:
(
ExpressionListOpt
)
ArgumentList
::= '('
ExpressionListOpt
')'
referenced by:
CastExpression
CtorExpressionType:
PQTypeName
char
wchar_t
bool
short
int
long
signed
unsigned
float
double
void
CtorExpressionType
::=
PQTypeName
| 'char'
| 'wchar_t'
| 'bool'
| 'short'
| 'int'
| 'long'
| 'signed'
| 'unsigned'
| 'float'
| 'double'
| 'void'
referenced by:
CastExpression
CastKeyword:
dynamic_cast
static_cast
reinterpret_cast
const_cast
CastKeyword
::= 'dynamic_cast'
| 'static_cast'
| 'reinterpret_cast'
| 'const_cast'
referenced by:
CastExpression
ExpressionList:
AssignmentExpression
,
ExpressionList
::=
AssignmentExpression
( ','
AssignmentExpression
)*
referenced by:
ExpressionListOpt
Initializer
NewPlacementOpt
ExpressionListOpt:
ExpressionList
ExpressionListOpt
::=
ExpressionList
?
referenced by:
ArgumentList
MemInitializer
NewInitializerOpt
ColonColonOpt:
::
ColonColonOpt
::= '::'?
referenced by:
DeleteExpression
NewExpression
NewExpression:
ColonColonOpt
new
NewPlacementOpt
NewTypeId
(
TypeId
)
NewInitializerOpt
NewExpression
::=
ColonColonOpt
'new'
NewPlacementOpt
(
NewTypeId
| '('
TypeId
')' )
NewInitializerOpt
referenced by:
CastExpression
NewPlacementOpt:
(
ExpressionList
)
NewPlacementOpt
::= ( '('
ExpressionList
')' )?
referenced by:
NewExpression
NewTypeId:
TypeSpecifier
PtrToMemberName
*
CVQualifierSeqOpt
[
Expression
]
ConstantExpression
[
NewTypeId
::=
TypeSpecifier
(
PtrToMemberName
? '*'
CVQualifierSeqOpt
)* ( '['
Expression
']' ( '['
ConstantExpression
']' )* )?
referenced by:
NewExpression
NewInitializerOpt:
(
ExpressionListOpt
)
NewInitializerOpt
::= ( '('
ExpressionListOpt
')' )?
referenced by:
NewExpression
DeleteExpression:
ColonColonOpt
delete
[
]
CastExpression
DeleteExpression
::=
ColonColonOpt
'delete' ( '[' ']' )?
CastExpression
referenced by:
CastExpression
NameAfterDot:
NAD1
::
NAD2
NameAfterDot
::=
NAD1
| '::'
NAD2
referenced by:
CastExpression
NAD1:
template
Identifier
<
TemplateArgumentListOpt
>
::
NAD2
template
Identifier
<
TemplateArgumentListOpt
>
~
Identifier
<
TemplateArgumentListOpt
>
ConversionFunctionId
NAD1
::= ( 'template'
Identifier
'<'
TemplateArgumentListOpt
'>' '::' )* (
NAD2
| 'template'
Identifier
'<'
TemplateArgumentListOpt
'>' | '~'
Identifier
( '<'
TemplateArgumentListOpt
'>' )? |
ConversionFunctionId
)
referenced by:
NAD2
NameAfterDot
NAD2:
Identifier
<
TemplateArgumentListOpt
>
::
NAD1
OperatorFunctionId
<
TemplateArgumentListOpt
>
template
OperatorFunctionId
<
TemplateArgumentListOpt
>
NAD2
::=
Identifier
( '<'
TemplateArgumentListOpt
'>' )? ( '::'
NAD1
)?
|
OperatorFunctionId
( '<'
TemplateArgumentListOpt
'>' )?
| 'template'
OperatorFunctionId
'<'
TemplateArgumentListOpt
'>'
referenced by:
NAD1
NameAfterDot
CastExpression:
(
TypeId
)
sizeof
PrimaryExpression
typename
IdExpression
CtorExpressionType
ArgumentList
CastKeyword
<
TypeId
>
(
Expression
typeid
(
Expression
TypeId
)
[
Expression
]
ArgumentList
.
->
NameAfterDot
++
--
++
--
*
&
+
-
!
~
CastExpression
DeleteExpression
sizeof
(
TypeId
)
NewExpression
CastExpression
::= ( '('
TypeId
')' )* 'sizeof'* ( (
PrimaryExpression
| ( 'typename'
IdExpression
|
CtorExpressionType
)
ArgumentList
| (
CastKeyword
'<'
TypeId
'>' '('
Expression
| 'typeid' '(' (
Expression
|
TypeId
) ) ')' ) ( '['
Expression
']' |
ArgumentList
| ( '.' | '->' )
NameAfterDot
| '++' | '--' )* | ( '++' | '--' | '*' | '&' | '+' | '-' | '!' | '~' )
CastExpression
|
DeleteExpression
| 'sizeof' '('
TypeId
')' |
NewExpression
)
referenced by:
BinExp_high
CastExpression
DeleteExpression
BinExp_high:
CastExpression
BinExp_high
.*
->*
*
/
%
+
-
<<
>>
BinExp_high
BinExp_high
::=
CastExpression
|
BinExp_high
( '.*' | '->*' | '*' | '/' | '%' | '+' | '-' | '<<' | '>>' )
BinExp_high
referenced by:
BinExp_high
BinaryExpression
BinaryExpression:
BinExp_high
<
>
<=
>=
BinaryExpression
==
!=
&
^
|
&&
||
BinaryExpression
BinaryExpression
::=
BinExp_high
( ( '<' | '>' | '<=' | '>=' )
BinExp_high
)*
|
BinaryExpression
( '==' | '!=' | '&' | '^' | '|' | '&&' | '||' )
BinaryExpression
referenced by:
AssignmentExpression
BinaryExpression
ConditionalExpression
ConditionalExpression:
BinaryExpression
?
Expression
:
AssignmentExpression
ConditionalExpression
::=
BinaryExpression
( '?'
Expression
':'
AssignmentExpression
)?
referenced by:
AssignmentExpression
AssignmentExpression:
BinaryExpression
AssignmentOperator
ConditionalExpression
ThrowExpression
AssignmentExpression
::= (
BinaryExpression
AssignmentOperator
)* (
ConditionalExpression
|
ThrowExpression
)
referenced by:
Condition
ConditionalExpression
ConstantExpression
Expression
ExpressionList
ParameterDeclarator
SimpleInitializerClause
TemplateArgument
ThrowExpression
AssignmentOperator:
*=
/=
%=
+=
-=
>>=
<<=
&=
^=
|=
=
AssignmentOperator
::= '*='
| '/='
| '%='
| '+='
| '-='
| '>>='
| '<<='
| '&='
| '^='
| '|='
| '='
referenced by:
AssignmentExpression
Expression:
AssignmentExpression
,
Expression
::=
AssignmentExpression
( ','
AssignmentExpression
)*
referenced by:
CastExpression
Condition
ConditionalExpression
ExpressionOpt
ExpressionStatement
NewTypeId
PrimaryExpression
Statement
ExpressionOpt:
Expression
ExpressionOpt
::=
Expression
?
referenced by:
Statement
ConstantExpression:
AssignmentExpression
ConstantExpression
::=
AssignmentExpression
referenced by:
ConstantExpressionOpt
Designator
EnumeratorDefinition
MemberDeclarator
NewTypeId
Statement
ConstantExpressionOpt:
ConstantExpression
ConstantExpressionOpt
::=
ConstantExpression
?
referenced by:
Declarator
DirectAbstractDeclarator
LabelAndColon:
Identifier
:
LabelAndColon
::=
Identifier
':'
referenced by:
Statement
Statement:
LabelAndColon
case
ConstantExpression
default
:
switch
while
(
Condition
for
(
ForInitStatement
ConditionOpt
;
ExpressionOpt
)
if
(
Condition
)
Statement
else
Statement
ExpressionStatement
CompoundStatement
do
Statement
while
(
Expression
)
break
continue
goto
Identifier
return
Expression
;
BlockDeclaration
TryBlock
AsmDefinition
NamespaceDecl
Statement
::= (
LabelAndColon
| ( 'case'
ConstantExpression
| 'default' ) ':' | ( ( 'switch' | 'while' ) '('
Condition
| 'for' '('
ForInitStatement
ConditionOpt
';'
ExpressionOpt
) ')' | 'if' '('
Condition
')' (
Statement
'else' )? )
Statement
|
ExpressionStatement
|
CompoundStatement
| ( 'do'
Statement
'while' '('
Expression
')' | 'break' | 'continue' | 'goto'
Identifier
| 'return'
Expression
? ) ';'
|
BlockDeclaration
|
TryBlock
|
AsmDefinition
|
NamespaceDecl
referenced by:
CompoundStatement
Statement
ExpressionStatement:
Expression
;
ExpressionStatement
::=
Expression
? ';'
referenced by:
ForInitStatement
Statement
CompoundStatement:
{
Statement
}
CompoundStatement
::= '{'
Statement
* '}'
referenced by:
FunctionBody
Handler
Statement
TryBlock
Condition:
Expression
TypeSpecifier
Declarator
=
AssignmentExpression
Condition
::=
Expression
|
TypeSpecifier
Declarator
'='
AssignmentExpression
referenced by:
ConditionOpt
Statement
ConditionOpt:
Condition
ConditionOpt
::=
Condition
?
referenced by:
Statement
ForInitStatement:
ExpressionStatement
SimpleDeclaration
ForInitStatement
::=
ExpressionStatement
|
SimpleDeclaration
referenced by:
Statement
TFDeclaration:
BlockDeclaration
FunctionDefinition
TemplateDeclaration
ExplicitInstantiation
LinkageSpecification
AsmDefinition
NamespaceDefinition
NamespaceDecl
TFDeclaration
::=
BlockDeclaration
|
FunctionDefinition
|
TemplateDeclaration
|
ExplicitInstantiation
|
LinkageSpecification
|
AsmDefinition
|
NamespaceDefinition
|
NamespaceDecl
referenced by:
LinkageSpecification
TranslationUnit
BlockDeclaration:
SimpleDeclaration
BlockDeclaration
::=
SimpleDeclaration
referenced by:
ExplicitInstantiation
Statement
TFDeclaration
SimpleDeclaration:
DeclSpecifier
InitDeclarator
,
;
SimpleDeclaration
::=
DeclSpecifier
(
InitDeclarator
( ','
InitDeclarator
)* )? ';'
referenced by:
BlockDeclaration
ForInitStatement
TemplateDeclaration
DeclSpecifier:
UberModifierSeq
UberTypeKeyword
UberModifier
UberTypeKeyword
PQTypeName
ElaboratedOrSpecifier
UberModifierSeqOpt
DeclSpecifier
::=
UberModifierSeq
? ( (
PQTypeName
|
ElaboratedOrSpecifier
)
UberModifierSeqOpt
|
UberTypeKeyword
(
UberModifier
|
UberTypeKeyword
)* )
referenced by:
FunctionDefinition
MemberDeclaration
SimpleDeclaration
ElaboratedOrSpecifier:
ElaboratedTypeSpecifier
ClassSpecifier
EnumSpecifier
ElaboratedOrSpecifier
::=
ElaboratedTypeSpecifier
|
ClassSpecifier
|
EnumSpecifier
referenced by:
DeclSpecifier
TypeSpecifier
UberModifierSeq:
UberModifier
UberModifierSeq
::=
UberModifier
+
referenced by:
DeclSpecifier
UberModifierSeqOpt
UberModifierSeqOpt:
UberModifierSeq
UberModifierSeqOpt
::=
UberModifierSeq
?
referenced by:
DeclSpecifier
UberCVQualifierSeq:
UberCVQualifier
UberCVQualifierSeq
::=
UberCVQualifier
+
referenced by:
TypeSpecifier
UberCVQualifierSeqOpt
UberCVQualifierSeqOpt:
UberCVQualifierSeq
UberCVQualifierSeqOpt
::=
UberCVQualifierSeq
?
referenced by:
TypeSpecifier
UberModifier:
auto
register
static
extern
mutable
inline
virtual
friend
typedef
const
volatile
UberModifier
::= 'auto'
| 'register'
| 'static'
| 'extern'
| 'mutable'
| 'inline'
| 'virtual'
| 'friend'
| 'typedef'
| 'const'
| 'volatile'
referenced by:
DeclSpecifier
UberModifierSeq
UberCVQualifier:
const
volatile
UberCVQualifier
::= 'const'
| 'volatile'
referenced by:
TypeSpecifier
UberCVQualifierSeq
UberTypeKeyword:
char
wchar_t
bool
short
int
long
signed
unsigned
float
double
void
UberTypeKeyword
::= 'char'
| 'wchar_t'
| 'bool'
| 'short'
| 'int'
| 'long'
| 'signed'
| 'unsigned'
| 'float'
| 'double'
| 'void'
referenced by:
DeclSpecifier
TypeSpecifier
ElaboratedTypeSpecifier:
ClassKey
enum
typename
PQTypeName
ElaboratedTypeSpecifier
::= (
ClassKey
| 'enum' | 'typename' )
PQTypeName
referenced by:
ElaboratedOrSpecifier
TypeSpecifier:
UberCVQualifierSeq
UberTypeKeyword
UberCVQualifier
UberTypeKeyword
PQTypeName
ElaboratedOrSpecifier
UberCVQualifierSeqOpt
TypeSpecifier
::=
UberCVQualifierSeq
? ( (
PQTypeName
|
ElaboratedOrSpecifier
)
UberCVQualifierSeqOpt
|
UberTypeKeyword
(
UberCVQualifier
|
UberTypeKeyword
)* )
referenced by:
Condition
ConversionTypeId
HandlerParameter
NewTypeId
ParameterDeclaration
TypeId
PQTypeName:
::
PQTypeName_ncc
PQTypeName
::= '::'?
PQTypeName_ncc
referenced by:
CtorExpressionType
DeclSpecifier
ElaboratedTypeSpecifier
MemInitializerId
PQClassName
TypeSpecifier
PQTypeName_ncc:
Identifier
<
TemplateArgumentListOpt
>
::
>
TemplateArgumentListOpt
<
Identifier
template
PQTypeName_ncc
template
TemplateId
TemplateId
PQTypeName_ncc
::=
Identifier
( ( '<'
TemplateArgumentListOpt
'>' )? '::' ( 'template'
Identifier
'<'
TemplateArgumentListOpt
'>' '::' )* (
PQTypeName_ncc
| 'template'
TemplateId
) )?
|
TemplateId
referenced by:
PQTypeName
PQTypeName_ncc
EnumSpecifier:
enum
Identifier
{
EnumeratorDefinition
,
EnumeratorDefinition
}
EnumSpecifier
::= 'enum'
Identifier
? '{' (
EnumeratorDefinition
',' )*
EnumeratorDefinition
? '}'
referenced by:
ElaboratedOrSpecifier
EnumeratorDefinition:
Identifier
=
ConstantExpression
EnumeratorDefinition
::=
Identifier
( '='
ConstantExpression
)?
referenced by:
EnumSpecifier
AsmDefinition:
asm
(
StringLiteral
)
;
AsmDefinition
::= 'asm' '('
StringLiteral
')' ';'
referenced by:
Statement
TFDeclaration
LinkageSpecification:
extern
TOK_STRING_LITERAL
{
TranslationUnit
}
TFDeclaration
LinkageSpecification
::= 'extern'
TOK_STRING_LITERAL
( '{'
TranslationUnit
'}' |
TFDeclaration
)
referenced by:
TFDeclaration
InitDeclarator:
Declarator
Initializer
InitDeclarator
::=
Declarator
Initializer
?
referenced by:
SimpleDeclaration
Initializer:
=
SimpleInitializerClause
(
ExpressionList
)
Initializer
::= '='
SimpleInitializerClause
| '('
ExpressionList
')'
referenced by:
InitDeclarator
SimpleInitializerClause:
AssignmentExpression
CompoundInitializer
SimpleInitializerClause
::=
AssignmentExpression
|
CompoundInitializer
referenced by:
Initializer
InitializerClause
InitializerClause:
Designator
=
SimpleInitializerClause
InitializerClause
::= (
Designator
+ '=' )?
SimpleInitializerClause
referenced by:
CompoundInitializer
CompoundInitializer:
{
InitializerClause
,
CommaOpt
}
CompoundInitializer
::= '{' (
InitializerClause
( ','
InitializerClause
)*
CommaOpt
)? '}'
referenced by:
SimpleInitializerClause
CommaOpt:
,
CommaOpt
::= ','?
referenced by:
CompoundInitializer
Designator:
.
Identifier
[
ConstantExpression
...
ConstantExpression
]
Designator
::= '.'
Identifier
| '['
ConstantExpression
( '...'
ConstantExpression
)? ']'
referenced by:
InitializerClause
Declarator:
PtrToMemberName
*
&
CVQualifierSeqOpt
IdExpression
Identifier
<
TemplateArgumentListOpt
>
template
Identifier
<
TemplateArgumentListOpt
>
::
~
Identifier
<
TemplateArgumentListOpt
>
(
Declarator
)
(
ParameterDeclarationClause
)
CVQualifierSeqOpt
ExceptionSpecificationOpt
[
ConstantExpressionOpt
]
Declarator
::= ( (
PtrToMemberName
? '*' | '&' )
CVQualifierSeqOpt
)* (
IdExpression
| ( (
Identifier
( '<'
TemplateArgumentListOpt
'>' )? | 'template'
Identifier
'<'
TemplateArgumentListOpt
'>' ) '::' )* '~'
Identifier
( '<'
TemplateArgumentListOpt
'>' )? | '('
Declarator
')' ) ( '('
ParameterDeclarationClause
')'
CVQualifierSeqOpt
ExceptionSpecificationOpt
| '['
ConstantExpressionOpt
']' )*
referenced by:
Condition
Declarator
FDDeclarator
InitDeclarator
MemberDeclarator
UnqualifiedDeclarator
PtrToMemberName:
IdExpression
::
PtrToMemberName
::=
IdExpression
'::'
referenced by:
AbstractDeclarator
ConversionTypeId
Declarator
NewTypeId
CVQualifierSeqOpt:
CVQualifier
CVQualifierSeqOpt
::=
CVQualifier
*
referenced by:
AbstractDeclarator
ConversionTypeId
Declarator
DirectAbstractDeclarator
NewTypeId
CVQualifier:
const
volatile
CVQualifier
::= 'const'
| 'volatile'
referenced by:
CVQualifierSeqOpt
TypeId:
TypeSpecifier
AbstractDeclaratorOpt
TypeId
::=
TypeSpecifier
AbstractDeclaratorOpt
referenced by:
CastExpression
DefaultTypeOpt
ExceptionSpecificationOpt
NewExpression
TemplateArgument
AbstractDeclaratorOpt:
AbstractDeclarator
AbstractDeclaratorOpt
::=
AbstractDeclarator
?
referenced by:
AbstractDeclarator
HandlerParameter
ParameterDeclarator
TypeId
AbstractDeclarator:
PtrToMemberName
*
&
CVQualifierSeqOpt
AbstractDeclaratorOpt
DirectAbstractDeclarator
AbstractDeclarator
::= (
PtrToMemberName
? '*' | '&' )
CVQualifierSeqOpt
AbstractDeclaratorOpt
|
DirectAbstractDeclarator
referenced by:
AbstractDeclaratorOpt
DirectAbstractDeclarator
DirectAbstractDeclaratorOpt:
DirectAbstractDeclarator
DirectAbstractDeclaratorOpt
::=
DirectAbstractDeclarator
?
referenced by:
DirectAbstractDeclarator
DirectAbstractDeclarator:
DirectAbstractDeclaratorOpt
(
ParameterDeclarationClause
)
CVQualifierSeqOpt
ExceptionSpecificationOpt
[
ConstantExpressionOpt
]
(
AbstractDeclarator
)
DirectAbstractDeclarator
::=
DirectAbstractDeclaratorOpt
( '('
ParameterDeclarationClause
')'
CVQualifierSeqOpt
ExceptionSpecificationOpt
| '['
ConstantExpressionOpt
']' )
| '('
AbstractDeclarator
')'
referenced by:
AbstractDeclarator
DirectAbstractDeclaratorOpt
ParameterDeclarationClause:
ParameterDeclaration
,
...
ParameterDeclaration
...
ParameterDeclarationClause
::= ( (
ParameterDeclaration
',' )* ( '...' |
ParameterDeclaration
'...'? ) )?
referenced by:
Declarator
DirectAbstractDeclarator
ParameterDeclaration:
TypeSpecifier
register
register
TypeSpecifier
ParameterDeclarator
ParameterDeclaration
::= (
TypeSpecifier
'register'? | 'register'
TypeSpecifier
)
ParameterDeclarator
referenced by:
ParameterDeclarationClause
TemplateParameterList
ParameterDeclarator:
UnqualifiedDeclarator
AbstractDeclaratorOpt
=
AssignmentExpression
ParameterDeclarator
::= (
UnqualifiedDeclarator
|
AbstractDeclaratorOpt
) ( '='
AssignmentExpression
)?
referenced by:
ParameterDeclaration
FunctionDefinition:
DeclSpecifier
FDDeclarator
FunctionBody
try
FunctionBody
HandlerSeq
CDtorModifierSeq
FDDeclarator
CtorInitializerOpt
FunctionBody
try
CtorInitializerOpt
FunctionBody
HandlerSeq
FunctionDefinition
::=
DeclSpecifier
FDDeclarator
(
FunctionBody
| 'try'
FunctionBody
HandlerSeq
)
|
CDtorModifierSeq
?
FDDeclarator
(
CtorInitializerOpt
FunctionBody
| 'try'
CtorInitializerOpt
FunctionBody
HandlerSeq
)
referenced by:
MemberDeclaration
TFDeclaration
TemplateDeclaration
FDDeclarator:
Declarator
FDDeclarator
::=
Declarator
referenced by:
FunctionDefinition
FunctionBody:
CompoundStatement
FunctionBody
::=
CompoundStatement
referenced by:
FunctionDefinition
CtorInitializerOpt:
:
MemInitializer
,
CtorInitializerOpt
::= ( ':'
MemInitializer
( ','
MemInitializer
)* )?
referenced by:
FunctionDefinition
ClassSpecifier:
ClassKey
ClassHeadNameOpt
BaseClauseOpt
{
;
MemberDeclaration
AccessSpecifier
:
}
ClassSpecifier
::=
ClassKey
ClassHeadNameOpt
BaseClauseOpt
'{' ( ';' |
MemberDeclaration
|
AccessSpecifier
':' )* '}'
referenced by:
ElaboratedOrSpecifier
ClassHeadNameOpt:
Identifier
<
TemplateArgumentListOpt
>
template
Identifier
<
TemplateArgumentListOpt
>
::
Identifier
TemplateId
ClassHeadNameOpt
::= ( ( (
Identifier
( '<'
TemplateArgumentListOpt
'>' )? | 'template'
Identifier
'<'
TemplateArgumentListOpt
'>' ) '::' )* (
Identifier
|
TemplateId
) )?
referenced by:
ClassSpecifier
ClassKey:
class
struct
union
ClassKey
::= 'class'
| 'struct'
| 'union'
referenced by:
ClassSpecifier
ElaboratedTypeSpecifier
AccessSpecifier:
public
private
protected
AccessSpecifier
::= 'public'
| 'private'
| 'protected'
referenced by:
AccessSpecifierOpt
BaseSpecifier
ClassSpecifier
MemberDeclaration:
DeclSpecifier
MemberDeclarator
,
PQualifiedId
using
IdExpression
;
FunctionDefinition
CDtorProtoDecl
TemplateDeclaration
MemberDeclaration
::= (
DeclSpecifier
(
MemberDeclarator
( ','
MemberDeclarator
)* )? |
PQualifiedId
| 'using'
IdExpression
) ';'
|
FunctionDefinition
|
CDtorProtoDecl
|
TemplateDeclaration
referenced by:
ClassSpecifier
CDtorProtoDecl:
CDtorModifierSeq
MemberDeclarator
;
CDtorProtoDecl
::=
CDtorModifierSeq
?
MemberDeclarator
';'
referenced by:
MemberDeclaration
TemplateDeclaration
MemberDeclarator:
Declarator
=
ConstantExpression
IdentifierOpt
:
ConstantExpression
MemberDeclarator
::=
Declarator
( '='
ConstantExpression
)?
|
IdentifierOpt
':'
ConstantExpression
referenced by:
CDtorProtoDecl
MemberDeclaration
IdentifierOpt:
Identifier
IdentifierOpt
::=
Identifier
?
referenced by:
MemberDeclarator
NamespaceDefinition
TemplateParameterList
CDtorModifier:
explicit
virtual
inline
friend
CDtorModifier
::= 'explicit'
| 'virtual'
| 'inline'
| 'friend'
referenced by:
CDtorModifierSeq
CDtorModifierSeq:
CDtorModifier
CDtorModifierSeq
::=
CDtorModifier
+
referenced by:
CDtorProtoDecl
FunctionDefinition
BaseClauseOpt:
:
BaseSpecifier
,
BaseClauseOpt
::= ( ':'
BaseSpecifier
( ','
BaseSpecifier
)* )?
referenced by:
ClassSpecifier
BaseSpecifier:
virtual
AccessSpecifierOpt
AccessSpecifier
VirtualOpt
PQClassName
BaseSpecifier
::= ( 'virtual'
AccessSpecifierOpt
|
AccessSpecifier
VirtualOpt
)?
PQClassName
referenced by:
BaseClauseOpt
VirtualOpt:
virtual
VirtualOpt
::= 'virtual'?
referenced by:
BaseSpecifier
AccessSpecifierOpt:
AccessSpecifier
AccessSpecifierOpt
::=
AccessSpecifier
?
referenced by:
BaseSpecifier
PQClassName:
PQTypeName
PQClassName
::=
PQTypeName
referenced by:
BaseSpecifier
ConversionFunctionId:
operator
ConversionTypeId
ConversionFunctionId
::= 'operator'
ConversionTypeId
referenced by:
NAD1
UnqualifiedId
ConversionTypeId:
TypeSpecifier
PtrToMemberName
*
&
CVQualifierSeqOpt
ConversionTypeId
::=
TypeSpecifier
( (
PtrToMemberName
? '*' | '&' )
CVQualifierSeqOpt
)*
referenced by:
ConversionFunctionId
MemInitializer:
MemInitializerId
(
ExpressionListOpt
)
MemInitializer
::=
MemInitializerId
'('
ExpressionListOpt
')'
referenced by:
CtorInitializerOpt
MemInitializerId:
PQTypeName
MemInitializerId
::=
PQTypeName
referenced by:
MemInitializer
OperatorFunctionId:
operator
Operator
OperatorFunctionId
::= 'operator'
Operator
referenced by:
NAD2
TemplateId
UnqualifiedId
Operator:
new
delete
[
]
!
~
++
--
+
-
*
/
%
<<
>>
&
^
|
=
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
==
!=
<
>
<=
>=
&&
||
->
->*
[
]
(
)
,
Operator
::= ( 'new' | 'delete' ) ( '[' ']' )?
| '!'
| '~'
| '++'
| '--'
| '+'
| '-'
| '*'
| '/'
| '%'
| '<<'
| '>>'
| '&'
| '^'
| '|'
| '='
| '+='
| '-='
| '*='
| '/='
| '%='
| '<<='
| '>>='
| '&='
| '^='
| '|='
| '=='
| '!='
| '<'
| '>'
| '<='
| '>='
| '&&'
| '||'
| '->'
| '->*'
| '[' ']'
| '(' ')'
| ','
referenced by:
OperatorFunctionId
TemplateDeclaration:
TemplatePreamble
FunctionDefinition
SimpleDeclaration
CDtorProtoDecl
TemplateDeclaration
::=
TemplatePreamble
+ (
FunctionDefinition
|
SimpleDeclaration
|
CDtorProtoDecl
)
referenced by:
MemberDeclaration
TFDeclaration
TemplatePreamble:
export
template
<
TemplateParameterList
>
TemplatePreamble
::= 'export'? 'template' '<'
TemplateParameterList
? '>'
referenced by:
TemplateDeclaration
TemplateParameterList:
ClassOrTypename
IdentifierOpt
DefaultTypeOpt
ParameterDeclaration
,
TemplateParameterList
::= (
ClassOrTypename
IdentifierOpt
DefaultTypeOpt
|
ParameterDeclaration
) ( ',' (
ClassOrTypename
IdentifierOpt
DefaultTypeOpt
|
ParameterDeclaration
) )*
referenced by:
ClassOrTypename
TemplatePreamble
ClassOrTypename:
template
<
TemplateParameterList
>
class
typename
ClassOrTypename
::= ( 'template' '<'
TemplateParameterList
'>' )? 'class'
| 'typename'
referenced by:
TemplateParameterList
DefaultTypeOpt:
=
TypeId
DefaultTypeOpt
::= ( '='
TypeId
)?
referenced by:
TemplateParameterList
TemplateArgumentListOpt:
TemplateArgumentList
TemplateArgumentListOpt
::=
TemplateArgumentList
?
referenced by:
ClassHeadNameOpt
Declarator
NAD1
NAD2
PQTypeName_ncc
PQualifiedId
TemplateId
TemplateId:
Identifier
OperatorFunctionId
<
TemplateArgumentListOpt
>
TemplateId
::= (
Identifier
|
OperatorFunctionId
) '<'
TemplateArgumentListOpt
'>'
referenced by:
ClassHeadNameOpt
PQTypeName_ncc
UnqualifiedId
TemplateArgumentList:
TemplateArgument
TemplateArgumentList
::=
TemplateArgument
referenced by:
TemplateArgumentListOpt
TemplateArgumentListTailOpt:
,
TemplateArgument
TemplateArgumentListTailOpt
::= ( ','
TemplateArgument
)?
referenced by:
TemplateArgument
TemplateArgument:
TypeId
AssignmentExpression
TemplateArgumentListTailOpt
TemplateArgument
::= (
TypeId
|
AssignmentExpression
)
TemplateArgumentListTailOpt
referenced by:
TemplateArgumentList
TemplateArgumentListTailOpt
ExplicitInstantiation:
inline
template
BlockDeclaration
ExplicitInstantiation
::= 'inline'? 'template'
BlockDeclaration
referenced by:
TFDeclaration
TryBlock:
try
CompoundStatement
HandlerSeq
TryBlock
::= 'try'
CompoundStatement
HandlerSeq
referenced by:
Statement
HandlerSeq:
Handler
HandlerSeq
::=
Handler
+
referenced by:
FunctionDefinition
TryBlock
Handler:
catch
(
HandlerParameter
...
)
CompoundStatement
Handler
::= 'catch' '(' (
HandlerParameter
| '...' ) ')'
CompoundStatement
referenced by:
HandlerSeq
HandlerParameter:
TypeSpecifier
UnqualifiedDeclarator
AbstractDeclaratorOpt
HandlerParameter
::=
TypeSpecifier
(
UnqualifiedDeclarator
|
AbstractDeclaratorOpt
)
referenced by:
Handler
UnqualifiedDeclarator:
Declarator
UnqualifiedDeclarator
::=
Declarator
referenced by:
HandlerParameter
ParameterDeclarator
ThrowExpression:
throw
AssignmentExpression
ThrowExpression
::= 'throw'
AssignmentExpression
?
referenced by:
AssignmentExpression
ExceptionSpecificationOpt:
throw
(
TypeId
,
)
ExceptionSpecificationOpt
::= ( 'throw' '(' (
TypeId
( ','
TypeId
)* )? ')' )?
referenced by:
Declarator
DirectAbstractDeclarator
NamespaceDefinition:
namespace
IdentifierOpt
{
TranslationUnit
}
NamespaceDefinition
::= 'namespace'
IdentifierOpt
'{'
TranslationUnit
'}'
referenced by:
TFDeclaration
NamespaceDecl:
namespace
Identifier
=
using
namespace
IdExpression
;
NamespaceDecl
::= ( 'namespace'
Identifier
'=' | 'using' 'namespace'? )
IdExpression
';'
referenced by:
Statement
TFDeclaration
... generated by
RR - Railroad Diagram Generator
R
R