文 Statement
<statement>
::= <block-statement>
| <expression-statement>
| <variable-definition-statement>
| <assignment-statement>
| <if-statement>
| <while-statement>
| <for-statement>
|
<block-statement>
::= { <statement>* }
<expression-statement>
::= <expression> ;
<variable-definition-statement>
::= let <identifier> (: <type-representation>)? = <expression> ;
<assignment-statement>
::= <assignable-expression> = <expression> ;
<assignable-expression>
::= <identifier>
| <assignable-expression> . <identifier>
| <assignable-expression> [ <expression> ]
<if-statement>
::= if <expression> <block-statement>
(else if <expression> <block-statement>)*
(else <block-statement>)?
<while-statement>
::= while <expression> <block-statement>
<for-statement>
::= for <identifier> in <expression> <block-statement>
<optional-statement>
::= some <identifier> = <expression> <block-statement> none <block-statement>
検討中。以下のように書けるようにするかもしれない
let opt_v: V? = foo();
some v = opt_v {
// v を使った処理
bar(v);
} none {
// 値がない場合の処理
}