_ForInStatement

in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [3193:3277]


  def _ForInStatement

    _save = self.pos
    while true # sequence
      _tmp = apply(:_ForTok)
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:__hyphen_)
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = match_string("(")
      unless _tmp
        self.pos = _save
        break
      end

      _save1 = self.pos
      while true # choice
        _tmp = apply(:_ForInLeft)
        break if _tmp
        self.pos = _save1
        _tmp = apply(:_ForInVarLeft)
        break if _tmp
        self.pos = _save1
        break
      end # end choice

      left = @result
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:_InTok)
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:__hyphen_)
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:_Expression)
      right = @result
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:__hyphen_)
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = match_string(")")
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:__hyphen_)
      unless _tmp
        self.pos = _save
        break
      end
      _tmp = apply(:_Statement)
      stmt = @result
      unless _tmp
        self.pos = _save
        break
      end
      @result = begin; for_in_statement(left, right, stmt, nil); end
      _tmp = true
      unless _tmp
        self.pos = _save
      end
      break
    end # end sequence

    set_failed_rule :_ForInStatement unless _tmp
    return _tmp
  end