private Statement Do() { DoStatement doNode = new DoStatement(); Statement saved = Statement.Enclosing; Statement.Enclosing = doNode; Match(Tags.DO); Statement doContents = Stmt(); Match(Tags.WHILE); Match('('); Expression condition = Bool(); Match(')'); Match(';'); doNode.Init(condition, doContents); Statement.Enclosing = saved; // Reset enclosing statement return(doNode); }