Related articles |
---|
Lacing C/C++ code elan@tasha.cheme.cornell.edu (1993-11-14) |
Re: Lacing C/C++ code ltd@netcom.com (1993-11-15) |
Re: Lacing C/C++ code prashanth@cdotd.ernet.in (Prashant V Hedaoo) (1993-11-16) |
Re: Lacing C/C++ code mike@vlsivie.tuwien.ac.at (1993-11-29) |
Newsgroups: | comp.compilers |
From: | Prashant V Hedaoo <prashanth@cdotd.ernet.in> |
Keywords: | C, C++, parse, comment |
Organization: | Compilers Central |
References: | 93-11-092 |
Date: | Tue, 16 Nov 1993 17:51:17 GMT |
Elan Feingold writes :
> All I need to recognize are functions. It would be nice to
> recognize C++ type functions too. I was thinking of hacking up the C/C++
> grammar available for ftp at places, but does anyone know of a better
> (read easier) way to do it?
About a year ago, I developed same type of tool for slightly different
requirement only using Lexical Analyzer. Given C source code, the tool
extracts called function names from a function definition.
All you have to do is to write a regular expression identifying function
name followed by '(' , optional argument list, ')' and '{'. After this you
have to skip data definition & search for first executable statement to
instrument the code with FUNC_START( "xxx"); OR just create a block
enveloping the function body and put FUNC_START("xxx"); as a first
statement. Two more regular expressions are required for identification
of function termination, i.e. '{' & '}' with corresponding action to
update counter and at the last '}' it should insert one more '}' to close
the block and FUNC_END("xxx");
The first regular expression to identify function start will also match
with "if", "switch", "while". So, the first string should be compared with
these keywords.
This approach works well for C source, not sure with C++.
Contact for further details.
--
Prashant V Hedaoo E-mail: prashanth@cdotd.ernet.in
Centre for Development Of Telematics (C-DOT), Voice : 91-11-677525 Ext. 327
9th Floor, Akbar Bhawan, Fax : 91-11-6885558
Chanakyapuri, New Delhi - 110021
[I'd be concerned that this approach could be confused by declartions of
pointers to functions. -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.