GrammarΒΆ

The following EBNF Grammar defines the Syntax for mio:

operator   ::=  "**" | "++" | "--" | "+=" | "-=" | "*=" | "/=" | "<<" | ">>" |
                "==" | "!=" | "<=" | ">=" | "+"  | "-"  | "*"  | "/"  | "="  |
                "<"  | ">"  | "!"  | "%"  | "|"  | "^"  | "&"  | "is" | "or" |
                "and" |  "not" |
                "return"
comment    ::=  r"^#.*$"
whitespace ::=  r"[ \t]+"
string     ::=  r'"[^"]*"'
number     ::=  r'-?([0-9]+(\.[0-9]*)?)'
identifier ::=  r'[A-Za-z_][A-Za-z0-9_]*'
terminator ::=  ";" | "\r" | "\n"
expression ::=  (message | terminator)*
message    ::=  (symbol, [ arguments ]) | arguments
opening    ::=  "(" | "{" | "["
closing    ::=  ")" | "}" | "]"
arguments  ::=  opening , ( expression, ( "," , expression )* )* , closing
symbol     ::=  identifier | number | operator | string