statements:

def try if while class for switch return break continue equation block eol

statements
         ::= ( def | try | if | while | class | for | switch | return | 'break' | 'continue' | equation | block | eol )+

referenced by:


def:

def id :: id ( decl_arg_list ) eol : guard eol block

def      ::= 'def' id ( '::' id )? '(' decl_arg_list ')' eol* ( ':' guard )? eol* block

referenced by:


lambda:

fun [ id_arg_list ] ( decl_arg_list ) eol block

lambda   ::= 'fun' ( '[' id_arg_list ']' )? '(' decl_arg_list ')' eol* block

referenced by:


guard:

operator

guard    ::= operator

referenced by:


try:

try eol block catch finally

try      ::= 'try' eol* block catch* finally?

referenced by:


catch:

catch ( arg ) eol block

catch    ::= 'catch' ( '(' arg ')' )? eol* block

referenced by:


finally:

finally eol block

finally  ::= 'finally' eol* block

referenced by:


if:

if ( equation eol equation ) eol block else eol block if

if       ::= 'if' '(' equation ( eol equation )? ')' eol* block ( 'else' ( if | eol* block ) )*

referenced by:


while:

while ( operator ) eol block

while    ::= 'while' '(' operator ')' eol* block

referenced by:


for:

for ( for_guards equation : equation ) eol block

for      ::= 'for' '(' ( for_guards | equation ':' equation ) ')' eol* block

referenced by:


for_guards:

equation eol equation eol equation

for_guards
         ::= equation eol equation eol equation

referenced by:


switch:

switch ( operator ) eol { case default }

switch   ::= 'switch' '(' operator ')' eol* '{' ( case | default )+ '}'

referenced by:


case:

case ( operator ) eol block

case     ::= 'case' '(' operator ')' eol* block

referenced by:


default:

default eol block

default  ::= 'default' eol* block

referenced by:


class:

class id : id eol class_block

class    ::= 'class' id ( ':' id )? eol* class_block

referenced by:


class_block:

{ class_statements }

class_block
         ::= '{' class_statements* '}'

referenced by:


class_statements:

def var_decl eol

class_statements
         ::= def
           | var_decl
           | eol

referenced by:


block:

{ statements }

block    ::= '{' statements* '}'

referenced by:


return:

return operator

return   ::= 'return' operator?

referenced by:


eol:

\n \r\n ;

eol      ::= '\n'
           | '\r\n'
           | ';'

referenced by:


equation:

operator = := += -= *= /= %= <<= >>= &= ^= |=

equation ::= operator ( ( '=' | ':=' | '+=' | '-=' | '*=' | '/=' | '%=' | '<<=' | '>>=' | '&=' | '^=' | '|=' ) operator )*

referenced by:


operator:

prefix value operator binary_operator ? operator : operator

operator ::= prefix
           | value
           | operator ( binary_operator | '?' operator ':' ) operator

referenced by:


prefix:

++ -- - + ! ~ operator

prefix   ::= ( '++' | '--' | '-' | '+' | '!' | '~' ) operator

referenced by:


binary_operator:

|| && | ^ & == != < <= > >= << >> + - * / %

binary_operator
         ::= '||'
           | '&&'
           | '|'
           | '^'
           | '&'
           | '=='
           | '!='
           | '<'
           | '<='
           | '>'
           | '>='
           | '<<'
           | '>>'
           | '+'
           | '-'
           | '*'
           | '/'
           | '%'

referenced by:


value:

var_decl dot_fun_array prefix

value    ::= var_decl
           | dot_fun_array
           | prefix

referenced by:


dot_fun_array:

lambda num quoted_string single_quoted_string raw_string paren_expression inline_container id fun_call array_call dot_access

dot_fun_array
         ::= ( lambda | num | quoted_string | single_quoted_string | raw_string | paren_expression | inline_container | id ) ( fun_call | array_call | dot_access )*

referenced by:


fun_call:

( arg_list )

fun_call ::= '(' arg_list ')'

referenced by:


array_call:

[ operator ]

array_call
         ::= '[' operator ']'

referenced by:


dot_access:

. id

dot_access
         ::= '.' id

referenced by:


var_decl:

auto var const global reference id attr id :: id

var_decl ::= ( 'auto' | 'var' | 'const' | 'global' ) ( reference | id )
           | 'attr' id ( '::' id )?

