maiascript:

`
maiascript
::= expression*
| eof
`

no references

operation:

`
operation
::= variableAssignment
`

referenced by:

- expression

variableAssignment:

`
variableAssignment
::= logicalORExpression ( '=' logicalORExpression )*
`

referenced by:

- operation

logicalORExpression:

`
logicalORExpression
::= logicalXORExpression ( '||' logicalXORExpression )*
`

referenced by:

- variableAssignment

logicalXORExpression:

`
logicalXORExpression
::= logicalANDExpression ( '||||' logicalANDExpression )*
`

referenced by:

- logicalORExpression

logicalANDExpression:

`
logicalANDExpression
::= bitwiseORExpression ( '&&' bitwiseORExpression )*
`

referenced by:

- logicalXORExpression

bitwiseORExpression:

`
bitwiseORExpression
::= bitwiseXORExpression ( '|' bitwiseXORExpression )*
`

referenced by:

- logicalANDExpression

bitwiseXORExpression:

`
bitwiseXORExpression
::= bitwiseANDExpression ( '|||' bitwiseANDExpression )*
`

referenced by:

- bitwiseORExpression

bitwiseANDExpression:

`
bitwiseANDExpression
::= equalityExpression ( '&' equalityExpression )*
`

referenced by:

- bitwiseXORExpression

equalityExpression:

`
equalityExpression
::= relationalExpression ( ( '==' | '!=' ) relationalExpression )*
`

referenced by:

- bitwiseANDExpression

relationalExpression:

`
relationalExpression
::= shiftExpression ( ( '<' | '>' | '<=' | '>=' ) shiftExpression )*
`

referenced by:

- equalityExpression

shiftExpression:

`
shiftExpression
::= additiveExpression ( ( '<<' | '>>' ) additiveExpression )*
`

referenced by:

- relationalExpression

additiveExpression:

`
additiveExpression
::= multiplicativeExpression ( ( '+' | '-' ) multiplicativeExpression )*
`

referenced by:

- shiftExpression

multiplicativeExpression:

`
multiplicativeExpression
::= powerExpression ( ( '*' | '/' | '%' ) powerExpression )*
`

referenced by:

- additiveExpression

powerExpression:

`
powerExpression
::= unaryExpression ( '^' unaryExpression )*
`

referenced by:

- multiplicativeExpression

unaryExpression:

`
unaryExpression
::= ( '~' | '!' )? primary
`

referenced by:

- powerExpression

primary:

`
primary ::= member
| value
| parenthesizedExpression
`

referenced by:

- unaryExpression

statement:

`
statement
::= namespace
| function
| if
| do
| while
| for
| foreach
| try
| test
| 'break'
| 'continue'
| return
| throw
`

referenced by:

- expression

namespace:

`
namespace
::= 'namespace' identifier '{' expression* '}'
`

referenced by:

- statement

function:

`
function ::= 'function' identifier '(' arguments? ')' '{' expression* '}'
`

referenced by:

- statement

if:

`
if ::= 'if' '(' expression ')' '{' expression* '}' elseif* else?
`

referenced by:

- statement

elseif:

`
elseif ::= 'elseif' '(' expression ')' '{' expression* '}'
`

referenced by:

- if

else:

`
else ::= 'else' '{' expression* '}'
`

referenced by:

- if

do:

`
do ::= 'do' '{' expression* '}' 'while' '(' expression ')'
`

referenced by:

- statement

while:

`
while ::= 'while' '(' expression ')' '{' expression* '}'
`

referenced by:

- statement

for:

`
for ::= 'for' '(' expression? ';' expression? ';' expression? ')' '{' expression* '}'
`

referenced by:

- statement

foreach:

`
foreach ::= 'foreach' '(' expression? ';' expression? ';' expression? ')' '{' expression* '}'
`

referenced by:

- statement

try:

`
try ::= 'try' '{' expression* '}' catch?
`

referenced by:

- statement

test:

`
test ::= 'test' '(' expression? ( ';' expression? ( ';' expression? )? )? ')' '{' expression* '}' catch?
`

referenced by:

- statement

catch:

`
catch ::= 'catch' '(' expression ')' '{' expression* '}'
`

