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:
`
::= statement+
`
referenced by:
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:
`
::= ( ‘[’ expression ‘]’ )+
`
referenced by:
fncallargs:
`
::= expression? ( ‘,’ expression )*
`
referenced by:
fndefinition:
`
::= ‘def’ ident
`
referenced by:
codeblock:
`
::= ‘↵’ ‘⇥’ lines ‘⇤’
`
referenced by:
opassgn:
`
opassgn ::= ‘+=’
’-=’ |
‘*=’ |
’/=’ |
’%=’ |
‘**=’ |
’//=’ |
`
referenced by:
declareident:
`
::= ident
`
no references
expression:
`
::= ‘not’? logical_and_expression ( ‘or’ logical_and_expression )*
`
referenced by:
logical_and_expression:
`
::= equality_expression ( ‘and’ equality_expression )*
`
referenced by:
equality_expression:
`
::= relational_expression ( ( ‘==’ | NEQ | ‘is’ ) relational_expression )* |
`
referenced by:
relational_expression:
`
::= additive_expression ( ( ‘>’ | ’<’ | ’<=’ | ’>=’ ) additive_expression )* |
`
referenced by:
additive_expression:
`
::= multiplicative_expression ( ( ‘+’ | ’-‘ ) multiplicative_expression )* |
`
referenced by:
multiplicative_expression:
`
::= ( value | ( ‘str’ ‘(‘ expression | ‘input’ ‘(‘ expression? ) ‘)’ | ’[’ expression ( ‘,’ expression )* ‘]’ ( ‘’ expression )? ) ( ( ‘’ | ’/’ | ’//’ | ’%’ | ‘*’ ) value ) |
`
referenced by:
value:
`
( ‘(‘ expression | ‘native’? ident ‘(‘ fncallargs | ( ‘id’ | ‘symbol’ ) ‘(‘ ident ) ‘)’ |
identscalararray |
`
referenced by:
identscalararray:
`
::= ident arrayaccessor?
`
referenced by:
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:
`
::= ‘+’
’-‘ |
`
referenced by:
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