package Ġnet . as che ja . ro kk star . ast Ċ Ċ sealed Ġclass ĠStatement Ċ Ċ data Ġclass ĠBlock Statement ( val Ġstatements : ĠList < Statement >) Ġ: ĠStatement (), ĠIterable < Statement > Ġby Ġstatements Ġ{ ĊĠĠĠ Ġconstructor ( statement : ĠStatement ) Ġ: Ġthis ( listOf ( statement )) Ċ } Ċ Ċ object ĠContinue Statement Ġ: ĠStatement () Ċ object ĠBreak Statement Ġ: ĠStatement () Ċ data Ġclass ĠReturn Statement ( val Ġexpression : ĠExpression ) Ġ: ĠStatement () Ċ data Ġclass ĠUnt il Loop Statement ( val Ġcondition : ĠExpression , Ġval Ġbody : ĠBlock Statement ) Ġ: ĠStatement () Ċ data Ġclass ĠWhile Loop Statement ( val Ġcondition : ĠExpression , Ġval Ġbody : ĠBlock Statement ) Ġ: ĠStatement () Ċ Ċ data Ġclass ĠFunction Declaration ( ĊĠĠĠ Ġval Ġidentifier : ĠIdentifier , ĊĠĠĠ Ġval Ġparameters : ĠList < Identifier >, ĊĠĠĠ Ġval Ġbody : ĠBlock Statement Ċ ) Ġ: ĠStatement () Ċ Ċ data Ġclass ĠIf Statement ( ĊĠĠĠ Ġval Ġcondition : ĠExpression , ĊĠĠĠ Ġval Ġthen Block : ĠBlock Statement , ĊĠĠĠ Ġval Ġelse Block : ĠBlock Statement ? Ġ= Ġnull Ċ ) Ġ: ĠStatement () Ċ Ċ data Ġclass ĠIncrement Statement ( val Ġidentifier : ĠIdentifier , Ġval Ġamount : ĠInt ) Ġ: ĠStatement () Ċ data Ġclass ĠDec rement Statement ( val Ġidentifier : ĠIdentifier , Ġval Ġamount : ĠInt ) Ġ: ĠStatement () Ċ data Ġclass ĠAssignment Statement ( val Ġidentifier : ĠIdentifier , Ġval Ġexpression : ĠExpression ) Ġ: ĠStatement () ĊĊ Ċ data Ġclass ĠPrint Line Statement ( val Ġexpression : ĠExpression ) Ġ: ĠStatement () Ċ data Ġclass ĠRead Line Statement ( val Ġidentifier : ĠIdentifier ) Ġ: ĠStatement () Ċ