2014-10-23 16:38 GMT+02:00 Eliot Miranda <[email protected]>:

> Hi Thierry,
>
> On Oct 23, 2014, at 12:36 AM, Thierry Goubier <[email protected]>
> wrote:
>
> > Le 23/10/2014 09:18, [email protected] a écrit :
> >>
> >> On Thu, Oct 23, 2014 at 8:42 AM, Thierry Goubier
> >> <[email protected] <mailto:[email protected]>> wrote:
> >>
> >>
> >> How long is long?
> >
> > 900 nodes in the AST seems to be the limit for the type of method SmaCC
> generates (cascading ifTrue:ifFalse:).
> >
> > Other limits exist (number of literals, for example). Unless you
> generate automatically some code, it's hard to hit them. Once you generate
> automatically, it's easy to hit them :P
>
> Spur and Sista together lift these limits.  Spur provides 64k literals per
> method and Sista uses a bytecode set with effectively unlimited jumps.  We
> could possibly deploy the Sista bytecode set before the Sista optimizer.
> Would you be interested in being a guinea pig?
>

Well, why not. I'm a bit behind stuff I have to do (should have done :()
and I certainly have some code to test: probably all the SmaCC generated
scanners have a scanToken method which is jump limited.

If you want to have a look, SmaCC (development version) in Pharo has a
SmaCCSmalltalkCodeGenerator>>maxMethodLength which control the process. A
good test would be to use the PythonParser, recompile it (LALR) and run the
python tests.

Thierry


>
> Eliot (phone)
>
> >
> >> Now, the point is to see all that as a stream, cut methods at
> >> appropriate places and compile code under a WAComponent subclass.
> >
> > Yes. But then you need some kind of syntax to mark the start of a
> method. Change sets and dolphin packages use !! markers.
> >
> >> I don't know about SmaCC but I think I can do something with PetitParser
> >> and Smalltalk compile:
> >
> > It's all done with RBParser. Since you're parsing Smalltalk, it's easier
> to do it that way (and probably a bit faster). And you're also playing with
> the AST, so you want to fall back to a well defined API for that AST (and
> visitors, and the like).
> >
> > Extending RBParser with a scheme to parse multi-methods files could be
> convenient.
> >
> > Unless you fall back on a variant of a changeset.
> >
> > Thierry
> >
>
>

Reply via email to