protected function walkFor(ForNode $for) { $ret = "for (\${$for->getVariableName()} = "; $ret .= $this->walk($for->getFrom()) . ", "; $toSym = $this->gensym(); $ret .= "{$toSym} = " . $this->walk($for->getTo()) . ", "; $iterationsSym = $this->gensym(); $ret .= "{$iterationsSym} = 0; "; $ret .= "\${$for->getVariableName()} <= {$toSym}; "; $ret .= "\${$for->getVariableName()} += " . ($for->getStep() === null ? "1" : $this->walk($for->getStep())); $ret .= ", ++{$iterationsSym}) {" . implode("", $this->walkEach((array) $for->getBody())) . "}"; $ret .= "if ({$iterationsSym} < 1) {" . implode("", $this->walkEach((array) $for->getElseBody())) . "}"; return $ret; }
protected function walkFor(ForNode $for) { return new ForNode($for->getVariableName(), $for->getFrom(), $for->getTo(), $for->getStep(), $this->walkEach($for->getBody()), $this->walkEach($for->getElseBody())); }