in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [6892:7008]
def _MemberExpression
_save = self.pos
while true # choice
_save1 = self.pos
while true # sequence
_tmp = apply(:_MemberExpression)
left = @result
unless _tmp
self.pos = _save1
break
end
_tmp = apply(:__hyphen_)
unless _tmp
self.pos = _save1
break
end
_tmp = apply(:_BracketAccessor)
right = @result
unless _tmp
self.pos = _save1
break
end
@result = begin; member_expression(left, right, true); end
_tmp = true
unless _tmp
self.pos = _save1
end
break
end # end sequence
break if _tmp
self.pos = _save
_save2 = self.pos
while true # sequence
_tmp = apply(:_MemberExpression)
left = @result
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:__hyphen_)
unless _tmp
self.pos = _save2
break
end
_tmp = apply(:_DotAccessor)
right = @result
unless _tmp
self.pos = _save2
break
end
@result = begin; member_expression(left, right, false); end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save
_save3 = self.pos
while true # sequence
_tmp = apply(:_NewTok)
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:__hyphen_)
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_MemberExpression)
expr = @result
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:__hyphen_)
unless _tmp
self.pos = _save3
break
end
_tmp = apply(:_Arguments)
arguments = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; new_expression(expr, arguments); end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save
_tmp = apply(:_PrimaryExpression)
break if _tmp
self.pos = _save
_tmp = apply(:_FunctionExpression)
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_MemberExpression unless _tmp
return _tmp
end