ext_def:
external_def
;
ext_def
::=
external_def
| ';'
no references
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
;
fct_dcl
::=
decl
';'
referenced by:
cl_mem
external_def
att_fct_def:
type
decl
arg_dcl_list
base_init
block
att_fct_def
::=
type
decl
arg_dcl_list
base_init
block
referenced by:
cl_mem
external_def
statement
fct_def:
decl
arg_dcl_list
base_init
block
fct_def
::=
decl
arg_dcl_list
base_init
block
referenced by:
cl_mem
external_def
base_init:
:
binit
,
base_init
::= ( ':'
binit
( ','
binit
)* )?
referenced by:
att_fct_def
fct_def
binit:
ID
(
elist
)
binit
::=
ID
? '('
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
tp:
TYPE
TNAME
class_dcl
enum_dcl
tp
::=
TYPE
|
TNAME
|
class_dcl
|
enum_dcl
referenced by:
type
type:
tp
TYPE
TNAME
class_dcl
enum_dcl
type
::=
tp
(
TYPE
|
TNAME
|
class_dcl
|
enum_dcl
)*
referenced by:
arg_type
att_fct_def
cast_type
data_dcl
new_type
enum_dcl:
enum
tag
{
moe
,
}
enum_dcl
::= 'enum'
tag
? '{'
moe
( ','
moe
)* '}'
referenced by:
tp
type
moe:
ID
=
e
moe
::= (
ID
( '='
e
)? )?
referenced by:
enum_dcl
class_dcl:
class_head
mem_list
}
TYPE
class_dcl
::=
class_head
mem_list
'}'
TYPE
?
referenced by:
tp
type
class_head:
AGGR
tag
:
public
TNAME
{
class_head
::=
AGGR
(
tag
( ':' 'public'?
TNAME
)? )? '{'
referenced by:
class_dcl
tag:
ID
TNAME
tag
::=
ID
|
TNAME
referenced by:
cl_mem
class_head
enum_dcl
prim
term
mem_list:
cl_mem_list
public
:
cl_mem_list
mem_list
::=
cl_mem_list
( 'public' ':'?
cl_mem_list
)?
referenced by:
class_dcl
cl_mem_list:
cl_mem
cl_mem_list
::=
cl_mem
*
referenced by:
mem_list
cl_mem:
data_dcl
att_fct_def
fct_def
;
fct_dcl
tn_list
tag
;
cl_mem
::=
data_dcl
| (
att_fct_def
|
fct_def
) ';'?
|
fct_dcl
|
tn_list
tag
';'
referenced by:
cl_mem_list
fname:
ID
~
TNAME
operator
oper
c_type
fname
::=
ID
| '~'
TNAME
| 'operator' (
oper
|
c_type
)
referenced by:
decl
oper:
+
-
*
&
|
^
<<
==
/
RELOP
&&
||
(
)
[
]
!
~
ICOP
ASOP
=
new
delete
oper
::= '+'
| '-'
| '*'
| '&'
| '|'
| '^'
| '<<'
| '=='
| '/'
|
RELOP
| '&&'
| '||'
| '(' ')'
| '[' ']'
| '!'
| '~'
|
ICOP
|
ASOP
| '='
| 'new'
| 'delete'
referenced by:
fname
prim
tn_list:
TNAME
.
MEM
TNAME
ID
.
tn_list
::=
TNAME
( '.' |
MEM
) ( (
TNAME
|
ID
) '.' )*
referenced by:
cl_mem
decl
decl:
decl
TNAME
arg_list
(
elist
)
vec
ID
.
fname
tn_list
fname
TNAME
ptr
decl
TNAME
(
decl
)
arg_list
vec
decl
::= (
decl
|
TNAME
) (
arg_list
| '('
elist
')' |
vec
)
| (
ID
'.' )?
fname
|
tn_list
(
fname
|
TNAME
)
|
ptr
(
decl
|
TNAME
)
| '('
decl
')' (
arg_list
|
vec
)
referenced by:
att_fct_def
decl
dl
fct_dcl
fct_def
arg_decl:
ID
ptr
arg_decl
arg_decl
vec
(
arg_decl
)
arg_list
vec
arg_decl
::= (
ID
|
ptr
arg_decl
|
arg_decl
vec
| '('
arg_decl
')' (
arg_list
|
vec
) )?
referenced by:
arg_decl
arg_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
condition:
(
e
)
condition
::= '('
e
')'
referenced by:
simple
statement
block:
{
statement
}
block
::= '{'
statement
* '}'
referenced by:
att_fct_def
fct_def
statement
simple:
return
e
break
continue
goto
ID
do
statement
while
condition
simple
::= 'return'?
e
| 'break'
| 'continue'
| 'goto'
ID
| 'do'
statement
'while'
condition
referenced by:
statement
statement:
simple
asm
(
STRING
)
;
data_dcl
att_fct_def
block
if
condition
statement
else
while
switch
condition
for
(
statement
e
;
e
)
ID
case
e
default
:
statement
statement
::= (
simple
| 'asm' '('
STRING
')' ) ';'
|
data_dcl
|
att_fct_def
|
block
| ( 'if'
condition
(
statement
'else' )? | ( 'while' | 'switch' )
condition
| 'for' '('
statement
e
';'
e
')' | (
ID
| 'case'
e
| 'default' ) ':' )
statement
referenced by:
block
simple
statement
elist:
initializer
,
elist
::=
initializer
( ','
initializer
)*
referenced by:
binit
decl
initializer
term
initializer:
e
{
elist
}
initializer
::=
e
| '{'
elist
'}'
referenced by:
arg_type
dl
elist
e:
e
=
+
-
*
&
|
^
<<
==
/
RELOP
&&
||
ASOP
,
?
e
:
e
delete
[
e
]
term
e
::= (
e
( '=' | '+' | '-' | '*' | '&' | '|' | '^' | '<<' | '==' | '/' |
RELOP
| '&&' | '||' |
ASOP
| ',' | '?'
e
':' )
e
| ( 'delete' ( '['
e
']' )? )?
term
)?
referenced by:
condition
dl
e
initializer
moe
simple
statement
term
vec
term:
TYPE
TNAME
(
elist
(
e
)
new
new_type
(
new_type
)
term
ICOP
[
e
]
(
elist
)
REF
.
prim
TNAME
CAST
cast_type
ENDCAST
*
&
-
+
!
~
ICOP
term
sizeof
term
CAST
cast_type
ENDCAST
MEM
tag
prim
ZERO
ICON
FCON
STRING
CCON
this
term
::= ( (
TYPE
|
TNAME
) '('
elist
| '('
e
) ')'
| 'new' (
new_type
| '('
new_type
')' )
|
term
(
ICOP
| '['
e
']' | '('
elist
')' | (
REF
| '.' ) (
prim
|
TNAME
) )
| (
CAST
cast_type
ENDCAST
| '*' | '&' | '-' | '+' | '!' | '~' |
ICOP
)
term
| 'sizeof' (
term
|
CAST
cast_type
ENDCAST
)
|
MEM
tag
|
prim
|
ZERO
|
ICON
|
FCON
|
STRING
|
CCON
| 'this'
referenced by:
e
term
prim:
ID
MEM
tag
operator
oper
c_type
TNAME
MEM
tag
operator
oper
c_type
operator
oper
c_type
prim
::=
ID
(
MEM
(
tag
| 'operator' (
oper
|
c_type
) ) )?
|
TNAME
MEM
(
tag
| 'operator' (
oper
|
c_type
) )
| 'operator' (
oper
|
c_type
)
referenced by:
term
cast_type:
type
cast_decl
cast_type
::=
type
cast_decl
referenced by:
term
c_tp:
TYPE
TNAME
c_tp
::=
TYPE
|
TNAME
referenced by:
c_type
c_type:
c_tp
ptr
c_type
::=
c_tp
ptr
*
referenced by:
fname
prim
new_type:
type
new_decl
new_type
::=
type
new_decl
referenced by:
term
arg_type:
type
arg_decl
=
initializer
arg_type
::=
type
arg_decl
( '='
initializer
)?
referenced by:
at
arg_list:
(
at
,
,
...
)
arg_list
::= '('
at
( ','
at
)* ( ','? '...' )? ')'
referenced by:
arg_decl
cast_decl
decl
at:
arg_type
at
::=
arg_type
?
referenced by:
arg_list
ptr:
*
&
TYPE
ptr
::= ( '*' | '&' )
TYPE
?
referenced by:
arg_decl
c_type
cast_decl
decl
new_decl
vec:
[
e
]
vec
::= '['
e
']'
referenced by:
arg_decl
cast_decl
decl
new_decl
... generated by
RR - Railroad Diagram Generator
R
R