[1] | Expression | ::= |
Literal
❙ Variable
❙ Stop
❙ Tuple
❙ List
❙ Record
❙ Call
❙ DotAccess
❙ PrefixOperation
❙ InfixOperation
❙ PostfixOperation
❙ Parallel
❙ Sequence
❙ Prune
❙ Otherwise
❙ Conditional
❙ Lambda
❙ WithDeclaration
❙ WithTypeInformation
❙ TypeOverride
❙ ( Expression )
| |
[2] | Stop | ::= |
stop
| |
[3] | Tuple | ::= |
( Expression , … , Expression )
| [ Tuple Size ≥ 2 ] |
[4] | List | ::= |
[ Expression , … , Expression ]
| |
[5] | Record | ::= |
{. Key = Expression , … , Key = Expression .}
| |
[6] | Call | ::= |
Expression TypeArguments? Arguments
| |
[7] | DotAccess | ::= |
Expression. Key
| |
[8] | PrefixOperation | ::= |
PrefixOperator Expression
| |
[9] | InfixOperation | ::= |
Expression InfixOperator Expression
| |
[10] | PostfixOperation | ::= |
Expression PostfixOperator
| |
[11] | Parallel | ::= |
Expression | Expression
| |
[12] | Sequence | ::= |
Expression > Pattern?> Expression
| |
[13] | Prune | ::= |
Expression < Pattern?< Expression
| |
[14] | Otherwise | ::= |
Expression ; Expression
| |
[15] | Conditional | ::= |
if Expression then Expression else Expression
| |
[16] | Lambda | ::= |
lambda TypeParameters? Parameters ReturnType? = Expression
| |
[17] | WithDeclaration | ::= |
Declaration Expression
| |
[18] | WithTypeInformation | ::= |
Expression :: Type
| |
[19] | TypeOverride | ::= |
Expression :!: Type
| |
[20] | Declaration | ::= |
DeclareVal # ?
❙ DeclareDefinition # ?
❙ DeclareDefclass # ?
❙ DeclareSignature # ?
❙ DeclareSite # ?
❙ DeclareClass # ?
❙ DeclareInclude # ?
❙ DeclareType # ?
| |
[21] | DeclareVal | ::= |
val Pattern = Expression
| |
[22] | DeclareDefinition | ::= |
def Variable TypeParameters? Parameters ReturnType? Guard? = Expression
| |
[23] | DeclareDefclass | ::= |
def class Variable TypeParameters? Parameters ReturnType? Guard? = Expression
| |
[24] | Guard | ::= |
if ( Expression )
| |
[25] | DeclareSignature | ::= |
def Variable TypeParameters? ArgumentTypes ReturnType
| |
[26] | DeclareSite | ::= |
import site Variable = ClassName
| |
[27] | DeclareClass | ::= |
import class Variable = ClassName
| |
[28] | DeclareInclude | ::= |
include FileName
| |
[29] | DeclareType | ::= |
DeclareTypeAlias
❙ DeclareTypeImport
❙ DeclareDatatype
| |
[30] | DeclareTypeAlias | ::= |
type TypeVariable TypeParameters? = Type
| |
[31] | DeclareTypeImport | ::= |
import type TypeVariable = ClassName
| |
[32] | DeclareDatatype | ::= |
type TypeVariable TypeParameters? = Constructor | … | Constructor
| |
[33] | Constructor | ::= |
Variable ( Slot , … , Slot )
| |
[34] | Slot | ::= |
Type
❙ _
| |
[35] | Pattern | ::= |
WildcardPattern
❙ LiteralPattern
❙ VariablePattern
❙ TuplePattern
❙ ListPattern
❙ RecordPattern
❙ ConsPattern
❙ CallPattern
❙ AsPattern
❙ PatternWithTypeInformation
❙ ( Pattern )
| |
[36] | WildcardPattern | ::= |
_
| |
[37] | LiteralPattern | ::= |
Literal
| |
[38] | VariablePattern | ::= |
Variable
| |
[39] | TuplePattern | ::= |
( Pattern , … , Pattern )
| [ Tuple Size ≥ 2 ] |
[40] | ListPattern | ::= |
[ Pattern , … , Pattern ]
| |
[41] | RecordPattern | ::= |
{. Key = Pattern , … , Key = Pattern .}
| |
[42] | ConsPattern | ::= |
Pattern : Pattern
| |
[43] | CallPattern | ::= |
Variable ( Pattern , … , Pattern )
| |
[44] | AsPattern | ::= |
Pattern as Variable
| |
[45] | PatternWithTypeInformation | ::= |
Pattern :: Type
| |
[46] | Type | ::= |
TypeVariable
❙ TupleType
❙ RecordType
❙ FunctionType
❙ TypeApplication
❙ ( Type )
| |
[47] | TupleType | ::= |
( Type , … , Type )
| [ Tuple Size ≥ 2 ] |
[48] | RecordType | ::= |
{. Key = Type , … , Key = Type .}
| |
[49] | FunctionType | ::= |
lambda TypeParameters? ArgumentTypes ReturnType
| |
[50] | TypeApplication | ::= |
Type TypeArguments
| |
[51] | Literal | ::= |
SignalLiteral
❙ BooleanLiteral
❙ NumberLiteral
❙ CharacterStringLiteral
❙ null
| |
[52] | SignalLiteral | ::= |
signal
| |
[53] | BooleanLiteral | ::= |
true ❙ false
| |
[54] | IntegerLiteral | ::= |
DecimalDigit+
| |
[55] | NumberLiteral | ::= |
IntegerLiteral DecimalPart? ExponentPart?
| |
[56] | DecimalPart | ::= |
. IntegerLiteral
| |
[57] | ExponentPart | ::= |
E IntegerLiteral
❙ E+ IntegerLiteral
❙ E- IntegerLiteral
❙ e IntegerLiteral
❙ e+ IntegerLiteral
❙ e- IntegerLiteral
| |
[58] | CharacterStringLiteral | ::= |
" Character+" ❙ ""
| |
[59] | Variable | ::= |
Identifier
| |
[60] | TypeVariable | ::= |
Identifier
| |
[61] | Key | ::= |
Identifier
| |
[62] | ClassName | ::= |
CharacterStringLiteral
| |
[63] | FileName | ::= |
CharacterStringLiteral
| |
[64] | Parameters | ::= |
( Pattern , … , Pattern )
| |
[65] | TypeParameters | ::= |
[ TypeVariable , … , TypeVariable ]
| |
[66] | ArgumentTypes | ::= |
( Type , … , Type )
| |
[67] | ReturnType | ::= |
:: Type
| |
[68] | Arguments | ::= |
( Expression , … , Expression )
| |
[69] | TypeArguments | ::= |
[ Type , … , Type ]
| |