How to determine if a given line is a C/C++ comment

chtaylo3@gmail.com
9 Aug 2006 00:03:49 -0400

          From comp.compilers

Related articles
How to determine if a given line is a C/C++ comment chtaylo3@gmail.com (2006-08-09)
Re: How to determine if a given line is a C/C++ comment tom@infoether.com (Tom Copeland) (2006-08-10)
Re: How to determine if a given line is a C/C++ comment haberg@math.su.se (2006-08-10)
Re: How to determine if a given line is a C/C++ comment nicola.musatti@gmail.com (Nicola Musatti) (2006-08-10)
Re: How to determine if a given line is a C/C++ comment johnmillaway@yahoo.com (John Millaway) (2006-08-10)
Re: How to determine if a given line is a C/C++ comment mailbox@dmitry-kazakov.de (Dmitry A. Kazakov) (2006-08-12)
Re: How to determine if a given line is a C/C++ comment listas@nicolasb.com.ar (Nico) (2006-08-12)
[3 later articles]
| List of all articles for this month |

From: chtaylo3@gmail.com
Newsgroups: comp.compilers
Date: 9 Aug 2006 00:03:49 -0400
Organization: Compilers Central
Keywords: C++, tools, lex, question, comment
Posted-Date: 09 Aug 2006 00:03:49 EDT

Hello all,


First, I must admit that I know squat about compilers. I've asked
around about how to determine if a given line of source contains
nothing but comments and I've been referred to this newsgroup severla
times.


I'm trying to determine if a given line is a C/C++ style comment.


My motivation for this is determing 4 metrics:
how many lines of code have been added/changed
how many lines of code have been removed
how many lines of pure comments have been added/changed
how many lines of pure comments have been removed.


where a given line is a line of code if it is not a line of pure
comments.


obviously it is pretty straight forward to determine if a line uses the
// style comment syntax, what's more difficult is determining if a
given line is a pure comment inside a /* */ block.


Any assistance would be appreciated.


Respectfully,
Christopher
[You need about 2/3 of a C++ lexer. You more or less need to
scan for /* and then the matching */, except that you also need
to look for quoted strings since "/*" is a string, not a comment.
It's not that hard, with a lexer generator like flex you should
be able to do it in a few hours. But people must have done this
a hundred times before so I would first poke around on the net and
see if there is code you can just steal. -John]


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.