Compiling -- gcc -- Lex & Yacc

Rick Stevens ricks at nerd.com
Tue Jul 22 17:56:49 UTC 2008


William Case wrote:
> Hi;
> 
> I am working my way through the compiling process.  I want to be precise
> about my question so that responders do not waste time on answering the
> wrong question.
> 
> Where can I find/see which preprocessor, lexical analysiser, parser etc.
> the gcc compliler is using in Fedora?  What order are they being used in
> and any other instructions or agruments that are being passed to them by
> gcc (the compiler) besides the original/modified code?
> 
> I have gone through 'info gcc' but that does not seem to lead to the
> answer of my specific question.  I have read as much as I could
> regarding 'make'.  That didn't seem to have an answer either.  Maybe I
> missed it!
> 
> I know the answers, from reading patches and pieces (cpp, lex and Yacc
> -- I think).  But seeing is believing.  Somewhere (which I can't seem to
> find) there must be a declaration, or official text or manual that says
> for sure that I have a certain version of gcc that definetly calls on
> these specific programs.
> 
> All the reading I have which explains adequately what each program does
> only has a generalized definition (eg. first a preprocessor is used,
> then some lexical analysiser, followed by a parser etc.).  I also have
> manuals on cpp and lex and yacc.  But the two, gcc and the component
> program are never connected.   I want to look somewhere, preferably on
> my system that says your system uses such and such.  
> 
> It would be nice if there was a nice little script that said:
> 
> make /myprogram | cpp | lex | yacc | ld | asm > myexcprogam.
> 
> I know it doesn't exist, so how would I fill in the information myself?
> 
> Where can/do I look?

cpp, was CREATED using lex and yacc (or more correctly, their Gnu
replacements flex and bison), but it doesn't use them itself.  cpp
expects C or C++ source, with appropriate escapes to put in in-line
assembly code.  It does eventually call the assembler ("as") and the
linker ("ld").  Your makefile may also send the code to the librarian
("ar") to create libraries.
----------------------------------------------------------------------
- Rick Stevens, Systems Engineer                       rps2 at nerd.com -
- Hosting Consulting, Inc.                                           -
-                                                                    -
-      A day for firm decisions!!!   Well, then again, maybe not!    -
----------------------------------------------------------------------




More information about the users mailing list