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