On Jul 23, 2009, at 11:46 AM, tiefeng wu wrote:

Hi all!
I need to parse c/cpp source files, one requirement is to extract
included header file name.
here is my solution:
p = re.compile(r'#\s*include\s+(?:(<)|("))(.*)(?(1)>)(?(2)")')
m = re.search(p, '#include <header.h>')
m.group(3)
'header.h'
m = re.search(p, '#include "header.h"')
m.group(3)
'header.h'
m = re.search(p, '#include <header.h"')
print(m)
None
m = re.search(p, '#include "header.h>')
print(m)
None

Pretty ugly! And I know for a valid c/cpp source file, it will be not
necessary to check and match '<' with '>' and " with ",
but I'm wondering to see more elegant way to do such thing.

Hi tiefeng,
Regexes are always a little ugly IMO. =)

A side note -- does your parser need to handle /* comments like this one*/? If so, then regular expressions are not going be sufficient.

Good luck
Philip

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to