This is a parser (in fact it’s just a lexer) for includes in C file, header or definition files (*.c
). This parser will ignore all precompiler conditions like #ifdef
etc. It will only parse all includes and lists them. You may use the output to visualize the dependencies using the GraphViz tool.
Parses the specified file for all #include
directives and prints them to stdout. All names become lowercase and all dots ‘.’ become ’_’.
To build the program, please follow the instructions below.
First you have to use the lexer to build a C file:
Then compile the generated file:
Last but not least, let’s make a test:
$ echo "digraph test {" > graph.dot
$ ./parse some_source_file.c >> graph.dot
$ echo "}" >> graph.dot
$ dot -Tps graph.dot -o graph.ps
$ gv graph.ps
And you may have a look at the graph and wonder what header files your program includes.
To put this a little further you may want to have a graph that shows all your source files (definition files as well as header files):
$ echo "digraph test {" > graph.dot
$ for i in *.c ;do ./parse $i >> graph.dot ;done
$ for i in *.h ;do ./parse $i >> graph.dot ;done
$ echo "}" >> graph.dot
$ dot -Tps graph.dot -o graph.ps
$ gv graph.ps
Enjoy!