Linking two yacc (y.tab.o) files

Tedd Hadley hadley at ics.uci.edu
Sat Feb 24 07:11:48 AEST 1990


jxf at phobos.cis.ksu.edu (Jerry Frain) writes:

>I seem to recall a thread in this newsgroup about this problem quite some
>time ago, but I did not pay any attention to the solution at the time.

>Anybody got any ideas as to how I can solve this dilemma?

   Here's a very practical (as opposed to pedantically correct) solution.

   Include the following ".h" file in your yacc file.
   Replace all <unique_name_here> with whatever name you wish.
   Call to parser becomes <unique_name_here>_yyparse()

--- yacc_unique.h ---

#define yyact		<unique_name_here>_yyact
#define yyback		<unique_name_here>_yyback
#define yybgin		<unique_name_here>_yybgin
#define yychar		<unique_name_here>_yychar
#define yychk		<unique_name_here>_yychk
#define yycrank		<unique_name_here>_yycrank
#define yydef		<unique_name_here>_yydef
#define yyerrflag	<unique_name_here>_yyerrflag
#define yyestate	<unique_name_here>_yyestate
#define yyexca		<unique_name_here>_yyexca
#define yyextra		<unique_name_here>_yyextra
#define yyfnd		<unique_name_here>_yyfnd
#define yyin		<unique_name_here>_yyin
#define yyinput		<unique_name_here>_yyinput
#define yyleng		<unique_name_here>_yyleng
#define yylex		<unique_name_here>_yylex
#define yylineno	<unique_name_here>_yylineno
#define yylook		<unique_name_here>_yylook
#define yylsp		<unique_name_here>_yylsp
#define yylstate	<unique_name_here>_yylstate
#define yylval		<unique_name_here>_yylval
#define yymatch		<unique_name_here>_yymatch
#define yymorfg		<unique_name_here>_yymorfg
#define yynerrs		<unique_name_here>_yynerrs
#define yyolsp		<unique_name_here>_yyolsp
#define yyout		<unique_name_here>_yyout
#define yyoutput	<unique_name_here>_yyoutput
#define yypact		<unique_name_here>_yypact
#define yyparse		<unique_name_here>_yyparse
#define yypgo		<unique_name_here>_yypgo
#define yyprevious	<unique_name_here>_yyprevious
#define yyr1		<unique_name_here>_yyr1
#define yyr2		<unique_name_here>_yyr2
#define yysbuf		<unique_name_here>_yysbuf
#define yysptr		<unique_name_here>_yysptr
#define yysvec		<unique_name_here>_yysvec
#define yytchar		<unique_name_here>_yytchar
#define yytext		<unique_name_here>_yytext
#define yytop		<unique_name_here>_yytop
#define yyunput		<unique_name_here>_yyunput
#define yyv		<unique_name_here>_yyv
#define yyval		<unique_name_here>_yyval
#define yyvstop		<unique_name_here>_yyvstop

--- yacc_unique.h ---

And best of all, no `sed' scripts.

++
   Tedd Hadley (hadley at ics.uci.edu)



More information about the Comp.unix.wizards mailing list