program:

[program]{.code}(#program “program”)  ::= [lines]{.code}(#lines “lines”)

no references

lines:

lines    ::= [line]{.ebnf.code}(#line “line”)+

referenced by:

line:

`

line     ::= statements ‘↵’?

            ‘↵’

`

referenced by:

statements:

`

statements

         ::= statement+

`

referenced by:

statement:

`

statement

         ::= ( ( ‘for’ ident ‘in’ ‘while’ ‘elif’ ) expression fndefinition ‘(‘ ( ident ( ‘=’ expression )? )? ( ‘,’ ident ( ‘=’ expression )? )* ‘)’ ) ‘:’ codeblock
            ‘if’ expression ‘:’ ( codeblock ( ‘elif’ expression ‘:’ codeblock )* ( ‘else’ ‘:’ codeblock )? statements )
            ( identscalararraylhs ‘=’ identscalararray opassgn ‘print’ ) expression
            ( ( ‘exit’ ‘quit’ ) ‘(‘ ‘native’? ident ‘(‘ fncallargs ‘alias’ ‘(‘ ident ‘,’ expression ) ‘)’
            ‘return’ expression?
            ‘pass’
            ’@’ ident

`

referenced by:

arrayaccessor:

`

arrayaccessor

         ::= ( ‘[’ expression ‘]’ )+

`

referenced by:

fncallargs:

`

fncallargs

         ::= expression? ( ‘,’ expression )*

`

referenced by:

fndefinition:

`

fndefinition

         ::= ‘def’ ident

`

referenced by:

codeblock:

`

codeblock

         ::= ‘↵’ ‘⇥’ lines ‘⇤’

`

referenced by:

opassgn:

`

opassgn  ::= ‘+=’

            ’-=’
            ‘*=’
            ’/=’
            ’%=’
            ‘**=’
            ’//=’

`

referenced by:

declareident:

`

declareident

         ::= ident

`

no references

expression:

`

expression

         ::= ‘not’? logical_and_expression ( ‘or’ logical_and_expression )*

`

referenced by:

logical_and_expression:

`

logical_and_expression

         ::= equality_expression ( ‘and’ equality_expression )*

`

referenced by:

equality_expression:

`

equality_expression

         ::= relational_expression ( ( ‘==’ NEQ ‘is’ ) relational_expression )*

`

referenced by:

relational_expression:

`

relational_expression

         ::= additive_expression ( ( ‘>’ ’<’ ’<=’ ’>=’ ) additive_expression )*

`

referenced by:

additive_expression:

`

additive_expression

         ::= multiplicative_expression ( ( ‘+’ ’-‘ ) multiplicative_expression )*

`

referenced by:

multiplicative_expression:

`

multiplicative_expression

         ::= ( value ( ‘str’ ‘(‘ expression ‘input’ ‘(‘ expression? ) ‘)’ ’[’ expression ( ‘,’ expression )* ‘]’ ( ‘expression )? ) ( ( ‘ ’/’ ’//’ ’%’ *’ ) value )

`

referenced by:

value:

`

value    ::= constant

            ( ‘(‘ expression ‘native’? ident ‘(‘ fncallargs ( ‘id’ ‘symbol’ ) ‘(‘ ident ) ‘)’
            identscalararray

`

referenced by:

identscalararray:

`

identscalararray

         ::= ident arrayaccessor?

`

referenced by:

identscalararraylhs:

`

identscalararraylhs

         ::= ident arrayaccessor?

`

referenced by:

ident:

`

ident    ::= identifier

`

referenced by:

constant:

`

constant ::= unary_operator? ( ‘integer’ ‘real’ )
            HEX
            ‘string’
            ‘True’
            ‘False’
            ‘None’

`

referenced by:

unary_operator:

`

unary_operator

         ::= ‘+’

            ’-‘

`

referenced by:

identifier:

`

identifier

         ::= ( letter ‘_’ ) ( letter digit ‘_’ )*

`

referenced by:

NEQ:

`

NEQ      ::= ‘<>’

            ’!=’

`

referenced by:

letter:

`

letter   ::= ‘A’

            ‘B’
            ‘C’
            ‘D’
            ‘E’
            ‘F’
            ‘G’
            ‘H’
            ‘I’
            ‘J’
            ‘K’
            ‘L’
            ‘M’
            ‘N’
            ‘O’
            ‘P’
            ‘Q’
            ‘R’
            ‘S’
            ‘T’
            ‘U’
            ‘V’
            ‘W’
            ‘X’
            ‘Y’
            ‘Z’
            ‘a’
            ‘b’
            ‘c’
            ‘d’
            ‘e’
            ‘f’
            ‘g’
            ‘h’
            ‘i’
            ‘j’
            ‘k’
            ‘l’
            ‘m’
            ‘n’
            ‘o’
            ‘p’
            ‘q’
            ‘r’
            ’s’
            ‘t’
            ‘u’
            ‘v’
            ‘w’
            ‘x’
            ‘y’
            ‘z’

`

referenced by:

digit:

`

digit    ::= ‘0’

            ‘1’
            ‘2’
            ‘3’
            ‘4’
            ‘5’
            ‘6’
            ‘7’
            ‘8’
            ‘9’

`

referenced by:

HEX:

`

HEX      ::= ‘0x’ ( digit ‘A’ ‘B’ ‘C’ ‘D’ ‘E’ ‘F’ )+

`

referenced by:


 

… generated by RR - Railroad Diagram Generator