It depends on the language being parsed. If it's easy to know when push and pop (because of the appearance of certain tokens) then you probably won't run into problems and it's just a matter of personal preference. If the language is more complicated than that (say like a programming language) then you are certainly going to get a headache trying to parse in ragel and you'll have to switch.

On 11-04-07 03:50 PM, Nate wrote:
I've now done a couple projects with recursion using fcall. It isn't too
bad. Is there something I lose by doing this, beyond the ability to
express the recursion in Ragel? What would really make switch tools for
a project?

-Nate


On Thu, Apr 7, 2011 at 1:22 PM, Adrian Thurston <[email protected]
<mailto:[email protected]>> wrote:

    To expand on this a bit ... it is entirely up to the user to manage
    the stack allocation. Ragel's support for recursive structures
    (fcall/fret) is an extension to the basic model, which is pure state
    machine (not a PDA). If you find you have a lot recursion in what
    you need to parse, you should consider that ragel might not be the
    right tool for the job.

    Regards


    On 03/29/2011 09:59 PM, Nate wrote:

        Yes, see the int[] stack in the link. :) Also note the code
        under "prepush".

        -Nate


        On Tue, Mar 29, 2011 at 9:38 PM, Gordeev Vladimir
        <[email protected]
        <mailto:[email protected]>
        <mailto:[email protected]
        <mailto:[email protected]>>> wrote:

            Hm, this looks like solution. I will try it. Thanks.

            Related question: Does Ragel have some inner stack to handle
        nested
            fcall/fret?


            On 30.03.2011 00:59, Nate wrote:

                You can use fcall to jump to a machine, then fret to
            resume where
                you were. It's a bit tricky, but once you understand it
            you can
                parse recursively. See the startTable action here
            (though this is
                a pretty hairy parser):
            
http://code.google.com/p/table-layout/source/browse/trunk/build/TableLayoutParser.rl

                -Nate


                On Tue, Mar 29, 2011 at 2:55 PM, Jonathan Castello
            <[email protected] <mailto:[email protected]>
            <mailto:[email protected] <mailto:[email protected]>>> wrote:

                    On Tue, Mar 29, 2011 at 1:15 PM, Gordeev Vladimir
            <[email protected]
            <mailto:[email protected]>
            <mailto:[email protected]
            <mailto:[email protected]>>> wrote:
             > So I got following error:
             >
             >     test.rl:7:32: graph lookup of "list" failed

                    The reason you get that error is because a rule can
            only reference
                    definitions that came before it. "list" doesn't
            exist until the
                    definition is finished, so it can't reference
            itself. (That would
                    create a recursive structure anyways, which Ragel isn't
                    equipped to
                    handle natively.)

                    ~Jonathan

                    _______________________________________________
                    ragel-users mailing list
            [email protected] <mailto:[email protected]>
            <mailto:[email protected]
            <mailto:[email protected]>>

            http://www.complang.org/mailman/listinfo/ragel-users



                _______________________________________________
                ragel-users mailing list
            [email protected] <mailto:[email protected]>
            <mailto:[email protected]
            <mailto:[email protected]>>

            http://www.complang.org/mailman/listinfo/ragel-users



            _______________________________________________
            ragel-users mailing list
        [email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>

        http://www.complang.org/mailman/listinfo/ragel-users




        _______________________________________________
        ragel-users mailing list
        [email protected] <mailto:[email protected]>
        http://www.complang.org/mailman/listinfo/ragel-users
        --===============092103


    --
    Adrian D. Thurston
    http://www.complang.org/thurston/


    _______________________________________________
    ragel-users mailing list
    [email protected] <mailto:[email protected]>
    http://www.complang.org/mailman/listinfo/ragel-users




_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users

--
Dr. Adrian D. Thurston
http://www.complang.org/thurston/

_______________________________________________
ragel-users mailing list
[email protected]
http://www.complang.org/mailman/listinfo/ragel-users

Reply via email to