public void VisitWhile(WhileStatement w)
{
if (w.Else != null)
{
gen.If(
w.Test.Accept(xlat),
() => gen.DoWhile(
() => w.Body.Accept(this),
w.Test.Accept(xlat)),
() => w.Else.Accept(this));
}
else
{
gen.While(
w.Test.Accept(xlat),
() => w.Body.Accept(this));
}
}