ext_def:
external_def
;
EOFTOK
LINKAGE
{
}
template
ext_def
::=
external_def
| ';'
|
EOFTOK
|
LINKAGE
'{'
| '}'
|
template
no references
template:
template
<
template_parm
,
template_parm
>
template_def
template
::= 'template' '<'
template_parm
? ( ','
template_parm
)* '>'
template_def
referenced by:
class_dcl
ext_def
template_def:
data_dcl
att_fct_def
fct_def
fct_dcl
class_dcl
;
template_def
::=
data_dcl
|
att_fct_def
|
fct_def
|
fct_dcl
|
class_dcl
';'
referenced by:
template
identifier:
ID
qualified_tname
identifier
::=
ID
|
qualified_tname
referenced by:
template_parm
external_def:
data_dcl
att_fct_def
fct_def
fct_dcl
asm
(
STRING
)
;
external_def
::=
data_dcl
|
att_fct_def
|
fct_def
|
fct_dcl
| 'asm' '('
STRING
')' ';'
referenced by:
ext_def
fct_dcl:
decl
=
initializer
;
fct_dcl
::=
decl
( '='
initializer
)? ';'
referenced by:
cl_mem
external_def
template_def
att_fct_def:
type
decl
arg_dcl_list
check_inline
base_init
block
EMPTY
NO_ID
att_fct_def
::=
type
decl
arg_dcl_list
check_inline
(
base_init
block
|
EMPTY
|
NO_ID
)
referenced by:
cl_mem
external_def
statement
template_def
fct_def:
decl
arg_dcl_list
check_inline
base_init
block
EMPTY
NO_ID
fct_def
::=
decl
arg_dcl_list
check_inline
(
base_init
block
|
EMPTY
|
NO_ID
)
referenced by:
cl_mem
external_def
template_def
inline_fct_def:
FDEF
base_init
block
inline_fct_def
::=
FDEF
base_init
block
referenced by:
class_dcl
check_inline:
check_inline
::=
referenced by:
att_fct_def
fct_def
base_init:
:
binit
,
base_init
::= ( ':'
binit
( ','
binit
)* )?
referenced by:
att_fct_def
fct_def
inline_fct_def
binit:
ttag
(
elist
)
binit
::=
ttag
? '('
elist
')'
referenced by:
base_init
arg_dcl_list:
data_dcl
arg_dcl_list
::=
data_dcl
*
referenced by:
att_fct_def
fct_def
dl:
decl
=
initializer
ID
:
e
dl
::=
decl
( '='
initializer
)?
|
ID
? ':'
e
referenced by:
data_dcl
data_dcl:
type
dl
,
;
data_dcl
::=
type
(
dl
( ','
dl
)* )? ';'
referenced by:
arg_dcl_list
cl_mem
external_def
statement
template_def
tname:
qualified_tname
<
temp_inst_parms
>
NAME
<
temp_inst_parms
>
tname
::=
qualified_tname
( '<'
temp_inst_parms
'>' )?
|
NAME
'<'
temp_inst_parms
'>'
referenced by:
c_type
decl
term_elist
tp
ttag
type
tp:
TYPE
LINKAGE
tname
tn_list
DECL_MARKER
class_dcl
enum_dcl
tp
::=
TYPE
|
LINKAGE
|
tname
|
tn_list
?
DECL_MARKER
|
class_dcl
|
enum_dcl
referenced by:
type
type:
tp
TYPE
tname
class_dcl
enum_dcl
DECL_MARKER
type
::=
tp
(
TYPE
|
tname
|
class_dcl
|
enum_dcl
|
DECL_MARKER
)*
referenced by:
arg_type
att_fct_def
cast_type
data_dcl
exception_type
new_type
new_type2
template_parm
temp_inst_parms:
temp_inst_parm
,
temp_inst_parms
::=
temp_inst_parm
( ','
temp_inst_parm
)*
referenced by:
class_dcl
class_head
ptname
tname
new_decl2:
(
new_decl2
)
ptr
new_decl2
new_decl2
arg_list
vec
new_decl2
::= ( '('
new_decl2
')' |
ptr
new_decl2
|
new_decl2
(
arg_list
|
vec
) )?
referenced by:
new_decl2
new_type2
new_type2:
type
new_decl2
new_type2
::=
type
new_decl2
referenced by:
temp_inst_parm
temp_inst_parm:
new_type2
e
temp_inst_parm
::=
new_type2
|
e
referenced by:
temp_inst_parms
enumtag:
tag
tn_list
DECL_MARKER
enumtag
::=
tag
|
tn_list
?
DECL_MARKER
referenced by:
enum_dcl
enum_dcl:
enum
{
moe_list
}
enumtag
{
moe_list
}
enum_dcl
::= 'enum' ( '{'
moe_list
'}' |
enumtag
( '{'
moe_list
'}' )? )
referenced by:
tp
type
moe_list:
moe
,
moe_list
::=
moe
( ','
moe
)*
referenced by:
enum_dcl
template_parm:
AGGR
identifier
type
formal_decl
template_parm
::=
AGGR
identifier
|
type
formal_decl
referenced by:
template
formal_decl:
ID
ptr
formal_decl
formal_decl
vec
arg_list
(
formal_decl
)
formal_decl
::=
ID
|
ptr
formal_decl
|
formal_decl
(
vec
|
arg_list
)
| '('
formal_decl
')'
referenced by:
formal_decl
template_parm
moe:
ID
=
e
moe
::= (
ID
( '='
e
)? )?
referenced by:
moe_list
class_dcl:
class_head
cl_mem
template
}
inline_fct_def
AGGR
tag
qualified_tname
<
temp_inst_parms
>
DECL_MARKER
class_dcl
::=
class_head
(
cl_mem
|
template
)* '}'
inline_fct_def
*
|
AGGR
(
tag
|
qualified_tname
'<'
temp_inst_parms
'>' |
DECL_MARKER
)
referenced by:
template_def
tp
type
base_list:
:
base_unit
,
base_list
::= ( ':'
base_unit
( ','
base_unit
)* )?
referenced by:
class_head
base_unit:
PR
TYPE
TYPE
PR
ttag
base_unit
::= (
PR
TYPE
? |
TYPE
PR
? )?
ttag
referenced by:
base_list
class_head:
AGGR
tag
qualified_tname
<
temp_inst_parms
>
base_list
{
class_head
::=
AGGR
( (
tag
|
qualified_tname
'<'
temp_inst_parms
'>' )
base_list
)? '{'
referenced by:
class_dcl
tag:
ID
qualified_tname
tag
::=
ID
|
qualified_tname
referenced by:
class_dcl
class_head
dtorspec
enumtag
fct_attributes
term
ttag:
ID
tname
ttag
::=
ID
|
tname
referenced by:
base_unit
binit
cl_mem:
data_dcl
att_fct_def
fct_def
;
fct_dcl
PR
:
scope_qualifiers
fname
;
cl_mem
::=
data_dcl
| (
att_fct_def
|
fct_def
) ';'?
|
fct_dcl
|
PR
':'
|
scope_qualifiers
fname
';'
referenced by:
class_dcl
fname:
ID
~
TNAME
operator
oper
c_type
fname
::=
ID
| '~'
TNAME
| 'operator' (
oper
|
c_type
)
referenced by:
cl_mem
decl
oper:
+
-
*
&
|
^
SHIFTOP
==
/
RELOP
<
>
&&
||
(
)
[
]
!
~
ICOP
ASOP
=
new
delete
[
]
REF
,
REFMUL
oper
::= '+'
| '-'
| '*'
| '&'
| '|'
| '^'
|
SHIFTOP
| '=='
| '/'
|
RELOP
| '<'
| '>'
| '&&'
| '||'
| '(' ')'
| '[' ']'
| '!'
| '~'
|
ICOP
|
ASOP
| '='
| ( 'new' | 'delete' ) ( '[' ']' )?
|
REF
| ','
|
REFMUL
referenced by:
fname
prim
scope_qualifiers:
tn_list
scope_qualifiers
::=
tn_list
referenced by:
cl_mem
decl
term
tn_list:
tscope
tn_list
::=
tscope
+
referenced by:
dtorspec
enumtag
qualified_tname
scope_qualifiers
term
tp
qualified_tname:
tn_list
TNAME
qualified_tname
::=
tn_list
?
TNAME
referenced by:
arg_decl
class_dcl
class_head
identifier
tag
tname
fct_attributes:
TYPE
throw
(
tag
,
)
fct_attributes
::= (
TYPE
| 'throw' '('
tag
( ','
tag
)* ')' )*
referenced by:
arg_list
decl
decl:
decl
arg_list
(
)
fct_attributes
elist
)
vec
tname
arg_list
(
*
&
ID
MEMPTR
decl
)
arg_list
elist
)
)
fct_attributes
vec
scope_qualifiers
ID
.
fname
ptr
decl
tname
(
decl
)
decl
::=
decl
(
arg_list
| '(' ( ')'
fct_attributes
|
elist
')' ) |
vec
)
|
tname
(
arg_list
| '(' ( ( ( '*' | '&' )
ID
|
MEMPTR
decl
) ')'
arg_list
|
elist
')' | ')'
fct_attributes
) |
vec
)
|
scope_qualifiers
? (
ID
'.' )?
fname
|
ptr
(
decl
|
tname
)
| '('
decl
')'
referenced by:
att_fct_def
decl
dl
fct_dcl
fct_def
arg_decl:
ID
ptr
qualified_tname
arg_decl
arg_decl
vec
arg_list
(
arg_decl
)
arg_decl
::= (
ID
|
ptr
(
qualified_tname
|
arg_decl
) |
arg_decl
(
vec
|
arg_list
) | '('
arg_decl
')' )?
referenced by:
arg_decl
arg_type
exception_type
new_decl:
ptr
new_decl
new_decl
vec
new_decl
::= (
ptr
new_decl
|
new_decl
vec
)?
referenced by:
new_decl
new_type
cast_decl:
ptr
cast_decl
cast_decl
vec
(
cast_decl
)
arg_list
vec
cast_decl
::= (
ptr
cast_decl
|
cast_decl
vec
| '('
cast_decl
')' (
arg_list
|
vec
) )?
referenced by:
cast_decl
cast_type
caselab_stmt:
caselablist
statement
caselab_stmt
::=
caselablist
statement
referenced by:
block
simple
statement
caselablist:
caselablist
::=
referenced by:
caselab_stmt
condition:
(
e
)
condition
::= '('
e
')'
referenced by:
simple
statement
block:
{
template
caselab_stmt
}
block
::= '{' ( 'template' |
caselab_stmt
)* '}'
referenced by:
att_fct_def
fct_def
handler
inline_fct_def
statement
simple:
ee
break
continue
goto
ID
do
caselab_stmt
while
condition
asm
(
STRING
)
simple
::=
ee
| 'break'
| 'continue'
| 'goto'
ID
| 'do'
caselab_stmt
'while'
condition
| 'asm' '('
STRING
')'
referenced by:
statement
statement:
try
block
handler
simple
return
e
;
TYPE
STRING
block
data_dcl
att_fct_def
if
condition
caselab_stmt
else
while
switch
condition
for
(
caselab_stmt
e
;
e
)
ID
TNAME
case
e
default
:
caselab_stmt
statement
::= (
simple
| 'return'
e
)? ';'
| (
TYPE
STRING
)?
block
|
data_dcl
|
att_fct_def
| ( 'if'
condition
(
caselab_stmt
'else' )? | ( 'while' | 'switch' )
condition
| 'for' '('
caselab_stmt
e
';'
e
')' | (
ID
|
TNAME
| 'case'
e
| 'default' ) ':' )
caselab_stmt
| 'try'
block
handler
*
referenced by:
caselab_stmt
handler:
catch
exception_type
block
handler
::= 'catch'
exception_type
block
referenced by:
statement
exception_type:
(
type
arg_decl
...
)
exception_type
::= '(' (
type
arg_decl
| '...' ) ')'
referenced by:
handler
elist:
initializer
,
elist
::=
initializer
( ','
initializer
)*
referenced by:
binit
decl
initializer
term_elist
initializer:
e
{
elist
}
initializer
::=
e
| '{'
elist
'}'
referenced by:
arg_type
dl
elist
fct_dcl
ee:
ee
=
+
-
*
&
|
^
SHIFTOP
==
/
RELOP
>
<
&&
||
ASOP
,
?
ee
:
REFMUL
ee
MEM
delete
[
e
]
throw
term
ee
::=
ee
( '=' | '+' | '-' | '*' | '&' | '|' | '^' |
SHIFTOP
| '==' | '/' |
RELOP
| '>' | '<' | '&&' | '||' |
ASOP
| ',' | '?'
ee
':' |
REFMUL
)
ee
| (
MEM
? 'delete' ( '['
e
']' )? | 'throw' )?
term
referenced by:
ee
simple
e:
e
=
+
-
*
&
|
^
SHIFTOP
==
/
RELOP
<
>
&&
||
ASOP
,
?
e
:
REFMUL
e
MEM
delete
[
e
]
throw
term
e
::= (
e
( '=' | '+' | '-' | '*' | '&' | '|' | '^' |
SHIFTOP
| '==' | '/' |
RELOP
| '<' | '>' | '&&' | '||' |
ASOP
| ',' | '?'
e
':' |
REFMUL
)
e
| (
MEM
? 'delete' ( '['
e
']' )? | 'throw' )?
term
)?
referenced by:
condition
dl
e
ee
initializer
moe
statement
temp_inst_parm
term
vec
term:
MEM
new
cast_type
new_type
term
ICOP
[
e
]
REF
.
prim
MEMQ
scope_qualifiers
prim
TNAME
dtorspec
cast_type
*
&
-
+
!
~
ICOP
term
sizeof
term
cast_type
scope_qualifiers
prim
tn_list
~
tag
TYPE
term_elist
(
e
)
ZERO
ICON
FCON
STRING
CCON
this
term
::=
MEM
? 'new' (
cast_type
|
new_type
)
|
term
(
ICOP
| '['
e
']' | (
REF
| '.' ) (
prim
| (
MEMQ
|
scope_qualifiers
) (
prim
|
TNAME
) |
dtorspec
) )
| (
cast_type
| '*' | '&' | '-' | '+' | '!' | '~' |
ICOP
)
term
| 'sizeof' (
term
|
cast_type
)
|
scope_qualifiers
?
prim
|
tn_list
'~' (
tag
|
TYPE
)
|
term_elist
| '('
e
')'
|
ZERO
|
ICON
|
FCON
|
STRING
|
CCON
| 'this'
referenced by:
e
ee
term
term_elist
dtorspec:
MEMQ
tn_list
~
tag
TYPE
TYPE
MEM
~
TYPE
tag
dtorspec
::= (
MEMQ
|
tn_list
)? '~' (
tag
|
TYPE
)
|
TYPE
MEM
'~' (
TYPE
|
tag
)
referenced by:
term
term_elist:
TYPE
tname
term
(
elist
)
MEM
new
(
elist
)
cast_type
new_type
term_elist
::= (
TYPE
|
tname
|
term
) '('
elist
')'
|
MEM
? 'new' '('
elist
')' (
cast_type
|
new_type
)
referenced by:
term
ptname:
PTNAME
<
temp_inst_parms
>
ptname
::=
PTNAME
'<'
temp_inst_parms
'>'
referenced by:
ptr
tscope
tscope:
ptname
::
MEM
tscope
::=
ptname
? '::'
|
MEM
referenced by:
tn_list
prim:
ID
operator
oper
c_type
prim
::=
ID
| 'operator' (
oper
|
c_type
)
referenced by:
term
cast_type:
(
type
cast_decl
)
cast_type
::= '('
type
cast_decl
')'
referenced by:
term
term_elist
c_type:
TYPE
tname
ptr
c_type
::= (
TYPE
|
tname
)+
ptr
*
referenced by:
fname
prim
new_type:
type
new_decl
new_type
::=
type
new_decl
referenced by:
term
term_elist
arg_type:
type
arg_decl
=
initializer
arg_type
::=
type
arg_decl
( '='
initializer
)?
referenced by:
at
arg_list:
(
at
,
ellipsis_opt
)
fct_attributes
arg_list
::= '('
at
( ','
at
)*
ellipsis_opt
')'
fct_attributes
referenced by:
arg_decl
cast_decl
decl
formal_decl
new_decl2
at:
arg_type
at
::=
arg_type
?
referenced by:
arg_list
ellipsis_opt:
,
...
ellipsis_opt
::= ( ','? '...' )?
referenced by:
arg_list
ptr:
*
&
ptname
MEMPTR
TYPE
TYPE
ptr
::= ( '*' | '&' |
ptname
?
MEMPTR
)
TYPE
?
TYPE
*
referenced by:
arg_decl
c_type
cast_decl
decl
formal_decl
new_decl
new_decl2
vec:
[
e
]
!
vec
::= '['
e
']'
| '!'
referenced by:
arg_decl
cast_decl
decl
formal_decl
new_decl
new_decl2
SHIFTOP:
<<
>>
SHIFTOP
::= '<<'
| '>>'
referenced by:
e
ee
oper
... generated by
RR - Railroad Diagram Generator
R
R