[self-interest] Re: Grammar questions

Dru Nelson dnelson at redwoodsoft.com
Tue Dec 29 09:54:04 UTC 1998

[Using VW Smalltalk
> Perhaps I should tell you a little bit more about my program.  I used
> VisualWorks smalltalk to implement the parser.  A "SelfScanner" class
> implements the scanner (lexer) while a call called "SelfParser" does all
> the dirty work.  The scanner provides token/value pairs which are used by
> the parser.  With the exception of number tokens, all values are strings
> (or symbols, a special kind of constant String in Smalltalk).  The parser
> maintains a token-push-back-stack which is needed for looking ahead in the
> token stream.

Is this from T Gen or something else?  Sounds neat.

> I think the scanner is finished.  The parser still needs work.  I can parse
> most SELF expression already, but there's no real code generator yet.  And
> of course, I don't know how to deal with expressions and parenthesis!

Yeah, I finished my lexer and it is time for the parser and code gen.
I don't really know how I will deal with some of those issues as well.
I'll tell you what, though, Smalltalk is a lot better to debug than
C. I sometimes get those nice gdb stack traces with the '??' as the name
for each function. :-)

> I actually wrote that parser just out of curiosity.  I wanted to study the
> original morphic code and wanted to get rid of all that superfluous
> information the original SELF source files are bloaded with.  I thought
> perhaps I could write a small program to extract method definitions from
> these files.  I incrementally extended this to a whole parser :-)

Same here. I did it for fun, and to work on stuff that I haven't worked
on before.
I have never run self though :-)

> Now, there's the intriguing idea to add a VM simulator to the system.  I
> already create "SelfObject" instances for each method.  Each contains a
> number of slots (one of SelfMutableDataSlot, SelfImmutableDataSlot,
> SelfAssignerSlot, SelfArgumentSlot and SelfMethodSlot) and a list of
> SelfExpression objects, which eventually will hold a parse tree of message
> send (and resend) operations.

Emulating Self with Smalltalk. I'm sure the Self guys will get a kick out
of that. Then you could run their Smalltalk emulation system under it.

> >As for the longest whitespace, personally that will
> >work, but I think that any of the '=-' or ('=' operator) should
> >be illegal. 
> Well, I just try to implement the grammar. I don't reason about it :-) But
> (allow me one thought) if you make '=' an illegal operator, you need
> another operator for testing equality.  Because '==' is already used to
> test identity, you cannot use this or you need to change the language even
> more.  I'm not sure whether this would be a good idea.

Sorry, I was kind of thinking in BNF  '=' operator* . ie. any operator
or series of operators following equal (except ==) of course... what 
you say next, of course makes this moot...

> >C did this for the same reasons.  '=- 1' vs '= -1' is
> >hard to read, the standard '-=' is much easier to read.
> As for many other things (perhaps too many) in SELF, this should be
> considered as a convention but not a rule expressed in the grammar.
> Otherwise I'd agree withh you.


> >Thanks for posting your questions (and answers). The info has
> >saved me _a_lot_ of time.
> You're welcome.

I just want to mention, though, that I really like the Smalltalk/Self 
syntax. That is one of the main reasons I like this language.

eGroup home: http://www.eGroups.com/list/self-interest
Free Web-based e-mail groups by eGroups.com

More information about the Self-interest mailing list