[ragel-users] Re: Ruby and Java code generation

Adrian Thurston thurs... at cs.queensu.ca
Sat Sep 29 18:59:46 UTC 2007

I just checked-in a java driver that uses a switch statement in place of
gotos. Indeed it works well. Java code generation is now current.


Erich Ocean wrote:
> Adrian,
> Duff's device can be used with Java, so you might be able to use that  
> technique to jump back into the middle of the processing loop.
> See http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html for  
> an example.
> Best, Erich
> On Sep 28, 2007, at 3:23 PM, Adrian Thurston wrote:
>> Hi,
>> What is now needed in Ruby and Java code is a jump back into the
>> processing loop just like that found at rlgen-cd/tabcodegen.cpp:1041.
>> -Adrian
>> Adrian Thurston wrote:
>>> Before loop breaks and variables were used in Ruby code call/cc  
>>> features
>>> were used. This was found to be very slow (about 10 times slower than
>>> the current). Do you think throw/catch would be any better than  
>>> call/cc?
>>> Later today I'm going to commit my work on the C version. I'll  
>>> highlight
>>> the part that is troublesome and maybe someone that knows Java and  
>>> Ruby
>>> well can suggest something.
>>> Adrian
>>> Ryan King wrote:
>>>> On Sep 28, 2007, at 12:02 PM, Adrian Thurston wrote:
>>>>> Hi,
>>>>> I'm having some trouble with Ruby and Java code generation as I
>>>>> implement 6.0 features. The main problem with targeting both of  
>>>>> these
>>>>> languages is the lack of goto statement. This is problematic  
>>>>> even for
>>>>> the table-driven machine. There are a number of places in the  
>>>>> driver
>>>>> where a jump in or jump out of the processing loop is required.  
>>>>> So far
>>>>> I've gotten away with using named loops in Java and control flow
>>>>> variables in Ruby, however with the latest changes things are  
>>>>> getting
>>>>> really ugly. I don't have a solution yet. I'm not sure what to do
>>>>> right
>>>>> now, so for the time being I will continue ahead with the 6.0  
>>>>> features
>>>>> and stall work on Ruby and Java code generation.
>>>> You can emulate GOTO-ish behavior in ruby with throw and catch:
>>>> catch(:foo) do
>>>>   ...
>>>>   throw(:foo)
>>>>   ...
>>>> end
>>>> There are limits to how the code can be structured in these cases  
>>>> (in
>>>> blocks).
>>>> -ryan
> --~--~---------~--~----~------------~-------~--~----~
> You received this message because you are subscribed to the Google Groups "ragel-users" group.
> To post to this group, send email to ragel-users at googlegroups.com
> To unsubscribe from this group, send email to ragel-users-unsubscribe at googlegroups.com
> For more options, visit this group at http://groups.google.com/group/ragel-users?hl=en
> -~----------~----~----~----~------~----~------~--~---

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
URL: <http://www.colm.net/pipermail/ragel-users/attachments/20070929/82372347/attachment-0001.sig>

More information about the ragel-users mailing list