in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [3355:3488]
def _ForStatement
_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
_tmp = apply(:__hyphen_)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_save2 = self.pos
while true # choice
_tmp = apply(:_ForVarInit)
break if _tmp
self.pos = _save2
_tmp = apply(:_ForInit)
break if _tmp
self.pos = _save2
break
end # end choice
@result = nil unless _tmp
unless _tmp
_tmp = true
self.pos = _save1
end
init = @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
_save3 = self.pos
_tmp = apply(:_ForTest)
@result = nil unless _tmp
unless _tmp
_tmp = true
self.pos = _save3
end
test = @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
_save4 = self.pos
_tmp = apply(:_ForUpdate)
@result = nil unless _tmp
unless _tmp
_tmp = true
self.pos = _save4
end
update = @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)
body = @result
unless _tmp
self.pos = _save
break
end
@result = begin; for_statement(init, test, update, body); end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_ForStatement unless _tmp
return _tmp
end