In Parser.hs:589, we have the code:
parseParamList parse = parseParenParamList parse
<|> parseNoParenParamList parse
parseParenParamList parse = do
[inv, norm] <- maybeParens $ parseNoParenParamList parse
block <- option [] ruleAdverb
-- XXX we just append the adverbial block onto the end of the arg list
-- it really goes into the *& slot if there is one. -lp
processFormals [inv, norm ++ block]
But this allows the syntax '$x.foo $y', that is, an argument to a method
call without parentheses. This isn't a big deal, and could even be
construed as a feature, if it weren't for:
for %hash.keys { ... }
Which is misparsed.
Taking out maybeParens and putting 'option [[],[]] $ parens' in its
place makes that part work, but it breaks our regular 'say "foo"'
paren-less syntax. I would think that the parseParamList rule above
would fix that. No matter where I put 'try', it never seems to want to
go to parseNoParenParamList.
Luke