[comp.sys.att] yacc & lex - cupla questions

woodward@uicbert.eecs.uic.edu (07/27/90)

i have been trying to parse a straightforward stream of bytes using the
c-preprocessors lex & yacc.  being a new user of these utilities, i have
a couple of problems for which i'd like to solicit your suggestions:
 
---------------------------------------------------------------------
1.)  how does one redefine the i/o in a yacc/lex piece of code?  i.e.
the code which is generated defaults to stdin and stdout for input and
output, respectively.  i'd like to redefine these defaults w/o having 
to hack on the intermediate c-code, since this is a live production 
project; i'd like to be able to update and modify the program simply by 
saying "make". 

---------------------------------------------------------------------
2.)  how can one get the automagically-defined #defines, which can
normally be created from yacc with the -d flag, to come out when you
use a makefile?  i.e. suppose i have lex.l and yacc.y lex and yacc
source files, respectively, and i have object files defined in my makefile 
called lex.o and yacc.o such that "make" follows default rules to create 
these from the aforementioned source files.   

---------------------------------------------------------------------
3.)  if i have a yacc construct such as:
 
line3	: 	A B C
		{  yacc action sequence }


which indicates that the construct line3 is composed of the 3 tokens
A B and C, in that order ...
 
how can i now assign the values of A, B, and C into local vars of my
choice?  the problem lies in the fact that each of A B and C represent
three calls to lex, and if i pass back a pointer to yytext[] from lex, 
i only retain the value of the last token in the sequence, in this case C, 
when i get to the action sequence in my yacc code.  what if i want to 
be able to select the EXACT ascii tokens for each of A B and C above in 
my yacc code.  how do i do that?


any comments or suggestions would be most heartily appreciated.

jp woodward
univ of ill at chicago 
312-996-0939