Parsing C Preprocessor files
Pierre-Frédéric Caillaud
peufeu at free.fr
Wed Jun 23 16:59:34 EDT 2004
Nice and simple algorithm, but you should use an iterator to iterate over
your lines, or else shifting your big array of lines with pop() is gonna
be very slow.
Instead of :
> line = lines.pop(0)
Try :
lines = iter( some line array )
Or just pass the file handle ; python will split the lines for you.
You can replace your "while lines" with a "for" on this iterator. You'll
need to avoid pushing data in the array (think about it)...
also "#if" in line is prettier.
Another way to do it is without recursion : have an array which is your
stack, advance one level when you get a #if, go back one level at #endif ;
no more recursion.
Have fun !
More information about the Python-list
mailing list