maiascript:
maiascript
::= expression*
| eof
no references operation:
operation
::= variableAssignment
referenced by: expression variableAssignment:
variableAssignment
::= logicalORExpression ( '=' logicalORExpression )*
referenced by: operation logicalORExpression:
logicalORExpression
::= logicalANDExpression ( '||' logicalANDExpression )*
referenced by: variableAssignment logicalANDExpression:
logicalANDExpression
::= bitwiseORExpression ( '&&' bitwiseORExpression )*
referenced by: logicalORExpression 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