in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [2224:2333]
def _FunctionExpression
_save = self.pos
while true # sequence
_tmp = apply(:_FunctionTok)
unless _tmp
self.pos = _save
break
end
_tmp = apply(:__hyphen_)
unless _tmp
self.pos = _save
break
end
_save1 = self.pos
_tmp = apply(:_Identifier)
@result = nil unless _tmp
unless _tmp
_tmp = true
self.pos = _save1
end
id = @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
_save2 = self.pos
_tmp = apply(:_FormalParameterList)
@result = nil unless _tmp
unless _tmp
_tmp = true
self.pos = _save2
end
params = @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 = match_string("{")
unless _tmp
self.pos = _save
break
end
while true
_tmp = apply(:_SnoComment)
break unless _tmp
end
_tmp = true
unless _tmp
self.pos = _save
break
end
_tmp = apply(:_FunctionBody)
body = @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
@result = begin; function_expression(id, params || parameter_list([]), body); end
_tmp = true
unless _tmp
self.pos = _save
end
break
end # end sequence
set_failed_rule :_FunctionExpression unless _tmp
return _tmp
end