ext_def: external_def ; EOFTOK LINKAGE { } template
ext_def  ::= external_def
           | ';'
           | EOFTOK
           | LINKAGE '{'
           | '}'
           | template
no referencestemplate: 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 ;
         ::= data_dcl
           | att_fct_def
           | fct_def
           | fct_dcl
           | class_dcl ';'
referenced by: template identifier: ID qualified_tname
         ::= ID
           | qualified_tname
referenced by: template_parm external_def: data_dcl att_fct_def fct_def fct_dcl asm ( STRING ) ;
         ::= 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 referenced by: cl_mem external_def statement template_def 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
         ::= FDEF base_init block
referenced by: class_dcl check_inline:
         ::=
referenced by: att_fct_def fct_def base_init: : binit ,
         ::= ( ':' 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
         ::= 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_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 ')' | ptr new_decl2 | new_decl2 ( arg_list | vec ) )?
referenced by: new_decl2 new_type2 new_type2: type new_decl2
         ::= type new_decl2
referenced by: temp_inst_parm temp_inst_parm: new_type2 e
         ::= 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
         ::= AGGR identifier
           | type formal_decl
referenced by: template formal_decl: ID ptr formal_decl formal_decl vec arg_list ( 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_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_unit ( ',' base_unit )* )?
referenced by: class_head base_unit: PR TYPE TYPE PR ttag
         ::= ( PR TYPE? | TYPE PR? )? ttag
referenced by: base_list class_head: AGGR tag qualified_tname < temp_inst_parms > base_list {
         ::= 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
         ::= 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
         ::= tn_list? TNAME
referenced by: arg_decl class_dcl class_head identifier tag tname fct_attributes: TYPE throw ( tag , )
         ::= ( 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 referenced by: new_decl new_type cast_decl: ptr cast_decl cast_decl vec ( cast_decl ) arg_list vec
         ::= ( ptr cast_decl | cast_decl vec | '(' cast_decl ')' ( arg_list | vec ) )?
referenced by: cast_decl cast_type caselab_stmt: caselablist statement
         ::= caselablist statement
referenced by: block simple statement caselablist:
         ::=
referenced by: caselab_stmt condition: ( e )
         ::= '(' 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
         ::= ( 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 referenced by: statement exception_type: ( type arg_decl ... )
         ::= '(' ( type arg_decl | '...' ) ')'
referenced by: handler elist: initializer ,
elist    ::= initializer ( ',' initializer )*
referenced by: binit decl initializer term_elist initializer: e { elist }
         ::= 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
         ::= ( 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 )
         ::= '(' 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 referenced by: term term_elist 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: , ...
         ::= ( ','? '...' )?
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