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