in reply to Re^2: C parsing questions
in thread C parsing questions

If you change your data to:

typedef struct { float one; float two; int three; bool potato; } struct_name; typedef struct { float one; /* 1.1 */ float two; /* 2.2 */ int three; /* 3 */ bool potato; /* true */ } struct_name_with_comments;

You get the following (wrapped to compress):

$VAR1 = 'struct_name_with_comments'; $VAR2 = [ ['float', 'one', 0], ['/*', '1.1', undef], ['/*', '2.2', undef], ['/*', '3', undef], ['/*', 'true', undef] ]; $VAR3 = 'struct_name'; $VAR4 = [ ['float','one',0], ['float', 'two', 0], ['int', 'three', 3], ['bool', 'potato', 'false'] ];

There appear to be bugs :).

Given you are $line =~ s/\n/ /g; and $line =~ s/\s+/ /g; you could just $line =~ s/[\n\s]+/ /g;.

<>.The use of $/ is nice. Good to see someone remembering it's there.


DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^4: C parsing questions
by Nkuvu (Priest) on Nov 29, 2005 at 01:42 UTC
    There appear to be bugs :).
    Um, yeah, I mentioned as much. Last (non-code) paragraph from my previous post:
    ...the format of the struct definitions is always the same. And my subroutine takes this into account -- it fails horribly with comments in the code, but works just fine for the "live" code.

    I originally had only one of the s/// operations, then was playing around with another -- now that you point out the combination of the two it's very obvious. Doh.