#i am macro

library "a"

function myfunc ( foo as Integer , bar as Float = 3.5 ) as Void
end function

sub mysub ( foo as Integer , bar as Float = 3.5 ) as Void
end sub

' my comment

Function MyCamelCaseFunction()
    lvalue = rvalue
a=5
a=5!
a=5#
a=5%
a=5&

a$=5
a!=5
a#=5
a%=5
a&=5

a=a$
a=a!
a=a#
a=a%
a=a&

foo()
a.foo()
a=a.foo()

eval=5
eval()
a.eval()

a=eval
a=eval()
a=a.eval()

sleep=5
sleep()
a.sleep()

a=sleep
a=sleep()
a=a.sleep()

if a=b c=d
if a foo()
if a then foo()

if a
end if

if a then
end if

if a
else if
else
end if

if a
elseif
endif

for each a in b
end for

for a=1 to 10 step 2
endFor

for each a in b
next

while a
end while

while a
endWhile

a [ "a" , 1, foo() ] = 1
a.foo()[1]=1

a = {
    a : 1
    b : "2"
    c : function() : end function
}

b.foo("string",1,{a:b},1.5,[1,2,3])
a = b.foo("string",1,{a:b},1.5,[1,2,3])

unnamed_function = function ( a as Integer ) as Float

a = +-b
a = &h42abcdef
c = var@attr
end function

unnamed_sub = sub ( a as Integer ) as Void
end sub
endFunction

sub exceptions()
	try=1
	try()
	try.foo
	try foo

	catch=1
	catch()
	catch.foo
	catch foo

	try
	catch foo
	end try

	try ' comment
	endtry

	throw {a: "abc"}
end sub

sub inline_lambda()
	a(a, "string")(a, "string")

	a = sub()
	end sub(a, "string", [a, foo("string")])

	b = function()
	end function(a, "string")

	c = sub()
	end sub
end sub