I have been trying to write a program for my class assignment but
everytime i do i get an error on the last line of the code that says
‘unexpected $end, expecting kEND’
this happens on every program i try to run
any ideas?
i am using fedora core 5 if that makes a difference
Kd Kushelduv wrote:
I have been trying to write a program for my class assignment but
everytime i do i get an error on the last line of the code that says
‘unexpected $end, expecting kEND’
this happens on every program i try to run
any ideas?
i am using fedora core 5 if that makes a difference
Often times this error is a result of missing an end statement somewhere
within your program. For example, you may have forgotten to end a
method, if statement or class. Can you post some code so we can take a
look?
You have mismatched block openings / endings. Check your def / end
do / end if / end, etc…
I’m just learning ruby myself, but typically when this
happens, I’m missing an end to a function, or some other
block:
#!/usr/bin/ruby
def joe
print “JOE MAMMA\n”
Produces:
[alibby@localhost ~]$ ./t.rb
./t.rb:6: syntax error, unexpected $end, expecting kEND
Perhaps this is it? If you’re willing to post the code (if
it’s not too long) we may be able to provide more guidance.
Andy
as far as i can tell nothing is missing
here is the code (its only three methods):
def promptToQuit
print "\nYou did not enter any numbers \n are you sure you wish to
quit? (y/n): "
answer = getc
answer = answer.downcase
while (answer != ‘y’ && answer != ‘n’)
print "Are you sure you wish to quit? (y/n): "
answer = getc
answer = answer.downcase
end
return answer
end
def getNumbers (num)
$high = num
$low = num
while (num != 0)
print "Please enter a number (0 to quit): "
num = geti
if ( (num > $high) && (num != 0) ) then
$high = num
else if ( (num < $low) && (num != 0) ) then
$low = num
end
end
end
answer = ‘n’
print "\nPlease enter a number (0 to quit): "
num = geti
if (num == 0) then
answer = promptToQuit
end
if (answer == ‘y’) then
print “\nGoodbye”
else
num = 1
getNumbers(num)
end
puts "Highest Number: " + $high.to_s
puts "Lowest Number: " + $low.to_s
puts “\n”
huh that was the problem but my text book had everything as
elseif
i added the space because it wouldn’t accept that
but it seems the author still mistyped the entire thing
o well
Kd Kushelduv wrote:
if ( (num > $high) && (num != 0) ) then
$high = num
else if ( (num < $low) && (num != 0) ) then
$low = num
end
This should be
if ( (num > $high) && (num != 0) ) then
$high = num
elsif ( (num < $low) && (num != 0) ) then
$low = num
end
Your else is starting a new block context (not the Ruby term I’m sure;
that’s kinda what I’d call it in Perl
and Ruby thinks what you’re
doing is:
if …
else
if …
end
end
But you’ve only got a single end so it’s confuzzled.
Kd Kushelduv wrote:
huh that was the problem but my text book had everything as
elseif
i added the space because it wouldn’t accept that
but it seems the author still mistyped the entire thing
Umm, just curious, who is the author, what is the book or article?
On 2006.10.11 03:23, Kd Kushelduv wrote:
answer = getc
while (num != 0)
print "Please enter a number (0 to quit): "
num = geti
if ( (num > $high) && (num != 0) ) then
$high = num
else if ( (num < $low) && (num != 0) ) then
$low = num
Right here. You want elsif, otherwise you are missing
the closing end for the nested if. Also, drop the thens,
they are not needed 
answer = promptToQuit
puts "Lowest Number: " + $low.to_s
puts “\n”
The error message is a bit ambiguous–$end means EOF, which
Ruby encountered while it was still waiting for a literal
end (the token is called kEND).