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

Reply via email to