Change the order that calling is parsed against to ensure that Outside(Func(A),B) is passed as a call to Func with a single argument as opposed to a call to Func with a two arguments, one wrapped in parenthesis.
Update the grammar so Block is now refers to a block of statements with delineators