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