l i n u x - u s e r s - g r o u p - o f - d a v i s
L U G O D
 
Next Meeting:
September 2: Social gathering
Next Installfest:
TBD
Latest News:
Aug. 18: Discounts to "Velocity" in NY; come to tonight's "Photography" talk
Page last updated:
2003 Jul 04 09:41

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] Reg lex and flex compatibilty
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] Reg lex and flex compatibilty



On Fri, 4 Jul 2003, Muthumeena M wrote:

> 
> Hi ,
> Right now am porting an application which has few lex and yacc files from
> solaris to linux.
> 
> The application has no problem in solaris whereas when i compile the same
> in linux, it is getting stuck at the compilation of the file generated by
> lexer i.e the lex.yy.c file
> 
> The lex output (lex.yy.c) are also quite different in solaris and linux.
> 
> The compilation errors are
> 1. In function `unsigned char input()':
> `yysptr' undeclared (first use this  function). it goes on to many other
> undeclared errors.
> 
> For this there were no variables declared in the file.l (lex input file).
> Solaris had delared on its own, whereas in case of linux error was coming
> in yy.c.
> So i have manually declared in case of linux.
> I do not know the reason why this incompatibility is there.

One of the few incompatibilities betwee lex and flex is that flex does not
allow redefinition of "input" and "output" the same way lex does.  There
is an equivalent way to redefine input using YY_INPUT.

http://www.esiee.fr/~coupriem/Flex/flex_5.html
http://www.esiee.fr/~coupriem/Flex/flex_2.html

> 2. After the manual declaration of variables now it is giving
> "previous declaration of int yywrap() with C++ linkage
> conflicts with new declaration with C Linkage"
> and many like this.
> 
> In makefile the options given are
> @lex -t -l $< | sed s/"^yylex"/"int yylex"/g | sed s/yy/${*F}/g > $*.yy.c
> 
> and gcc of the .yy.c file.

Well, when a programmer goes and mucks with the output from an
implementation of a translator, they are risking incompatibility with a
different implementation.  As the saying goes, "if it hurts, don't do
that."

Really... get rid of the sed calls and avoid making changes to the
interface definitions.  The code you are using is booby-trapped, and you
are just going to have to clean it out.

[...]

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil@dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...2k
---------------------------------------------------------------------------

_______________________________________________
vox-tech mailing list
vox-tech@lists.lugod.org
http://lists.lugod.org/mailman/listinfo/vox-tech



LinkedIn
LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
facebook
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
Sunset Systems
Who graciously hosts our website & mailing lists!