lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On Mon, 13 Jun 2011, Roberto Ierusalimschy wrote:

Why break can appear middle of block but not return?

Because return may be followed by an optional expression. Something
like 'return a       = 3' would confuse the parser.

There's something to be said for allowing it in the middle of a block if it's followed directly by a label:

function foo ()
	.......
	.......
	return 3
@error1:
	print("error1 occurred")
	return nil
@error2:
	print("error2 occurred")
	return nil
end

In this case the expression list after return ends when you either hit end or a label.

Algol 68 has a similar construct (the value returned is the value of the last expression before END or EXIT):
BEGIN
	.......
	<expression>
EXIT
label:
	.........
	<expression>
END


Gé