Return to BSD News archive
Received: by minnie.vk1xwt.ampr.org with NNTP id AA7223 ; Mon, 18 Jan 93 10:50:16 EST Path: sserve!manuel.anu.edu.au!munnari.oz.au!uunet!olivea!sgigate!sgiblab!pacbell.com!tandem!UB.com!quack!dfox From: dfox@quack.sac.ca.us (David Fox) Newsgroups: comp.unix.bsd Subject: [386bsd] still trying to compile rayshade Keywords: lex parse error rayshade Message-ID: <fYaZRtt@quack.sac.ca.us> Date: 19 Jan 93 21:06:09 GMT Organization: The Duck Pond public unix: +1 408 249 9630, log in as 'guest'. Lines: 271 Hi *, I'm still trying to compile rayshade. I've made some progress, but right now gcc (doesn't matter which version, I tried both gcc-1.39 and gcc-2.3.3) is complaining of a parse error / syntax error before the '1' in return 1; in the yywrap() function on line 183 of the lex.l file in the libshade directory of rayshade-4.0. I've looked hard at the output of lex (lex has no problems generating the file) as well as the lex.l file and I'm stumped. I don't know lex very well, but I can't find any problems that would make gcc barf. Can someone help? Here's the lex file in question: ------------------------------------------------------------------------ /* lex.l */ /* Copyright (C) 1989, 1991, Craig E. Kolb */ /* All rights reserved. */ /* */ /* This software may be freely copied, modified, and redistributed, */ /* provided that this copyright notice is preserved on all copies. */ /* */ /* You may not distribute this software, in whole or in part, as part of */ /* any commercial product without the express consent of the authors. */ /* */ /* There is no warranty or other guarantee of fitness of this software */ /* for any purpose. It is provided solely "as is". */ /* */ /* $Id: lex.l,v 4.0.1.3 92/01/14 18:28:38 cek Exp Locker: cek $ */ %{ #include "config.h" #include "rayshade.h" #ifdef I_STRING #include <string.h> #else #include <strings.h> #endif #include "liblight/light.h" #include "libsurf/atmosphere.h" #include "libsurf/surface.h" #include "libtext/texture.h" #include "libobj/geom.h" #include "symtab.h" #include "y.tab.h" extern char *strsave(); %} alpha [a-zA-Z] special [\.\_-] digit [0-9] exp [Ee][-+]?{digit}+ string {alpha}({alpha}|{digit}|{special})* filename "/"?"/"?(("."|".."|{string})"/")*{string} %p 11000 %e 1500 %n 700 %% [ \t\n] ; ^# handlehash(); "/*" skipcomments(); ambient return tAMBIENT; aperture return tAPERTURE; applysurf return tAPPLYSURF; area return tAREA; atmosphere return tATMOSPHERE; background return tBACKGROUND; bezier return tBEZIER; blob return tBLOB; cblob return tCBLOB; blotch return tBLOTCH; body return tBODY; box return tBOX; bump return tBUMP; checker return tCHECKER; cloud return tCLOUD; coeffs return tCOEFFS; cone return tCONE; component return tCOMPONENT; contrast return tCONTRAST; crop return tCROP; cursurf return tCURSURF; cutoff return tCUTOFF; cylinder return tCYL; cylindrical return tCYLINDRICAL; define return tDEFINE; diffuse return tDIFFUSE; difference return tDIFFERENCE; directional return tDIRECTIONAL; disc return tDISC; end return tEND; extended return tEXTENDED; extinct return tEXTINCT; eyep return tEYEP; eyesep return tEYESEP; false return tFALSE; filter return tFILTER; fbm return tFBM; fbmbump return tFBMBUMP; focaldist return tFOCALDIST; fog return tFOG; fogdeck return tFOGDECK; fov return tFOV; fracland return tFRACLAND; framelength return tFRAMELENGTH; frames return tFRAMES; gauss return tGAUSS; gloss return tGLOSS; gradient return tGRADIENT; grid return tGRID; heightfield return tHEIGHTFIELD; image return tIMAGE; index return tINDEX; intersect return tINTERSECT; jitter return tJITTER; light return tLIGHT; linear return tLINEAR; list return tLIST; log return tLOG; lookp return tLOOKP; map return tMAP; marble return tMARBLE; maxdepth return tMAXDEPTH; mount return tMOUNT; mist return tMIST; name return tNAME; nojitter return tNOJITTER; noshadow return tNOSHADOW; object return tOBJECT; outfile return tOUTFILE; plane return tPLANE; planar return tPLANAR; point return tPOINT; poly return tPOLY; polygon return tPOLY; print return tPRINT; projector return tPROJECTOR; quiet return tQUIET; radial return tRADIAL; random return tRANDOM; range return tRANGE; reflect return tREFLECT; reflective return tREFLECT; report return tREPORT; resolution return tSCREEN; /* A synonym for screen */ revlog return tREVLOG; rotate return tROTATE; rotspline return tROTSPLINE; /* Rotated cubic spline */ sample return tSAMPLE; scale return tSCALE; screen return tSCREEN; shadowtransp return tSHADOWTRANSP; shutter return tSHUTTER; sky return tSKY; smooth return tSMOOTH; sphere return tSPHERE; spherical return tSPHERICAL; specular return tSPECULAR; specpow return tSPECPOW; spot return tSPOT; starttime return tSTARTTIME; stripe return tSTRIPE; surface return tSURFACE; sweptsph return tSWEPTSPH; textsurf return tTEXTSURF; texture return tTEXTURE; tile return tTILE; torus return tTORUS; transform return tTRANSFORM; translate return tTRANSLATE; translu return tTRANSLU; translucency return tTRANSLU; transp return tTRANSP; transparent return tTRANSP; triangle return tTRIANGLE; triangleuv return tTRIANGLEUV; true return tTRUE; union return tUNION; up return tUP; uv return tUV; verbose return tVERBOSE; window return tWINDOW; windy return tWINDY; wood return tWOOD; xbezier return tXBEZIER; ybezier return tYBEZIER; zbezier return tZBEZIER; xcoeffs return tXCOEFFS; ycoeffs return tYCOEFFS; zcoeffs return tZCOEFFS; {digit}+ | {digit}+"."{digit}*({exp})? | {digit}*"."{digit}+({exp})? | {digit}+{exp} {yylval.d = atof(yytext); return tFLOAT;} {string} {yylval.c = strsave(yytext); return tSTRING;} {filename} {yylval.c = strsave(yytext); return tFILENAME;} .. return yytext[0]; %% yywrap() { return 1; } /* * Skip over comments. */ skipcomments() { char c; while (1) { while (input() != '*') ; if ((c = input()) == '/') return; unput(c); } } /* * Deal with ccp-produced lines of the form: * # n "filename" * and * # n * Where filename is the name of the file being processed, and n is * the current line number in that file. */ handlehash() { char buf[BUFSIZ]; int i; extern int yylineno; extern char yyfilename[]; /* * Read the entire line into buf. */ for (i = 0; (buf[i] = input()) != '\n'; i++) ; unput(buf[i]); /* To make sure consecutive # lines work. */ buf[i] = (char)NULL; /* Replace newline with NULL. */ /* * Complain if the line was not of the form #n "filename" */ if ((i = sscanf(buf,"%d \"%[^\"]s\"", &yylineno, yyfilename)) == 0 && (i = sscanf(buf," line %d \"%[^\"]s\"",&yylineno,yyfilename))==0) { RLerror(RL_PANIC, "Unknown '#' control (%s).\n",buf); exit(1); } if (i == 1 && (index(buf,'"') != (char *)NULL)) { /* * Filename was given as "" */ (void)strcpy(yyfilename, "stdin"); } yylineno--; /* The newline we unput will increment yylineno */ } ------------------------------------------------------------------------ Thanks. -- ------------------------------------------------------------------------ in real life: david fox email: dfox@quack.sac.ca.us 5479 Castle Manor Drive, San Jose, CA 95129 "Thanks for letting me change some USA magnetic patterns on your HD" -me 408-253-7992 "You've just won an absolutely FREE trip to the Isles of Langerhans" -me ------------------------------------------------------------------------