杨小帅 <[EMAIL PROTECTED]> wrote:

> Hi,
>      When I use make yacc, I found something wrong. And, The new
> y.tplt_tab.cc is different with the old. I want to get reason. I do
> not change template.yy. My OS is Debian.

Sometimes using different version/different OS of yacc generates
different result.
We use the default yacc that comes with FreeBSD-7.0, which is based
on the original Berkeley Yacc.
The yacc one from Ubuntu for example is a very different
implementation: it is based on GNU Bison.

I just did a quick experiment on Ubuntu by using "gmake yacc" in the
rtrmgr directory to regenerate the rtrmgr Yacc-generated files, and
I observed the following:

* The result generated files are very different from the
  original files (because of GNU Bison).
* The result generated files don't compile with the rest of the
  rtrmgr files:

g++ -DHAVE_CONFIG_H -I. -I.. -I/home/pavlin/xorp/rtrmgr -I/home/pavlin/xorp    
-g -Werror -W -Wall -Wwrite-strings -Wcast-qual -Wpointer-arith -Wcast-align 
-Woverloaded-virtual -ftemplate-depth-25 -pipe -MT lex.boot.o -MD -MP -MF 
.deps/lex.boot.Tpo -c -o lex.boot.o /home/pavlin/xorp/rtrmgr/lex.boot.cc
boot.ll:20: error: conflicting declaration 'char* bootlval'
/home/pavlin/xorp/rtrmgr/y.boot_tab.h:104: error: 'bootlval' has a previous 
declaration as 'YYSTYPE bootlval'
boot.ll: In function 'int bootlex()':
boot.ll:264: error: invalid conversion from 'char*' to 'YYSTYPE'
boot.ll:269: error: invalid conversion from 'char*' to 'YYSTYPE'
boot.ll:274: error: invalid conversion from 'char*' to 'YYSTYPE'
boot.ll:279: error: invalid conversion from 'char*' to 'YYSTYPE'

...


Just curious, why do you need to run "gmake yacc"? Are you modifying
some of the original rtrmgr/*.ll or rtrmgr/*.yy files or are you
trying to make some fundamental changes to the rtrmgr parsing
mechanism?
If no, then you don't need to run "gmake yacc".
If yes, the Yacc-generation is known to work only on FreeBSD, and I
don't have a good answer how to do it on other OS-es. You can try to
get it working with GNU Bison, but I don't know how difficult this
would be.

Pavlin

>      Looking forward your answer!
>      Here is error information:
> [EMAIL PROTECTED]:~/xorp-cli/xorp-demo/rtrmgr$ make yacc
> ( cd .;                                               \
>       yacc -d -p tplt -o y.tplt_tab.c template.yy;            \
>       mv y.tplt_tab.c y.tplt_tab.cc;                          \
>       bash ../utils/rcsid2ident.sh y.tplt_tab.cc;     \
>       yacc -d -p boot -o y.boot_tab.c boot.yy;                \
>       mv y.boot_tab.c y.boot_tab.cc;                          \
>       bash ../utils/rcsid2ident.sh y.boot_tab.cc;     \
>       yacc -d -p opcmd -o y.opcmd_tab.c op_commands.yy;       \
>       mv y.opcmd_tab.c y.opcmd_tab.cc;                        \
>       bash ../utils/rcsid2ident.sh y.opcmd_tab.cc;    \
>       touch .yacc_generated_files )
> 61685
>       static char const yyunexpected[] = "syntax error, unexpected %s";
> ?
> 56089
>       static char const yyunexpected[] = "syntax error, unexpected %s";
> ?
> 56419
>       static char const yyunexpected[] = "syntax error, unexpected %s";
> ?
> 
> B.R.
> Xiaoshuai Yang
> 
> _______________________________________________
> Xorp-hackers mailing list
> [email protected]
> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers

_______________________________________________
Xorp-hackers mailing list
[email protected]
http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers

Reply via email to