[Cuis] OMeta

Germán Arduino garduino at gmail.com
Sat May 23 10:10:40 CDT 2015


I need to find the time to understand all these interesting topics, but I
fear to become as the guy of the video :D

2015-05-20 15:18 GMT-03:00 Phil (list) <pbpublist at gmail.com>:

> 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
>
>
>
> _______________________________________________
> Cuis mailing list
> Cuis at jvuletich.org
> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jvuletich.org/pipermail/cuis_jvuletich.org/attachments/20150523/37c32d60/attachment-0004.html>


More information about the Cuis mailing list