Markus Neteler wrote: > >> /afs/cluster/myuser/private/software/grass-7.0.svn/lib/db/sqlp> make > >> sqlp.yy.c:1: error: expected identifier or '(' before numeric constant > > > > You'll need to post your sqlp.yy.c file; it's generated by yacc/bison,
Oops; *.yy.c is generated by lex/flex, not bison. > > so there's no guarantee that yours is the same as anyone else's. > > OK - file attached: gcc_sqlp.yy.c.gz Line 1: 0: (Warning) Unknown option s Grass.make hard-codes: # lexical analyzer and default options LFLAGS = -s GNU flex has a -s switch: -s, --nodefault suppress default rule to ECHO unmatched text but that's not specified by POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/lex.html We should remove that flag. But we should also fix the lex files: sqlp.l:209: warning, -s option given but default rule can be matched mapcalc.l:216: warning, -s option given but default rule can be matched This indicates that there are certain character sequences which don't match any token. Without -s, flex will add a rule to echo unmatched characters to stdout, which is undesirable. r55504 removes the -s from LFLAGS and adds error rules to sqlp.l and mapcalc.l. > > It's possible that AIX' yacc generates code which requires xlc. > > After distclean I have reconfigured and recompiled with xlc but this leads to: > "sqlp.yy.c", line 1.1: 1506-046 (S) Syntax error. Yep; the generated file won't work with any C compiler. This is partly the fault of AIX' lex for writing the error message to stdout (which is where the generated C source code is written when -t is used). > However, the resulting files are identical: > diff -u gcc_sqlp.yy.c aix_sqlp.yy.c > -> no difference lex doesn't know which C compiler you will be using. -- Glynn Clements <gl...@gclements.plus.com> _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev