::= { DeclarationStart } ::= Type Symbol { } Assign { VBar } | Struct Symbol { } Assign { } | Trait Symbol { } [ On ] Needs { } | Impl Symbol [ ] On Colon { } | Symbol ::= Symbol { } ::= [ { Comma } Aro ] ::= { } ::= | OpenParen CloseParen ::= Symbol [ OpenSquareBracket CloseSquareBracket ] ::= Dot Symbol Colon ::= Symbol [OpenSquareBracket { Comma } CloseSquareBracket] ::= Dot Symbol { Symbol } Assign ::= Colon | { Symbol } Assign ::= If | { } In | ::= Literal | { } | OpenParen CloseParen ::= Symbol { Dot Symbol } ::= Let Symbol Assign ::= Is { Comma } [ Comma ] | Then Else ::= Aro ::= [ ] ::= [ ] ::= [ ] ::= [ ] ::= [ ] ::= Mult | Div | Mod ::= Add | Sub ::= Range ::= Eq | NEq | LessThan | GreaterThan ::= LAnd ::= LOr ::= { } ::= Symbol | Literal ::= { } | { } ::= Dot Symbol Assign