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 referencesexpect-string-literal:
expect-string-literal
         ::=
referenced by: asm-definition based-expression postfix-expression static_assert-declaration expect-identifier:
         ::=
referenced by: namespace-alias-definition namespace-key expect-id-expression:
         ::=
referenced by: postfix-expression expect-type-name:
         ::=
referenced by: pseudo-destructor-name unqualified-id expect-type-id:
         ::=
referenced by: cast-expression exception-specification goal-symbol postfix-expression expect-qualified-namespace-specifier:
         ::=
referenced by: namespace-alias-definition using-directive lt-special-init:
         ::=
referenced by: lt-special lt-special: lt-special-init <
         ::= 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
         ::= expression-before-semicolon ';'
           | local-declaration
referenced by: goal-symbol expression-before-semicolon: expression
         ::= 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
         ::= qualified-id
           | qualified-type-specifier
           | Y_SCOPED_UNKNOWN_ID
referenced by: member-declaration identifier: Y_ID Y_UNKNOWN_ID Y_TEMPLATE_ID
         ::= 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
           | string-literal
           | boolean-literal
           | 'nullptr'
referenced by: primary-expression string-literal: Y_STRING
         ::= Y_STRING+
referenced by: asm-definition based-expression linkage-id literal postfix-expression pragma-id static_assert-declaration boolean-literal: true false
         ::= 'true'
           | 'false'
referenced by: literal primary-expression: literal this ( expression ) id-expression
         ::= literal
           | 'this'
           | '(' expression ')'
           | id-expression
referenced by: postfix-expression id-expression: unqualified-id qualified-id
         ::= 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
         ::= 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
           | 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 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
         ::= Y_TEMPLATE_SCOPED_ID
           | template-scoped-operator-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 ) ++ --
         ::= ( 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
referenced by: postfix-expression postfix-expression-before-arrow: postfix-expression
         ::= postfix-expression
referenced by: postfix-expression expression-list-opt: expression-list
         ::= expression-list?
referenced by: mem-initializer postfix-expression expression-list: assignment-expression ,
         ::= 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 referenced by: qualified-id 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 referenced by: cast-expression new-keyword: new ::new
         ::= 'new'
           | '::new'
referenced by: new-expression new-modifier-opt: modifier
         ::= modifier?
referenced by: new-expression new-placement: ( expression-list )
         ::= '(' expression-list ')'
referenced by: new-expression new-type-id: dynamic-type-id ( special-new-type-id )
         ::= dynamic-type-id
           | '(' special-new-type-id ')'
referenced by: new-expression new-initializer-opt: new-initializer
         ::= new-initializer?
referenced by: new-expression new-initializer: ( expression-list )
         ::= '(' expression-list? ')'
referenced by: new-initializer-opt dynamic-type-id: type-specifier-seq new-declarator
         ::= 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
           | direct-new-declarator
referenced by: dynamic-type-id delete-expression: delete-keyword [ delete-size-expression-opt ] cast-expression
         ::= delete-keyword ( '[' delete-size-expression-opt ']' )? cast-expression
referenced by: cast-expression delete-keyword: delete ::delete
         ::= 'delete'
           | '::delete'
referenced by: delete-expression delete-size-expression-opt: expression
         ::= 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 . )
         ::= ( '(' 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
         ::= cast-expression ( Y_SEG_OP cast-expression )*
referenced by: pm-expression pm-expression: segment-expression .* ->*
         ::= segment-expression ( ( '.*' | '->*' ) segment-expression )*
referenced by: multiplicative-expression multiplicative-expression: pm-expression * / %
         ::= pm-expression ( ( '*' | '/' | '%' ) pm-expression )*
referenced by: additive-expression additive-expression: multiplicative-expression + -
         ::= multiplicative-expression ( ( '+' | '-' ) multiplicative-expression )*
referenced by: shift-expression shift-expression: additive-expression >> <<
         ::= additive-expression ( ( '>>' | '<<' ) additive-expression )*
referenced by: relational-expression relational-expression: shift-expression < <= > >=
         ::= shift-expression ( ( '<' | '<=' | '>' | '>=' ) shift-expression )*
referenced by: equality-expression equality-expression: relational-expression == !=
         ::= relational-expression ( ( '==' | '!=' ) relational-expression )*
referenced by: and-expression and-expression: equality-expression &
         ::= equality-expression ( '&' equality-expression )*
referenced by: exclusive-or-expression exclusive-or-expression: and-expression ^
         ::= and-expression ( '^' and-expression )*
referenced by: inclusive-or-expression inclusive-or-expression: exclusive-or-expression |
         ::= exclusive-or-expression ( '|' exclusive-or-expression )*
referenced by: logical-and-expression logical-and-expression: inclusive-or-expression &&
         ::= inclusive-or-expression ( '&&' inclusive-or-expression )*
referenced by: logical-or-expression logical-or-expression: logical-and-expression ||
         ::= logical-and-expression ( '||' logical-and-expression )*
referenced by: assignment-expression conditional-expression goal-symbol conditional-expression: logical-or-expression ? expression : assignment-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 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?
referenced by: assignment-expression assignment-operator: = *= /= %= += -= <<= >>= |= &= ^=
         ::= '='
           | '*='
           | '/='
           | '%='
           | '+='
           | '-='
           | '<<='
           | '>>='
           | '|='
           | '&='
           | '^='
referenced by: assignment-expression expression: assignment-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
         ::= 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 ]
         ::= ( '[' constant-expression ']' )+
referenced by: cast-expression direct-new-declarator: [ expression ] constant-expression [
         ::= '[' 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
         ::= 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
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
         ::= 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
           | no-declarator-declaration
referenced by: block-declaration static_assert-declaration: static_assert ( constant-expression , expect-string-literal string-literal )
         ::= '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 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
         ::= ( 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
         ::= 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 )
         ::= '__declspec' '(' ( make-id | pragma-modifier )* ')'
referenced by: class-mod non-type-decl-specifier storage-class-specifier: auto register static extern linkage-id mutable typedef
         ::= 'auto'
           | 'register'
           | 'static'
           | 'extern' linkage-id?
           | 'mutable'
           | 'typedef'
referenced by: non-type-decl-specifier function-specifier: inline virtual explicit __inline
         ::= 'inline'
           | 'virtual'
           | 'explicit'
           | '__inline'
referenced by: non-type-decl-specifier type-specifier: simple-type-specifier class-specifier enum-specifier elaborated-type-specifier typename-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
         ::= 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' '(' ( 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
         ::= Y_GLOBAL_TYPE_NAME
           | Y_SCOPED_TYPE_NAME
referenced by: access-declaration simple-type-specifier using-declaration enum-specifier: enum-key { enumerator-definition , , }
         ::= 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 ( '=' constant-expression )?
referenced by: enum-specifier enumerator: make-id
         ::= make-id
referenced by: enumerator-definition elaborated-type-specifier: enum make-id elaborated-type-name
         ::= 'enum' ( make-id | elaborated-type-name )
referenced by: type-specifier namespace-definition: namespace-key { namespace-body }
         ::= namespace-key '{' namespace-body '}'
referenced by: declaration namespace-key: namespace expect-identifier make-id
         ::= 'namespace' ( expect-identifier make-id )?
referenced by: namespace-definition namespace-body: might-restart-declarations
         ::= might-restart-declarations?
referenced by: namespace-definition 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
         ::= 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 referenced by: block-declaration simple-member-declaration using-directive: using namespace expect-qualified-namespace-specifier qualified-namespace-specifier referenced by: block-declaration asm-definition: asm ( expect-string-literal string-literal )
         ::= 'asm' '(' expect-string-literal string-literal ')'
referenced by: block-declaration linkage-specification: extern linkage-id { linkage-body }
         ::= 'extern' linkage-id '{' linkage-body '}'
referenced by: declaration linkage-id: string-literal
         ::= string-literal
referenced by: linkage-specification storage-class-specifier linkage-body: might-restart-declarations
         ::= might-restart-declarations?
referenced by: linkage-specification init-declarator: declarator declaring-declarator initializer ptr-mod-init-declarator direct-declarator ( expression-list )
         ::= declarator
           | declaring-declarator initializer
           | ptr-mod-init-declarator
           | direct-declarator '(' expression-list ')'
referenced by: simple-declaration declarator: ptr-mod-declarator direct-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-declarator
           | comma-declaring-declarator initializer
referenced by: simple-declaration declaring-declarator: declarator
         ::= declarator
referenced by: goal-symbol init-declarator comma-declaring-declarator: comma-declarator
         ::= comma-declarator
referenced by: comma-init-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
           | '__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+ direct-declarator '(' expression-list ')'
referenced by: comma-init-declarator init-declarator ptr-mod-declarator: ptr-mod direct-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 )
         ::= declarator-id
           | '(' ( 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
         ::= segment-cast-opt ( '___segname' '(' expect-string-literal string-literal ')' | identifier | 'void' | '___self' )
referenced by: ptr-mod segment-cast-opt: ( __segment )
         ::= ( '(' '__segment' ')' )?
referenced by: based-expression pragma-modifier: ___pragma ( pragma-id ) __cdecl ___cdecl __fastcall ___fastcall ___fortran __optlink __pascal ___pascal ___stdcall __syscall ___syscall __system ___watcall
         ::= '___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
         ::= string-literal
referenced by: pragma-modifier ptr-operator: * __seg16 & Y_SCOPED_TIMES nested-name-specifier Y_TEMPLATE_SCOPED_TIMES cv-qualifier-seq-opt
         ::= ( '*' '__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
         ::= ( '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
         ::= id-expression
           | Y_TEMPLATE_NAME
           | Y_NAMESPACE_NAME
           | Y_TYPE_NAME
           | Y_GLOBAL_UNKNOWN_ID
           | Y_SCOPED_UNKNOWN_ID
           | Y_TEMPLATE_SCOPED_ID
           | Y_TEMPLATE_SCOPED_TILDE make-id
           | template-scoped-operator-function-id
referenced by: direct-declarator member-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
         ::= 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-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
         ::= 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 ]
           | '[' constant-expression? ']'
referenced by: abstract-declarator abstract-ptr-mod-declarator direct-abstract-declarator parameter-declaration-clause: parameter-declaration , , ... ...
         ::= ( 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
         ::= decl-specifier-seq
referenced by: simple-parameter-declaration parameter-declaration: simple-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 referenced by: parameter-declaration simple-arg-no-id:
         ::=
referenced by: simple-parameter-declaration 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
         ::= defarg-check ( '=' type-id | Y_DEFARG_GONE_SPECIAL )
referenced by: type-parameter 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 referenced by: function-declaration goal-symbol simple-member-declaration function-declaration: decl-specifier-seq declarator ctor-declarator declarator :
         ::= ( decl-specifier-seq ( declarator | ctor-declarator ) | declarator ) ':'?
referenced by: function-definition function-definition: function-declaration function-body
         ::= function-declaration function-body
referenced by: declaration member-declaration template-function-declaration function-body: check-for-rewrite { absorb-body }
         ::= check-for-rewrite '{' absorb-body '}'
referenced by: function-definition check-for-rewrite:
         ::=
referenced by: function-body absorb-body:
         ::=
referenced by: function-body initializer: = assignment-expression braced-initializer
         ::= '=' ( assignment-expression | braced-initializer )
referenced by: comma-init-declarator goal-symbol init-declarator start-class:
         ::=
referenced by: class-substance invalid-class-name-id: Y_GLOBAL_UNKNOWN_ID Y_SCOPED_UNKNOWN_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
         ::= 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-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 referenced by: goal-symbol type-specifier class-key: packed-class-opt class struct union class-mod-opt
         ::= packed-class-opt ( 'class' | 'struct' | 'union' ) class-mod-opt
referenced by: class-specifier class-body: class-substance }
         ::= class-substance '}'
referenced by: class-specifier class-substance: start-class { member-specification-opt
         ::= start-class '{' member-specification-opt
referenced by: class-body no-class-name:
         ::=
referenced by: class-specifier packed-class-opt: __packed
         ::= '__packed'?
referenced by: class-key class-mod-opt: class-mod
         ::= class-mod*
referenced by: class-key class-mod: pragma-modifier modifier ms-specific-declspec
         ::= pragma-modifier
           | modifier
           | ms-specific-declspec
referenced by: class-mod-opt member-specification-opt: member-specification
         ::= member-specification?
referenced by: class-substance member-specification 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
           | function-definition
           | template-declaration
referenced by: member-specification simple-member-declaration-before-semicolon: simple-member-declaration
         ::= 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
           | member-declarator-list
           | using-declaration
referenced by: simple-member-declaration-before-semicolon member-declarator-list: member-declarator ,
         ::= 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
           | declarator-id? ':' constant-expression
referenced by: member-declarator-list member-declaring-declarator: declarator
         ::= declarator
referenced by: member-declarator constant-initializer: = constant-expression
         ::= '=' constant-expression
referenced by: member-declarator base-clause: : base-specifier ,
         ::= ':' base-specifier ( ',' base-specifier )*
referenced by: class-specifier base-specifier: private public protected virtual qualified-class-specifier
         ::= ( 'private' | 'public' | 'protected' | 'virtual' )* qualified-class-specifier
referenced by: base-clause access-specifier: private protected public
         ::= 'private'
           | 'protected'
           | 'public'
referenced by: member-specification conversion-function-id: operator conversion-type-id
         ::= 'operator' conversion-type-id
referenced by: unqualified-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 referenced by: declarator-id template-scoped-unqualified-id conversion-type-id: type-specifier-seq ptr-operator
         ::= 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 )
         ::= ( qualified-class-specifier | identifier ) '(' expression-list-opt ')'
referenced by: goal-symbol qualified-class-specifier: qualified-class-type
         ::= 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
         ::= Y_TYPE_NAME
           | Y_GLOBAL_TYPE_NAME
           | Y_SCOPED_TYPE_NAME
referenced by: qualified-class-specifier operator-function-id: operator operator
         ::= 'operator' operator
referenced by: unqualified-id scoped-operator-function-id: Y_SCOPED_OPERATOR Y_GLOBAL_OPERATOR operator
         ::= ( Y_SCOPED_OPERATOR | Y_GLOBAL_OPERATOR ) operator
referenced by: qualified-id template-scoped-operator-function-id: Y_TEMPLATE_SCOPED_OPERATOR operator
         ::= 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-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 referenced by: template-declaration-before-semicolon template-function-declaration 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 referenced by: template-declaration template-function-declaration: export template-declaration-start function-definition
         ::= 'export'? template-declaration-start function-definition
referenced by: template-declaration template-declaration-init:
         ::=
referenced by: template-declaration-start template-parameter-list-opt: template-parameter ,
         ::= ( template-parameter ( ',' template-parameter )* )?
referenced by: template-declaration-start template-parameter: type-parameter parameter-declaration
         ::= type-parameter
           | parameter-declaration
referenced by: template-parameter-list-opt type-parameter: type-parameter-no-defarg type-defarg-parse-or-copy referenced by: template-parameter type-parameter-no-defarg: template-typename-key make-id
         ::= template-typename-key make-id?
referenced by: type-parameter template-typename-key: typename class
         ::= 'typename'
           | 'class'
referenced by: type-parameter-no-defarg 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 referenced by: qualified-id template-argument: assignment-expression type-id
         ::= 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 referenced by: postfix-expression type-specifier explicit-instantiation-special: extern template
         ::= '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 ; referenced by: declaration template-argument-list-opt: template-argument ,
         ::= ( 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
         ::= nested-name-specifier
referenced by: explicit-instantiation template-class-directive-instantiate: nested-name-specifier
         ::= nested-name-specifier
referenced by: explicit-instantiation 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 referenced by: template-type 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 referenced by: scoped-template-type 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 referenced by: template-scoped-template-type exception-declaration: actual-exception-declaration
         ::= actual-exception-declaration
referenced by: goal-symbol actual-exception-declaration: type-specifier-seq declarator abstract-declarator referenced by: exception-declaration exception-specification-opt: exception-specification
         ::= exception-specification?
referenced by: ctor-declarator direct-abstract-declarator direct-declarator special-new-direct-abstract-declarator exception-specification: throw ( expect-type-id type-id , )
         ::= 'throw' '(' ( expect-type-id type-id ( ',' expect-type-id type-id )* )? ')'
referenced by: exception-specification-opt might-restart-declarations: start-restart-declarations declaration referenced by: goal-symbol linkage-body namespace-body start-restart-declarations:
         ::=
referenced by: might-restart-declarations local-declaration: block-declaration-before-semicolon ;
         ::= block-declaration-before-semicolon ';'
referenced by: expr-decl-stmt no-declarator-declaration: decl-specifier-seq
         ::= decl-specifier-seq
referenced by: simple-declaration typeof-specifier: __typeof ( expression type-id )
         ::= '__typeof' '(' ( expression | type-id ) ')'
referenced by: simple-type-specifier cv-qualifier: const volatile __unaligned
         ::= '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
         ::= '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
         ::= 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 , , }
         ::= '{' ( assignment-expression | braced-initializer ) ( ',' ( assignment-expression | braced-initializer ) )* ','? '}'
referenced by: braced-initializer initializer typename-special: typename-special-init typename
         ::= typename-special-init 'typename'
referenced by: typename-specifier typename-special-init:
         ::=
referenced by: typename-special 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 referenced by: special-new-type-id 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 ]
           | '[' 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