translation_unit:

translation_unit
         ::= external_declaration*

no references


external_declaration:

external_declaration
         ::= declaration_mode? ( function_definition | external_declaration | class | 'import' ( 'static' | identifier )? string_literal | dbtable_definition )
           | ( external_declaration_specifiers init_declarator_list? | instantiation_named | DEFINE identifier '=' conditional_expression )? ';'
           | declaration_mode ':'
           | 'namespace' identifier

referenced by:


function_definition:

function_definition
         ::= external_declaration_specifiers? declarator_function declaration_list? compound_statement

referenced by:


primary_expression:

primary_expression
         ::= identifier
           | constant
           | ( '(' expression | 'class' '(' declaration_specifiers abstract_declarator? | '__builtin_va_arg' '(' assignment_expression ',' type_name | 'class_data' '(' identifier ) ')'
           | wide_string_literal
           | extension? '(' ( ( compound_statement | expression ) ')' | type_name ')' ( '(' type_name ')' )? initializer )
           | i18n_string
           | instantiation_unnamed
           | ( ( 'new' | 'new0' | ( 'renew' | 'renew0' ) constant_expression ) declaration_specifiers abstract_declarator_noarray? '[' constant_expression | '[' argument_expression_list? ) ']'
           | database_open
           | dbfield
           | dbindex
           | dbtable

referenced by:


digit:

digit    ::= [0-9]

referenced by:


letter:

letter   ::= [a-zA-Z]

referenced by:


hex_digit:

hex_digit
         ::= digit
           | [a-fA-F]

referenced by:


scientific:

