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

Reply via email to