1. Parser and question

Hawke,

        Just wanted to say THANKS for EUServer, I was working
on a Parser for an Text Adventure Game, I had worked a long time
on this parser, but the code was getting KLUDGED.  I took the
approach used with EUserver's cmdlist.ew & basiccmd.ew, loved the
approach here.  I was able to Re-Write the Parser to some extent
in very little time, and adding additional commands is a breeze.
So, that was a long way to go to say Thanks and keep up the good
work.

A question for ALL,

        This is probably a question that has been asked millions of
times, and if so Sorry for asking again, and it may cause my DUH side
to show a little, but the problem I seem to be having is figuring out
HOW to convert a sequence to an integer?  Example.

global integer Score
        Score = 0
    .
    .
    .
procedure AddToScore(sequence Amt)
        Score = Score + Amt
end procedure
    .
    .
    .

Person inputs a command > addtoscore 10

program uses Ch = gets(0)

program tries to do AddToScore(Ch[2])

what happens here is obvious Euphoria returns an type check failure
of course, this makes since since you are trying to add something
non numeric to a numeric variable so to speak.

+ + +  Rev. Ferlin Scarborough  -  Centreville, Alabama  -  USA

new topic     » topic index » view message » categorize

2. Re: Parser and question

Ferlin,

1. When you get a sequence using gets(0), you'll have to parse of the last
character of this sequence:
    Ch = Ch[1..length(Ch)-1]
2. To convert a sequence to an atom, use value().
This returns a sequence, if the first element is GET_SUCCESS, (a 0), then the
second element is a valid atom.


 | Gratis e-mail en meer: http://www.dolfijn.nl/
 | Een product van Ilse: http://www.ilse.nl/

new topic     » goto parent     » topic index » view message » categorize

3. Re: Parser and question

Ferlin wrote:
> Hawke,
>         Just wanted to say THANKS for EUServer, I was working
> on a Parser for an Text Adventure Game, I had worked a long time
> on this parser, but the code was getting KLUDGED.  I took the
> approach used with EUserver's cmdlist.ew & basiccmd.ew, loved the
> approach here.  I was able to Re-Write the Parser to some extent
> in very little time, and adding additional commands is a breeze.
> So, that was a long way to go to say Thanks and keep up the good
> work.
*blush*
thankee!

> A question for ALL,
>         This is probably a question that has been asked millions of
> times, and if so Sorry for asking again, and it may cause my DUH side
> to show a little, but the problem I seem to be having is figuring out
> HOW to convert a sequence to an integer?  Example.
> global integer Score
>        Score = 0
> procedure AddToScore(sequence Amt)
>         Score = Score + Amt
> end procedure
> Person inputs a command > addtoscore 10
> program uses Ch = gets(0)
> program tries to do AddToScore(Ch[2])
the parameter you are passing TO Addtoscore...
namely, the ch[2], is NOT a valid number to attempt
math upon.
you would need to use value() first, upon ch[2],
and THEN pass that to Addtoscore.
Before you can do THAT tho, the procedure definition
would need to be altered to:
procedure Addtoscore(atom Amt) --or integer...
the 'complete' solution might be:

glob seq score
score = 0

proc add2score(atom amt)
   score = score + amt
end proc

obj junk

junk = gets(0)
--error check junk[1] here...
junk = junk[2]

junk = value(junk)
--AGAIN:error check junk[1] here...
junk = junk[2]

add2score(junk)

all done :)

the technical explanation of what you were doing, and
why that was a wee fubar'd :), is:
you were attempting to add a 'string' to an integer...
that is fine, IF, you assign the result to a 'string'.
"mary" + 10 is allowable, IF you assign that result
to a seq or obj.

hope this helps, and solves your dilemma...

Note to all:
I'm in the middle of moving, to another state, and as such,
I won't be able to reply to emails sent for a while.
Normally, I would just let my email buffer on my email server
fill up until I could reply to them all.
The problem is that my server for email only allows
a 2 meg holding space.
So, please, delay emails/questions/bug reports/etc...
that you might send to me, until I "return".
TIA!
    _/  _/   _/_/_/   _/  _/  _/  _/   _/_/_/ _/
   _/  _/   _/  _/   _/  _/  _/ _/    _/
  _/_/_/   _/_/_/   _/  _/  _/_/     _/_/
 _/  _/   _/  _/   _/_/_/  _/ _/    _/
_/  _/   _/  _/   _/_/_/  _/   _/  _/_/_/
({<=----------------------------------------=>})
({<=- http://members.xoom.com/Hawkes_Hovel> -=})
({<=----------------------------------------=>})

new topic     » goto parent     » topic index » view message » categorize

4. Re: Parser and question

Thanks to ALL who contributed with the answer for the addtoscore
question, after leaving work and going home, grabbing the Euphoria
2.0 manual and glancing through it, I had solved the problem in less
than 5 minutes.  Strange how different things look at 2:00am as
compared to 7:00pm.  Don't know how I overlooked value() the first
time the other morning.

        I would also like to thank everyone that has contributed
to the Euphoria Community, things have progressed quite nicely
since Ver 1.04 ? I think that was my first one.

Later all,

+ + +  Rev. Ferlin Scarborough  -  Centreville, Alabama  -  USA

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu