On Dec 1, 2005, at 9:19 AM, [EMAIL PROTECTED] wrote:
> I have solved a similar issue(see http://seclib.blogspot.com/
> 2005/11/more-on-leftshift-and-heredoc.html
> ) and the same rules apply in this case.
>
> After we know foo is function, then space is
> important. If there is a space between foo and [1]("foo [1]"),
> then foo
> is a function call and [1] is the parameter(same as "foo([1])"). If
> there
> is no space("foo[1]"), then it is treated as "(foo)[1]".
Hi. An alternative is to pass all whitespace to the parser on a
hidden channel and then ask if there is a space before the [1] in the
lexer. :)
> Since the parser
> can not see space, the burden is on the lexer. In other words, it
> should return
> different token type for '[' in different context. For example:
> LBRACK_IN_COMMAND
> and LBRACK.
That will work but I'm thinking that passing in white space to the
parser is reasonable since it's significant (surprisingly) in Ruby
just like python (shudder). ;)
Ter
_______________________________________________
Rubygrammar-grammarians mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rubygrammar-grammarians