Case-logic

Bert Freudenberg bert at impara.de
Wed Oct 27 09:28:59 UTC 2004


Am 27.10.2004 um 07:15 schrieb Blake:

> On Tue, 26 Oct 2004 19:26:02 -0700 (PDT), Chris Muller 
> <afu.nkyobject at yahoo.com> wrote:
>
>> I don't see any harm in case-logic for checking hot keys..
>
> I've been meaning to ask the group this, since I remember picking up 
> the anti-case message from Meyer (coincidentally enough, in his Eiffel 
> books) but I'm trying to figure out how I'd program a state machine 
> without it. Well, I can see how to do it, but I don't think I "get it" 
> since it doesn't seem easier or clearer to do it that way.
>
> Can anyone recommend some state-machine type stuff in the codebase for 
> me to look at? Or thoughts on how you'd code something like the code 
> below?

Parser >> scanToken maybe?

> (Some background: I'm writing a book for kids on programming. I 
> learned to program in Basic and despite the fact that it gave me a 
> strong taste for finding better ways of doing things, I really don't 
> want to inflict that on another generation.<s> That means, in part, 
> rooting out my own bad habits so as not to pass them on.)
>
> ===Blake===
>
> WHILE (i<=len(expr))
> 	IF c>="A" and c<="Z" THEN 'we're at a function call
> 	...
> 	ELSE IF C="[" THEN 'we're at a user defined variable
> 	...
> 	ELSE IF C="_" THEN 'we're at a system value
> 	...
> 	ELSE IF at("operator", expect)>0 and at(C, "+-*/<=>")>0 THEN 'operator
> 	...
> 	ELSE IF at(c+d, ".A.O.N") > 0 THEN 'logical operator
> 	...
> 	ELSE IF at(C, numeric)>0 or ((C="-" .or. D="+") and at(D, numeric)>0) 
> THEN 'we're at a literal constant
> 	...
> 	ELSE IF C = "," THEN
> 	...
> 	ELSE IF C="(" THEN 'we're grouping terms or in a procedure
> 	...
> 	ELSE IF C=")" THEN 'we're ending a group of terms
> 	...
> 	ELSE IF C=" " THEN 'ignore spaces
> 	...
> END WHILE
>
- Bert -




More information about the Squeak-dev mailing list