From: Rick DeNatale Date: 2010-02-20T09:59:54+09:00 Subject: Re: strings combine On Fri, Feb 19, 2010 at 5:02 PM, Raul Jara wrote: > But the parser knows what's a method and what's a variable, right? (I'm > asking.  I assume so but I really don't know.)  If it knows what is a > variable and what is a method, it can define x y as x(y) when x is a > method, and x y as x.+(y) when x is a variable.  Right? No. First - In the expression x y It sees x as a method because of the form of the expression. Just as it does for the expressions x(y) or self.x y and if we have: a = 'x' b = 'y' a b is the same as: self.a b not 'x' b def a(arg) "My arg is #{arg}" end a = 'string 1' b = 'string 2' a b # => "My arg is string 2" Second, variables in Ruby are untyped references to objects, and not objects themselves. So what would the compiler to do with def two_args(x, y) x y end two_args('a', 'b') two_args(1, 2) Third, the interpretation of 'a' 'b' as 'ab' Is not really a parser thing, it's a lexical analyser thing. It's just a rarely used form of string literal which allows for quoted strings separated by whitespace (or escaped newlines) to be coalesced before the parser even sees them. -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Twitter: http://twitter.com/RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale