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) |
Re: How to determine if a given line is a C/C++ comment gah@ugcs.caltech.edu (glen herrmannsfeldt) (2006-08-14) |
[2 later articles] |
From: | Tom Copeland <tom@infoether.com> |
Newsgroups: | comp.compilers |
Date: | 10 Aug 2006 15:43:38 -0400 |
Organization: | Compilers Central |
References: | 06-08-042 |
Keywords: | C, lex |
Posted-Date: | 10 Aug 2006 15:43:38 EDT |
On Wed, 2006-08-09 at 00:03 -0400, chtaylo3@gmail.com wrote:
> 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]
If you're working in Java there's a fairly complete JavaCC grammar for
C++ here:
http://pmd.cvs.sourceforge.net/pmd/pmd/etc/grammar/cpp.jj?revision=1.15&view=markup
It uses lexical states to skip the comments, but you can modify those
to save the comments, record line numbers, or do whatever else you
need...
Yours,
tom
Return to the
comp.compilers page.
Search the
comp.compilers archives again.