Bug: Syntax error when using 'or' keyword

I am getting a parse error when using the 'or' keyword. I do not get this error with '||'.

$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]

$ ruby-yarv -v
ruby 2.0.0 (Base: Ruby 1.9.0 2006-02-14) [powerpc-darwin8.5.0]
YARVCore 0.4.0 Rev: 482 (2006-03-08) [opts: ]

def example(arg)
end

example(nil || 3) # -> no error
example(nil or 3) # -> parse error, unexpected kOR, expecting ')'

-- Daniel

Hi --

I am getting a parse error when using the 'or' keyword. I do not get this error with '||'.

$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]

$ ruby-yarv -v
ruby 2.0.0 (Base: Ruby 1.9.0 2006-02-14) [powerpc-darwin8.5.0]
YARVCore 0.4.0 Rev: 482 (2006-03-08) [opts: ]

def example(arg)
end

example(nil || 3) # -> no error
example(nil or 3) # -> parse error, unexpected kOR, expecting ')'

There was a thread about this recently on ruby-core. Matz summed up
the situation as follows:

   OK. Keyword logical operators (and, or, not) are far lower precedence
   than comma, even lower than method calls without argument parentheses
   (in parser, they are called as commands), so that they are not allowed
   be a part of argument expression.

David

···

On Sat, 25 Mar 2006, Daniel Harple wrote:

--
David A. Black (dblack@wobblini.net)
Ruby Power and Light, LLC (http://www.rubypowerandlight.com)

"Ruby for Rails" chapters now available
from Manning Early Access Program! Ruby for Rails

Thanks, I should have checked ruby-core archives before posting.

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/7553

-- Daniel

···

On Mar 24, 2006, at 7:22 PM, dblack@wobblini.net wrote:

There was a thread about this recently on ruby-core. Matz summed up
the situation as follows:

  OK. Keyword logical operators (and, or, not) are far lower precedence
  than comma, even lower than method calls without argument parentheses
  (in parser, they are called as commands), so that they are not allowed
  be a part of argument expression.

unknown wrote:

   OK. Keyword logical operators (and, or, not) are far lower
precedence
   than comma, even lower than method calls without argument parentheses
   (in parser, they are called as commands), so that they are not
allowed
   be a part of argument expression.

Is there documentation anywhere which describes when to use the English
words versus the symbols, and why? All I know is that the words have
far lower precedence, but up to this point, I have been using them in
favour of the symbols whenever possible, using parentheses to force
evaluation order.

More and more, though, I feel "discriminated against" by the language,
in that I should always be using the symbols.

Pistos

···

--
Posted via http://www.ruby-forum.com/\.

Pistos Christou wrote:

Is there documentation anywhere which describes when to use the English words versus the symbols, and why? All I know is that the words have far lower precedence, but up to this point, I have been using them in favour of the symbols whenever possible, using parentheses to force evaluation order.

More and more, though, I feel "discriminated against" by the language, in that I should always be using the symbols.

Pistos

The "Expressions" section in Chapter 22 of the Pickaxe, 2nd. ed., contains a table of the Ruby operators in precedence order and, in the "Boolean Expressions" section, some prose that explains the and, &&, or,

···

, not and !, and defined? operators.