scientific
         ::= [Ee] [+#x2D]? digit+

referenced by:


hex_float:

hex_float
         ::= [Pp] [+#x2D]? digit+

referenced by:


float_suffix:

float_suffix
         ::= [fFlLiIjJ]*

referenced by:


int_suffix:

int_suffix
         ::= [uUlLiIjJ]*

referenced by:


c_identifier:

c_identifier
         ::= ( letter | '_' ) ( letter | '_' | digit )*

referenced by:


identifier:

identifier
         ::= '::'? ( c_identifier '&'? '::' )* c_identifier?

referenced by:


constant:

constant ::= '0' ( [xX] hex_digit* ( hex_digit ( int_suffix | ( hex_float | '.' hex_digit* hex_float? ) float_suffix? )? | '.' hex_digit+ hex_float? float_suffix? ) | digit+ int_suffix? )
           | digit* ( digit ( int_suffix | ( scientific | '.' digit* scientific? ) float_suffix? )? | '.' digit+ scientific? float_suffix? )
           | 'L'? "'" [^"']+ "'"

referenced by:


string_literal:

string_literal
         ::= ( '"' [^'"]* '"' )+

referenced by:


wide_string_literal:

wide_string_literal
         ::= 'L' string_literal

referenced by:


extension:

extension
         ::= '__extension__'
           | '_extension_'

referenced by:


member_access:

member_access
         ::= 'public'
           | 'private'
           | 'static'

referenced by:


declaration_mode:

declaration_mode
         ::= member_access
           | 'default'

referenced by:


postfix_expression:

postfix_expression
         ::= primary_expression ( '[' expression ']' | '(' argument_expression_list? ')' | ( '.' | '->' ) identifier | '++' | '--' )*

referenced by:


argument_expression_list:

argument_expression_list
         ::= ( assignment_expression | instantiation_infered ) ( ',' ( assignment_expression | instantiation_infered ) )*

referenced by:


common_unary_expression:

common_unary_expression
         ::= ( '++' | '--' ) unary_expression
           | unary_operator ( cast_expression | instantiation_infered )
           | '__alignof__' ( unary_expression | '(' type_name ')' )
           | '__builtin_offsetof' '(' type_name ',' identifier ')'
           | 'sizeof' ( unary_expression | '(' ( type_name | 'class' type ) ')' )

referenced by:


unary_operator:

unary_operator
         ::= '&'
           | '*'
           | '+'
           | '-'
           | '~'
           | '!'
           | 'delete'
           | 'incref'

referenced by:


unary_expression:

unary_expression
         ::= common_unary_expression
           | postfix_expression

referenced by:


cast_expression:

cast_expression
         ::= ( '(' type_name ')' )* unary_expression

referenced by:


multiplicative_expression:

multiplicative_expression
         ::= cast_expression ( ( '*' | '/' | '%' ) cast_expression )*

referenced by:


additive_expression:

additive_expression
         ::= multiplicative_expression ( ( '+' | '-' ) multiplicative_expression )*

referenced by:


shift_expression:

shift_expression
         ::= additive_expression ( ( '<<' | '>>' ) additive_expression )*

referenced by:


relational_expression:

relational_expression
         ::= shift_expression ( ( '<' | '>' | '<=' | '>=' ) shift_expression )*

referenced by:


equality_expression:

equality_expression
         ::= relational_expression ( ( '==' | '!=' ) ( relational_expression | instantiation_infered ) )*

referenced by:


and_expression:

and_expression
         ::= equality_expression ( '&' ( equality_expression | instantiation_infered ) )*

referenced by:


exclusive_or_expression:

exclusive_or_expression
         ::= and_expression ( '^' ( and_expression | instantiation_infered ) )*

referenced by:


inclusive_or_expression:

inclusive_or_expression
         ::= exclusive_or_expression ( '|' ( exclusive_or_expression | instantiation_infered ) )*

referenced by:


logical_and_expression:

logical_and_expression
         ::= inclusive_or_expression ( '&&' inclusive_or_expression )*

referenced by:


logical_or_expression:

logical_or_expression
         ::= logical_and_expression ( '||' logical_and_expression )*

referenced by:


expression_infered_inst:

expression_infered_inst
         ::= ( expression ',' )? instantiation_infered

referenced by:


conditional_expression:

conditional_expression
         ::= logical_or_expression ( '?' ( expression | expression_infered_inst ) ':' logical_or_expression )* ( '?' ( expression | expression_infered_inst ) ':' instantiation_infered )?

referenced by:


assignment_expression:

assignment_expression
         ::= ( unary_expression assignment_operator )* conditional_expression

referenced by:


assignment_operator:

assignment_operator
         ::= '='
           | '*='
           | '/='
           | '%='
           | '+='
           | '-='
           | '>>='
           | '&='
           | '^='
           | '|='

referenced by:


expression:

expression
         ::= assignment_expression ( ',' assignment_expression )*

referenced by:


constant_expression:

constant_expression
         ::= conditional_expression

referenced by:


storage_class_specifier:

storage_class_specifier
         ::= 'typedef'
           | 'extern'
           | '__thread'
           | 'auto'
           | 'register'
           | '__restrict'
           | 'restrict'
           | 'static'

referenced by:


enumerator:

enumerator
         ::= identifier ( '=' constant_expression )?

referenced by:


enumerator_list:

enumerator_list
         ::= enumerator ( ',' enumerator )*

referenced by:


enum_type:

enum_type
         ::= 'enum' type

referenced by:


enum_specifier_compound:

enum_specifier_compound
         ::= 'enum' identifier? '{' enumerator_list? '}'

referenced by:


type_qualifier:

type_qualifier
         ::= 'const'
           | '__const'
           | 'volatile'
           | '__volatile__'
           | '__volatile'
           | ext_decl

referenced by:


type_specifier:

type_specifier
         ::= 'void'
           | 'char'
           | 'short'
           | 'int'
           | 'int64'
           | '__int64'
           | '__int128'
           | '__builtin_va_list'
           | 'long'
           | 'float'
           | 'double'
           | 'signed'
           | 'unsigned'
           | extension
           | struct_type
           | enum_type
           | ( '__typeof' '(' assignment_expression | 'subclass' '(' type ) ')'
           | '_Bool'
           | 'Bool'
           | '_Complex'
           | '_Imaginary'
           | type
           | 'uint'
           | 'thisclass'
           | 'typed_object'
           | 'any_oject'

referenced by:


struct_declaration_list:

struct_declaration_list
         ::= struct_declaration+

referenced by:


struct_declaration:

struct_declaration
         ::= ( member_access? ( declaration_specifiers struct_declarator_list? | instantiation_unnamed | class_function_definition | property ) | default_property ( ',' default_property )* | ( 'class_property' '(' identifier ')' '=' initializer_condition )? ';' | member_access ( ':' | '(' identifier ')' ) | class_property | 'class_data' declaration_specifiers struct_declarator_list | 'watch' '(' watch_property_list ')' compound_statement | 'watchable' | 'class_no_expansion' | 'class_fixed' | 'class_designer' type | 'class_default_property' identifier )?

referenced by:


struct_declarator_list:

struct_declarator_list
         ::= struct_declarator ( ',' struct_declarator )*

referenced by:


struct_declarator:

struct_declarator
         ::= declarator_nofunction attrib? ( ':' constant_expression )? ( ':' constant_expression )?

referenced by:


struct_or_union:

struct_or_union
         ::= 'struct'
           | 'union'

referenced by:


struct_type:

struct_type
         ::= struct_or_union ext_decl? identifier

referenced by:


struct_or_union_specifier_compound:

struct_or_union_specifier_compound
         ::= ( struct_type | struct_or_union ext_decl? ) '{' struct_declaration_list '}'

referenced by:


declaration_specifiers:

declaration_specifiers
         ::= ( storage_class_specifier | type_qualifier | type_specifier | enum_specifier_compound | struct_or_union_specifier_compound )+

referenced by:


external_declaration_specifiers:

external_declaration_specifiers
         ::= ( storage_class_specifier | type_qualifier | type_specifier | class_specifier )+

referenced by:


identifier_list:

identifier_list
         ::= ( parameter_list ',' )? identifier ( ',' identifier )*

referenced by:


direct_declarator_nofunction:

direct_declarator_nofunction
         ::= ( identifier | '(' ext_decl? declarator ')' ) ( '[' ( constant_expression | type )? ']' )*

referenced by:


direct_declarator_function:

direct_declarator_function
         ::= direct_declarator_nofunction '(' ( parameter_type_list | identifier_list )? ')'

referenced by:


parameter_declaration:

parameter_declaration
         ::= 'class'
           | declaration_specifiers ( abstract_declarator | '&'? declarator )?

referenced by:


parameter_list:

parameter_list
         ::= ( identifier_list ',' )? parameter_declaration ( ',' parameter_declaration )*

referenced by:


parameter_type_list:

parameter_type_list
         ::= ( parameter_list | identifier_list ) ( ',' '...' )?

referenced by:


direct_abstract_declarator_noarray:

direct_abstract_declarator_noarray
         ::= '(' ( abstract_declarator_noarray | parameter_type_list )? ')'

referenced by:


pointer:

pointer  ::= '*' type_qualifier* pointer?

referenced by:


abstract_declarator:

abstract_declarator
         ::= pointer
           | ext_decl? pointer? ( '(' ( abstract_declarator | parameter_type_list )? ')' | '[' ( constant_expression | type )? ']' ) ( '[' ( constant_expression | type )? ']' )*

referenced by:


abstract_declarator_noarray:

abstract_declarator_noarray
         ::= pointer
           | ext_decl? pointer? direct_abstract_declarator_noarray

referenced by:


declarator:

declarator
         ::= declarator_function
           | declarator_nofunction

referenced by:


declarator_function:

declarator_function
         ::= ext_decl? pointer? direct_declarator_function ext_decl*

referenced by:


declarator_nofunction:

declarator_nofunction
         ::= ext_decl? pointer? direct_declarator_nofunction ext_decl*

referenced by:


attrib_word:

attrib_word
         ::= identifier
           | ext_decl
           | type_qualifier

referenced by:


attribute:

attribute
         ::= attrib_word ( '(' expression ')' )?

referenced by:


attrib:

attrib   ::= ( '__attribute__' | '__attribute' | '__attribute_deprecated__' ) '(' '(' ( attribute ( ',' attribute )* )? ')' ')'

referenced by:


decl_spec:

decl_spec
         ::= '__declspec' '(' string_literal ')'

referenced by:


ext_call:

ext_call ::= '__cdecl'
           | '__stdcall'
           | '__stdcall__'
           | '_stdcall'
           | 'stdcall'
           | '__inline__'
           | '_inline'
           | '__inline'
           | 'inline'
           | 'dllexport'
           | 'dllimport'

referenced by:


ext_decl:

ext_decl ::= ext_call
           | decl_spec
           | 'asm' '(' string_literal ')'
           | attrib

referenced by:


type_name:

type_name
         ::= ( type_qualifier | type_specifier | enum_specifier_compound | struct_or_union_specifier_compound )+ abstract_declarator?

referenced by:


declaration_list:

declaration_list
         ::= declaration+

referenced by:


declaration:

declaration
         ::= declaration_specifiers init_declarator_list?
           | instantiation_named ';'

referenced by:


initializer:

initializer
         ::= assignment_expression
           | '{' initializer_list '}'

referenced by:


initializer_condition:

initializer_condition
         ::= conditional_expression
           | instantiation_infered

referenced by:


initializer_list:

initializer_list
         ::= initializer ( ',' initializer )*

referenced by:


init_declarator:

init_declarator
         ::= declarator ( '=' initializer )?

referenced by:


init_declarator_list:

init_declarator_list
         ::= identifier? init_declarator ( ',' init_declarator )*

referenced by:


statement:

statement
         ::= labeled_statement
           | attrib
           | compound_statement
           | selection_statement
           | iteration_statement
           | jump_statement
           | asm_statement
           | ( expression | firewatchers | stopwatching | watch_definition )? ';'

referenced by:


labeled_statement:

labeled_statement
         ::= ( 'case' constant_expression | 'default' | identifier )? ':' ( statement | declaration )

referenced by:


compound_statement:

compound_statement
         ::= '{' declaration_list? statement* '}'

referenced by:


selection_statement:

selection_statement
         ::= ( 'if' '(' expression ')' ( statement 'else' )? | 'switch' '(' expression ')' ) statement

referenced by:


iteration_statement:

iteration_statement
         ::= ( 'while' '(' expression | 'for' '(' ( expression? ';' expression? ';' expression? | identifier ':' expression ( ';' expression )? ) ) ')' statement
           | 'do' statement 'while' '(' expression ')' ';'

referenced by:


jump_statement:

jump_statement
         ::= ( 'goto' identifier | 'continue' | 'break' | 'return' ( expression | instantiation_infered )? ) ';'

referenced by:


asm_field:

asm_field
         ::= string_literal
           | ( '[' identifier ']' )? string_literal '(' assignment_expression ')'

referenced by:


asm_field_list:

asm_field_list
         ::= ( ':' | identifier ) ( asm_field ( ',' asm_field )* )?

no references


asm_statement:

asm_statement
         ::= 'asm' type_qualifier? '(' string_literal ( asm_fields ( asm_fields asm_fields? )? )? ')' ';'

referenced by:


instantiation_named:

instantiation_named
         ::= declaration_specifiers identifier '{' members_initialization_list? '}'

referenced by:


instantiation_unnamed:

instantiation_unnamed
         ::= type '{' members_initialization_list? '}'

referenced by:


instantiation_infered:

instantiation_infered
         ::= '{' members_initialization_list? '}'

referenced by:


data_member_initialization_list:

data_member_initialization_list
         ::= ( postfix_expression '=' )? initializer_condition ( ',' ( postfix_expression '=' )? initializer_condition )*

referenced by:


instance_class_function_definition:

instance_class_function_definition
         ::= declaration_specifiers declarator_function compound_statement

referenced by:


members_initialization_list:

members_initialization_list
         ::= ( data_member_initialization_list? ';' | instance_class_function_definition )+
           | data_member_initialization_list

referenced by:


i18n_string:

i18n_string
         ::= '$'? string_literal ( '.' string_literal )?

referenced by:


type:

type     ::= identifier ( '<' template_argument ( ',' template_argument )* '>' )?

referenced by:


template_datatype:

template_datatype
         ::= declaration_specifiers abstract_declarator?

referenced by:


template_type_parameter:

template_type_parameter
         ::= 'class' identifier ( ':' template_datatype )? ( '=' template_datatype )?

referenced by:


template_identifier_parameter:

template_identifier_parameter
         ::= identifier ( '=' identifier )?

referenced by:


template_expression_argument:

template_expression_argument
         ::= shift_expression

referenced by:


template_expression_parameter:

template_expression_parameter
         ::= declaration_specifiers abstract_declarator? identifier '=' template_expression_argument

referenced by:


template_parameter:

template_parameter
         ::= template_type_parameter template_identifier_parameter
           | template_expression_parameter

referenced by:


template_parameters_list:

template_parameters_list
         ::= template_parameter ( ',' template_parameter )*

referenced by:


template_argument:

template_argument
         ::= ( identifier '=' )? ( template_expression_argument | identifier | template_datatype )

referenced by:


class:

class    ::= identifier? 'class' identifier ( '<' template_parameters_list '>' )? ( ':' inheritance_specifiers )? ( '{' struct_declaration_list? '}' | ';' )

referenced by:


struct_class:

struct_class
         ::= ( struct_type ( '<' template_parameters_list '>' )? ':' inheritance_specifiers | struct_or_union ) '{' struct_declaration_list? '}'

referenced by:


enum_class:

enum_class
         ::= enum_type ( ':' inheritance_specifiers )? '{' enumerator_list? ( ';' struct_declaration_list )? '}'

referenced by:


class_specifier:

class_specifier
         ::= enum_class
           | struct_class

referenced by:


inheritance_specifiers:

inheritance_specifiers
         ::= struct_or_union
           | ( 'private' | 'public' )? ( storage_class_specifier | type_qualifier | type_specifier | type )*

referenced by:


class_function_definition:

class_function_definition
         ::= 'virtual'? declaration_specifiers? declarator_function attrib? ( compound_statement | ';' )
           | '~'? declaration_specifiers '(' ')' compound_statement

referenced by:


default_property:

default_property
         ::= postfix_expression '=' initializer_condition

referenced by:


property:

property ::= 'property' property_specifiers abstract_declarator? identifier? '{' ( ( 'set' | 'get' | 'isset' ) compound_statement | 'watchable' | 'property_category' i18n_string )* '}'

referenced by:


property_specifiers:

property_specifiers
         ::= ( storage_class_specifier | type_qualifier | type_specifier )+

referenced by:


class_property:

class_property
         ::= 'class_property' property_specifiers abstract_declarator? identifier? '{' ( ( 'set' | 'get' ) compound_statement )* '}'

referenced by:


watch_property_list:

watch_property_list
         ::= identifier+

referenced by:


property_watch:

property_watch
         ::= ( watch_property_list | 'delete' ) compound_statement

referenced by:


watch_definition:

watch_definition
         ::= ( assignment_expression '.' )? 'watch' '(' assignment_expression ')' '{' property_watch+ '}'

referenced by:


stopwatching:

stopwatching
         ::= ( assignment_expression '.' )? 'stopwatching' '(' assignment_expression ( ',' watch_property_list )? ')'

referenced by:


firewatchers:

firewatchers
         ::= ( assignment_expression '.' )? 'firewatchers' watch_property_list?

referenced by:


dbtable_definition:

dbtable_definition
         ::= 'dbtable' string_literal identifier? '{' ( dbfield_entry | dbindex_entry )+ '}'

referenced by:


dbfield_entry:

dbfield_entry
         ::= declaration_specifiers identifier string_literal ';'

referenced by:


dbindex_item:

dbindex_item
         ::= ( '>' | '<' )? identifier

referenced by:


dbindex_entry:

dbindex_entry
         ::= 'dbindex' dbindex_item ( ',' dbindex_item )* identifier? ';'

referenced by:


database_open:

database_open
         ::= 'database_open' '(' assignment_expression ',' assignment_expression ')'

referenced by:


dbfield:

dbfield  ::= 'dbfield' '(' string_literal ',' identifier ')'

referenced by:


dbindex:

dbindex  ::= 'dbindex' '(' string_literal ',' identifier ')'

referenced by:


dbtable:

dbtable  ::= 'dbtable' '(' string_literal ')'

referenced by:



  ... generated by Railroad Diagram Generator