On 4/17/12 10:03 PM, David Piepgrass wrote:

    > This requires arbitrary lookahead to disambiguate from tuples.

    This bit in particular. Really really don't want to cross the
    bridge to
    arbitrary lookahead in the grammar.


Pardon me, but I'm not convinced that there is a problem in lambdas like (x, y) -> (x + y). By analogy, you can realize that ((x * y) + z, q) is a tuple instead of a simple parenthesized expression when you reach the comma -- you don't need to look ahead for a comma in advance. So why not treat (x, y) as a tuple until you reach the "->" and then reinterpret the contents at that point? This works as long as the syntax of a lambda argument list is a subset of the tuple syntax, anyway. If that's not the case, parsing gets messier, though I'm sure arbitrary lookahead is not be the only possible implementation.

You are correct that, in theory, we could parse, but we wouldn't be able to build AST nodes until we know definitively whether it's a lambda or not.


Niko
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to