referenced by:

- test
- try

return:

`
return ::= 'return' '(' expression? ')'
`

referenced by:

- statement

throw:

`
throw ::= 'throw' '(' expression? ')'
`

referenced by:

- statement

expression:

`
expression
::= statement
| operation
| comment
`

referenced by:

- arguments
- catch
- column
- do
- element
- else
- elseif
- for
- foreach
- function
- if
- maiascript
- namespace
- parenthesizedExpression
- return
- test
- throw
- try
- while

arguments:

`
arguments
::= expression ( ',' expression )*
`

referenced by:

- function
- member

member:

`
member ::= identifier ( '.' identifier )* ( '(' arguments* ')' | ( '[' arguments ']' )* )
`

referenced by:

- primary

array:

`
array ::= '{' element ( ',' element )* '}'
`

referenced by:

- value

matrix:

`
matrix ::= '[' row? ( ';' row )* ']'
`

referenced by:

- value

element:

`
element ::= ( key ':' )? expression
`

referenced by:

- array

key:

`
key ::= string
`

referenced by:

- element

row:

`
row ::= column ( ',' column )*
`

referenced by:

- matrix

column:

`
column ::= expression
`

referenced by:

- row

parenthesizedExpression:

`
parenthesizedExpression
::= '(' expression ')'
`

referenced by:

- primary

value:

`
value ::= real
| complex
| string
| array
| matrix
| 'null'
| 'true'
| 'false'
`

referenced by:

- primary

whitespace:

`
whitespace
::= whitespace^token
/* ws: definition */
`

referenced by:

- whitespace

eof:

`
eof ::= $
`

referenced by:

- maiascript

identifier:

`
identifier
::= ( firstIdentifierChar identifierChar* ) - reservedWord
`

referenced by:

- function
- member
- namespace

reservedWord:

`
reservedWord
::= keyword
| 'null'
| booleanLiteral
`

referenced by:

- identifier

keyword:

`
keyword ::= 'namespace'
| 'function'
| 'if'
| 'elseif'
| 'else'
| 'do'
| 'while'
| 'for'
| 'foreach'
| 'try'
| 'catch'
| 'test'
| 'break'
| 'continue'
| 'return'
| 'throw'
`

referenced by:

- reservedWord

booleanLiteral:

`
booleanLiteral
::= 'true'
| 'false'
`

referenced by:

- reservedWord

firstIdentifierChar:

`
firstIdentifierChar
::= [$_A-Za-z]
`

referenced by:

- identifier

identifierChar:

`
identifierChar
::= [$_0-9A-Za-z]
`

referenced by:

- identifier

string:

`
string ::= '"' ( unicode | '\"' | '\\' | '\/' | '\b' | '\f' | '\n' | '\r' | '\t' )* '"'
`

referenced by:

- key
- value

unicode:

`
unicode ::= alphabet - ["#x005C]
`

referenced by:

- string

alphabet:

`
alphabet ::= [#x0009#x000A#x000D#x0020-#xD7FF#xE000-#xFFFD#x10000-#x10FFFF]
`

referenced by:

- unicode

complex:

`
complex ::= real? imaginary
`

referenced by:

- value

real:

`
real ::= '-'? digit+ ( '.' digit+ )? ( ( 'e' | '9' ) ( '+' | '-' )? digit+ )?
`

referenced by:

- complex
- imaginary
- value

imaginary:

`
imaginary
::= ( '+' | '-' )? real '*' 'i'
`

referenced by:

- complex

digit:

`
digit ::= [0-9]
`

referenced by:

- real

comment:

`
comment ::= singleLineComment
`

referenced by:

- expression

singleLineComment:

`
singleLineComment
::= ( '//' | '#' ) ( sourceCharacter - lineTerminator )*
`

referenced by:

- comment

sourceCharacter:

`
sourceCharacter
::= .
`

referenced by:

- singleLineComment

lineTerminator:

`
lineTerminator
::= [#x000A#x000D#x2028#x2029]
`

referenced by:

- singleLineComment

whitespace:

`
whitespace
::= [#x0009#x000A#x000D#x0020]+
`

referenced by:

- whitespace

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