multi-language GUI / shells in Smalltalk
stephane ducasse
stephane.ducasse at free.fr
Fri May 4 18:53:29 UTC 2007
Hi Yo
did you publish it on squeaksource or place like that :)
Stef
On 4 mai 07, at 02:21, Yoshiki Ohshima wrote:
>> And very recently Alex and Yoshiki ported the Meta parser from Coke
>> to Squeak, this is a couple of changesets in the OLPC image.
>>
>> Might be worth checking out.
>
> Wow, thank you for mentioning it, Bert!
>
> The good thing about META in Squeak is its size (10 classes
> including the bootstrap parser), meta circular definition (it is
> written in itself), ability to write actions anywhere in production
> definitions (actually, there is no real distinction between actions
> and lhs syntactical symbols), integration with Squeak browser (you
> simply write production rules in a browser), no-real need to write
> tokenizer and parser separately, and linear time parsing with
> unlimited look ahead and back-tracking.
>
> There is very little pre-defined things. For example, you would
> write a tokenizer for parsing a number (an equivalent of
>
> "<number> : [0-9]+ (\. [0-9]*) ? ;"
>
> and "{'1' value asNumber}" in SmaCC) would be written in Meta like
> a method:
>
> --------------------
> number ::=
> `0`:r (<char>:c ?`c isDigit` `r * 10 + c digitValue`:r)+ `r`
> --------------------
>
> Things enclosed by back-ticks (`) are like things in {} in SmaCC, a
> colon (:) followed by a name is like naming in SmaCC ('expression'),
> but this is a real assignment. (So, the calculated value in the long
> action is re-assigned to the same variable.) Question and back-tick
> (?``) is a predicate that tells whether the parsing should continue or
> not. A name enclosed by <> is a method call (or production call).
> And, the last item in the production is the result value. This is a
> tokenizer example, but the parser production is written in the same
> way.
>
> We haven't gotten around to port the left-recursion case over to the
> Squeak version. Without the left-recursion, it can be painful
> sometime. We plan to port that to Meta in Squeak sometime soon.
>
> Ah, yes, the bottom line is that I think it is interesting and worth
> to take a look at.
>
> -- Yoshiki
>
>
More information about the Squeak-dev
mailing list
|