[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

syntax error, unexpected kOR

nonno_lele

3/26/2007 2:53:00 PM

Hello there,

I'm newbie with ruby and to be onest I'm quite surprised about a
strange behaviour I found:

How the interpreter works with this lines looks odd to me:

def dummy?
(true or false )
end

This one has no problem... and also this one:

def dummy?
(true or
false )
end

But what happen when you split the boolean condition into 2 different
lines and u put the OR in the 2nd line??

def dummy?()
(true
or false )
end

U get *"syntax error, unexpected kOR, expecting ')' "*

I agree that the interpreter is not able to undestand this one:

def dummy?()
true
or false
end

because of the missing () and return... but using the ( ) it should
work.

At least using Return and ( ) should work..

def dummy?()
return (true
or false )
end

But it is not.


Where is my fault? Looks strange to me that an high level language
forces you to think about in which position you've to put the OR.

Is there a way to force the interpreter to evaluate the block inside
the () before anything else?

Thanks in advance ,

Regards,

Em.


PS: ive found an old discussion about the same error but I'm not sure
this answer my question:
http://tinyurl....

PS2: using || instead of OR gives the same result.

cheers.

3 Answers

Florian Groß

3/26/2007 3:02:00 PM

0

On Mar 26, 4:52 pm, "nonno_lele" <emanuel...@gmail.com> wrote:

> I'm newbie with ruby and to be onest I'm quite surprised about a
> strange behaviour I found: [...]
>
> def dummy?()
> (true
> or false )
> end

Currently, it is the same as (true; or false).

This works:

puts((puts 'foo'; puts 'bar'; 'qux'))
# >> foo
# >> bar
# >> qux

And so does this:

puts((
puts 'foo'
puts 'bar'
'qux'))
# >> foo
# >> bar
# >> qux

Kind regards,
Florian Gross

Jano Svitok

3/26/2007 3:05:00 PM

0

On 3/26/07, nonno_lele <emanueledf@gmail.com> wrote:
> Hello there,
>
> I'm newbie with ruby and to be onest I'm quite surprised about a
> strange behaviour I found:
>
> How the interpreter works with this lines looks odd to me:
>
> def dummy?
> (true or false )
> end
>
> This one has no problem... and also this one:
>
> def dummy?
> (true or
> false )
> end
>
> But what happen when you split the boolean condition into 2 different
> lines and u put the OR in the 2nd line??
>
> def dummy?()
> (true
> or false )
> end
>
> U get *"syntax error, unexpected kOR, expecting ')' "*
>
> I agree that the interpreter is not able to undestand this one:
>
> def dummy?()
> true
> or false
> end
>
> because of the missing () and return... but using the ( ) it should
> work.
>
> At least using Return and ( ) should work..
>
> def dummy?()
> return (true
> or false )
> end
>
> But it is not.


> Where is my fault? Looks strange to me that an high level language
> forces you to think about in which position you've to put the OR.

The problem is that interpreter needs to know somehow that the line
should continue.
Putting 'or' or '||' at the end of the line tells it that. Other way
is to use \ as the last character on the line.

> Is there a way to force the interpreter to evaluate the block inside
> the () before anything else?
>
> Thanks in advance ,
>
> Regards,
>
> Em.
>
>
> PS: ive found an old discussion about the same error but I'm not sure
> this answer my question:
> http://tinyurl....

this is another problem.

> PS2: using || instead of OR gives the same result.
>
> cheers.

nonno_lele

3/26/2007 3:44:00 PM

0

On 26 Mar, 17:05, "Jano Svitok" <jan.svi...@gmail.com> wrote:
> On 3/26/07, nonno_lele <emanuel...@gmail.com> wrote:
>
CUT
>
> > At least using Return and ( ) should work..
>
> > def dummy?()
> > return (true
> > or false )
> > end
>
> > But it is not.
> > Where is my fault? Looks strange to me that an high level language
> > forces you to think about in which position you've to put the OR.
>
> The problem is that interpreter needs to know somehow that the line
> should continue.
> Putting 'or' or '||' at the end of the line tells it that. Other way
> is to use \ as the last character on the line.

Err.. in a ideal world the interpreter should understand it cause it
finds and open "(" without the closure..

obviusly IMHO :-)



thank you for the answer.

Cheers,

Em.