referenced by:


reference:

& id

reference
         ::= '&' id

referenced by:


paren_expression:

( operator )

paren_expression
         ::= '(' operator ')'

referenced by:


inline_container:

[ container_arg_list ]

inline_container
         ::= '[' container_arg_list ']'

referenced by:


container_arg_list:

value_range map_pair , operator ,

container_arg_list
         ::= value_range
           | map_pair ( ',' map_pair )*
           | operator ( ',' operator )*

referenced by:


value_range:

operator .. operator

value_range
         ::= operator '..' operator

referenced by:


map_pair:

operator : operator

map_pair ::= operator ':' operator

referenced by:


quoted_string:

" char escape interpolation "

quoted_string
         ::= '"' ( char | escape | interpolation )* '"'

referenced by:


single_quoted_string:

' char escape '

single_quoted_string
         ::= "'" ( char | escape ) "'"

referenced by:


raw_string:

R" delimiter ( char ) delimiter "

raw_string
         ::= 'R"' delimiter? '(' char* ')' delimiter? '"'

referenced by:


delimiter:

[a-z] [A-Z] [0-9] _

delimiter
         ::= [a-zA-Z0-9_]+

referenced by:


interpolation:

${ equation }

interpolation
         ::= '${' equation '}'

referenced by:


escape:

\ ' " ? \ a b f n r t v $ 0 x hex_digit u U hex_digit hex_digit hex_digit hex_digit hex_digit hex_digit hex_digit hex_digit octal_digit

escape   ::= '\' ( "'" | '"' | '?' | '\' | 'a' | 'b' | 'f' | 'n' | 'r' | 't' | 'v' | '$' | '0' | 'x' hex_digit+ | ( 'u' | 'U' hex_digit hex_digit hex_digit hex_digit ) hex_digit hex_digit hex_digit hex_digit | octal_digit+ )

referenced by:


id_arg_list:

id ,

id_arg_list
         ::= id ( ',' id )*

referenced by:


decl_arg_list:

arg ,

decl_arg_list
         ::= ( arg ( ',' arg )* )?

referenced by:


arg_list:

equation ,

arg_list ::= ( equation ( ',' equation )* )?

referenced by:


arg:

id id

arg      ::= id id?

referenced by:


id:

[a-z] [A-Z] _ [a-z] [A-Z] [0-9] _ ` [^`] ` true false Infinity NaN _ __LINE__ __FILE__ __FUNC__ __CLASS__

id       ::= [a-zA-Z_] [a-zA-Z0-9_]*
           | '`' [^`]+ '`'
           | 'true'
           | 'false'
           | 'Infinity'
           | 'NaN'
           | '_'
           | '__LINE__'
           | '__FILE__'
           | '__FUNC__'
           | '__CLASS__'

referenced by:


num:

hex binary float integer

num      ::= hex
           | binary
           | float
           | integer

referenced by:


hex:

0 x X [0-9] [a-f] [A-F] int_suffix

hex      ::= '0' ( 'x' | 'X' ) [0-9a-fA-F]+ int_suffix*

referenced by:


binary:

0 b B 0 1 int_suffix

binary   ::= '0' ( 'b' | 'B' ) [0-1]+ int_suffix*

referenced by:


float:

[0-9] . [0-9] e E + - [0-9] float_suffix

float    ::= [0-9]+ '.' [0-9]+ ( ( 'e' | 'E' ) ( '+' | '-' )? [0-9]+ )? float_suffix?

referenced by:


integer:

[0-9] int_suffix

integer  ::= [0-9]+ int_suffix*

referenced by:


int_suffix:

l L ll LL u U

int_suffix
         ::= 'l'
           | 'L'
           | 'll'
           | 'LL'
           | 'u'
           | 'U'

referenced by:


float_suffix:

l L f F

float_suffix
         ::= 'l'
           | 'L'
           | 'f'
           | 'F'

referenced by:


octal_digit:

[0-7]

octal_digit
         ::= [0-7]

referenced by:


hex_digit:

[0-9] [a-f] [A-F]

hex_digit
         ::= [0-9a-fA-F]

referenced by:


char:

[^"\]

char     ::= [^"\]

referenced by:



  ... generated by RR - Railroad Diagram Generator R R