Either you have to hack the string you've captured, like you did in this solution, or you have to use a scanner. This parsing problem requires delaying the action on the first '*' since you don't know if it is a containing '*', or the first character in the terminating string.

On 11-09-16 11:12 AM, Henrique Pantarotto wrote:
Well, I solved this problem by using something like this:

action mark { text_start = fpc; }
action show { printf("'%.*s'\n", fpc - text_start - 1, text_start); }

main := '/*' >mark any* :>> '*/' @show;

I don't know if this is the "correct way" to solve this, but it worked. ;-)


Thanks

On Thu, Sep 15, 2011 at 6:37 PM, Henrique Pantarotto <[email protected]
<mailto:[email protected]>> wrote:

    Hi, I've read the ragel manual a couple of times and searched the
    mailing list and I couldn't find the solution to this problem. I
    imagine the solution is there somewhere, but I couldn't find it
    since I couldn't search the mailing list archive properly.

    BTW, I don't really need to parse c comments, but I found this
    example to match perfectly what I am trying to accomplish. I'm
    really trying to parse and print data separated by a multi-character
    token.

    Page 29 of Ragel 6.7 manual shows an example on how to properly
    parse C language comments, but the action @comm also parses the *
    caracter at the ending "*/" as shown in the Graphviz image.

    I tried many ways to solve this problem, but I couldn't do it. Can
    someone help?

    action comm { printf("%c", fc); }
    p = "/* foo *** bar */";

    I tried:

    main := '/*' (any* -- '/*')@comm '*/';
    main := '/*' any*@comm :>> '*/';
    main := '/*' ( ( any @comm )* - ( any* '*/' any* ) ) '*/';

    But it always prints: "foo *** bar *" (note the * at the end) and I
    looking for a way for it to print just " foo *** bar ".

    Is there an easy way to fix this?


    Thanks in advance!




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

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

Reply via email to