Never Grammar Railroad Diagram

Thanks to help from the community (especially Mingodad) Never got beautiful grammar railroad diagrams generated using Railroad Diagram Generator.

start:

start    ::= never
           | module_decl

no references


module_decl:

         ::= 'module' TOK_ID '{' never '}'
           | TOK_MODULE_REF

referenced by:


never:

referenced by:


use_list:

referenced by:


use:

use      ::= 'use' TOK_NUM_STRING module_decl

referenced by:


decl_list:

         ::= decl+

referenced by:


decl:

decl     ::= record
           | enumtype

referenced by:


record:

referenced by:


enumtype:

enumtype ::= 'enum' TOK_ID '{' enum_list '}'

referenced by:


enum_list:

         ::= enum_item ( ',' enum_item )*

referenced by:


enum_item:

         ::= TOK_ID ( '=' expr | '{' param_seq '}' )?

referenced by:


func:

func     ::= 'func' ( TOK_ID error | func_decl func_body func_except? )
           | 'extern' TOK_NUM_STRING 'func' func_decl

referenced by:


func_except:

         ::= except_list except_all?
           | except_all

referenced by:


except_list:

         ::= except+

referenced by:


except:

except   ::= 'catch' '(' TOK_ID ')' seq

referenced by:


except_all:

         ::= 'catch' seq

referenced by:


func_body:

         ::= '{' '}'
           | seq

referenced by:


func_decl:

         ::= TOK_ID? '(' param_list? ')' '->' param

referenced by:


param_seq:

         ::= ( param ';' )+

referenced by:


param_list:

         ::= param ( ',' param )*

referenced by:


param:

param    ::= ( 'var' | 'let' )? param_decl

referenced by:


param_decl:

         ::= TOK_ID ( ':' ( '(' param_list ')' | TOK_ID ( '.' TOK_ID )? | 'c_ptr' | 'string' | 'char' | 'double' | 'float' | 'long' | 'int' | 'bool' ) | '(' param_list? ')' '->' param | '[' ( range_dim_list ']' ':' ( param | 'range' ) | dim_list ']' ':' param ) | '.' TOK_ID )?
           | '(' ( param_list ')' ( '->' param )? | ')' '->' param )
           | '[' ( range_dim_list ']' ':' ( param | 'range' ) | dim_list ']' ':' param )
           | 'c_ptr'
           | 'void'
           | 'string'
           | 'char'
           | 'double'
           | 'float'
           | 'long'
           | 'int'
           | 'bool'

referenced by:


range_dim_list:

         ::= range_dim ( ',' range_dim )*

referenced by:


range_dim:

         ::= TOK_ID '..' TOK_ID
           | '..'

referenced by:


dim_list:

dim_list ::= dim ( ',' dim )*

referenced by:


dim:

dim      ::= TOK_ID

referenced by:


expr:

expr     ::= '[' expr_range_dim_list ']'
           | touple
           | expr ( ( '.' | '::' ) TOK_ID | ( '=' | '?' expr ':' | '>>>' | '<<<' | '^^^' | '|||' | '&&&' | '|>' | '||' | '&&' | '!=' | '==' | '>=' | '>' | '<=' | '<' | '%' | '/' | '*' | '-' | '+' ) expr | '(' expr_list? ')' | '[' ( expr_range_dim_list | expr_list ) ']' )
           | 'match' expr '{' match_guard_list? '}'
           | iflet
           | ( ( 'for' '(' ( TOK_ID TOK_IN | expr ';' expr ';' ) | 'while' '(' ) expr ')' | '~~~' | '!' | '-' | 'if' '(' expr ')' ( expr 'else' )? ) expr
           | ( 'do' expr 'while' )? '(' expr ')'
           | seq
           | 'let' func
           | listcomp
           | array
           | 'c_null'
           | 'nil'
           | TOK_NUM_STRING
           | TOK_NUM_CHAR
           | TOK_NUM_DOUBLE
           | TOK_NUM_FLOAT
           | TOK_NUM_LONG
           | TOK_NUM_INT
           | TOK_ID
           | 'false'
           | 'true'

referenced by:


expr_range_dim_list:

         ::= expr_range_dim ( ',' expr_range_dim )*

referenced by:


expr_range_dim:

         ::= expr '..' expr

referenced by:


seq:

seq      ::= '{' seq_list '}'

referenced by:


seq_list:

seq_list ::= ( expr | func | var | let ) ( ';' ( expr | func | var | let ) | func )*

referenced by:


var:

var      ::= 'var' TOK_ID '=' expr

referenced by:


let:

let      ::= 'let' TOK_ID '=' expr

referenced by:


expr_list:

         ::= expr ( ',' expr )*

referenced by:


touple:

touple   ::= '(' expr ',' expr_list? ')' ':' '(' param_list ')'

referenced by:


match_guard_list:

         ::= ( match_guard ';' )+

referenced by:


match_guard:

         ::= ( 'else' | match_guard_record | match_guard_item ) '->' expr

referenced by:


match_guard_record:

         ::= TOK_ID ( '.' TOK_ID )? '::' TOK_ID '(' matchbind_list ')'

referenced by:


match_guard_item:

         ::= TOK_ID ( '.' TOK_ID )? '::' TOK_ID

referenced by:


matchbind_list:

         ::= matchbind ( ',' matchbind )*

referenced by:


matchbind:

         ::= TOK_ID

referenced by:


iflet:

iflet    ::= 'if' 'let' '(' ( match_guard_record | match_guard_item ) '=' expr ')' expr ( 'else' expr )?

referenced by:


listcomp:

listcomp ::= '[' expr '|' qualifier_list ']' ':' param

referenced by:


qualifier_list:

         ::= qualifier ( ';' qualifier )*

referenced by:


qualifier:

         ::= generator

referenced by:


generator:

         ::= ( TOK_ID TOK_IN )? expr

referenced by:


array_sub_list:

         ::= array_sub ( ',' array_sub )*

referenced by:


array_sub:

         ::= '[' ( array_sub_list | expr_list ) ']'

referenced by:


array:

array    ::= ( '[' ( array_sub_list | expr_list ) ']' | '{[' expr_list ']}' ) ':' param

referenced by:


TOK_IN:

TOK_IN   ::= 'in'
           | '<-'

referenced by:



  ... generated by RR - Railroad Diagram Generator