[Cuis] OMeta

Phil (list) pbpublist at gmail.com
Wed May 20 13:18:07 CDT 2015


On Wed, 2015-05-20 at 13:50 -0400, Phil (list) wrote:
> On Wed, 2015-05-20 at 13:05 +0000, H. Hirzel wrote:
> > This is a file-out of which component from which source?
> > 
> 
> A Smalltalk/Squeak scanner/parser from OMeta 2 (it ships as part of the
> OMeta which is why it's a tricky package to load: parts of it are
> written in itself).  This is what 'pure' OMeta code looks like... in
> most real world usage there would be squeak code on the right-hand side
> action ('=> [some squeak code]') when a rule of interest is matched that
> might, for example, populate an AST.
> 
> Fascinating, I'd never looked at how this code was used before until you
> asked: In OMeta it's used to determine whether it's looking at Squeak
> code since it will get handed both OMeta and Squeak code.  The
> fascinating part is that it's written twice: once in Smalltalk as part
> of the stage 1 in bootstrap and then again in stage 2 in OMeta once the
> foundation exists.  So Casey can partially get his wish now: look at how
> stage 1 does it vs stage 2 to see the difference between pure Smalltalk
> and OMeta.  For example the arrayConstr method in Squeak:
> 
> arrayConstr
> 	^ self ometaOr: {[true
> 			ifTrue: [self apply: #token withArgs: {'{'}.
> 				self apply: #expr.
> 				self
> 					many: [true
> 							ifTrue: [self apply: #token withArgs: {'.'}.
> 								self apply: #expr]].
> 				self ometaOr: {[self apply: #token withArgs: {'.'}]. [self apply:
> #empty]}.
> 				self apply: #token withArgs: {'}'}]]. [true
> 			ifTrue: [self apply: #token withArgs: {'{'}.
> 				self apply: #token withArgs: {'}'}]]}
> 
> and here's the OMeta version:
> 
> arrayConstr =
> 
> 	"{" expr ("." expr)* ("." | empty) "}"
> |	"{" "}"
> 
> > 
> > 
> > On 5/20/15, Phil (list) <pbpublist at gmail.com> wrote:
> > > On Sat, 2015-05-16 at 14:18 -0700, Casey Ransberger wrote:
> > >> It would be very cool to have a Cuis compiler written in OMeta to compare
> > >> and contrast with the one we have inherited from Smalltalk. The
> > >> performance of the two would be interesting to compare, as would be the
> > >> number of source lines of code, as well as that foggy "legibility" thing.
> > >>
> > >
> > > We've been so busy on the other thread(s), I forgot to show you this
> > > (just a starting point, but still):
> > >
> 
> <snip>

Having gone through this exercise in the various threads has gotten me
to the point where I believe OMeta 2 functionality can best be
summarized thusly: https://youtu.be/-1TTN-Ev2KI?t=55s






More information about the Cuis mailing list