--- ray/src/common/calexpr.c 1990/07/19 12:56:50 1.6 +++ ray/src/common/calexpr.c 1991/04/17 10:54:58 1.8 @@ -381,21 +381,20 @@ char *err; { register int i; - eputs(linbuf); - if (linbuf[strlen(linbuf)-1] != '\n') - eputs("\n"); - for (i = 0; i < linepos-1; i++) - eputs(linbuf[i] == '\t' ? "\t" : " "); - eputs("^ "); if (infile != NULL || lineno != 0) { - eputs("\n"); if (infile != NULL) eputs(infile); if (lineno != 0) { eputs(infile != NULL ? ", line " : "line "); eputs(ltoa((long)lineno)); } - eputs(": "); + eputs(": syntax error:\n"); } + eputs(linbuf); + if (linbuf[strlen(linbuf)-1] != '\n') + eputs("\n"); + for (i = 0; i < linepos-1; i++) + eputs(linbuf[i] == '\t' ? "\t" : " "); + eputs("^ "); eputs(err); eputs("\n"); quit(1); @@ -529,23 +528,23 @@ getE2() /* E2 -> E2 MULOP E3 */ EPNODE * -getE3() /* E3 -> E3 ^ E4 */ +getE3() /* E3 -> E4 ^ E3 */ /* E4 */ { register EPNODE *ep1, *ep2; ep1 = getE4(); - while (nextc == '^') { + if (nextc == '^') { ep2 = newnode(); ep2->type = nextc; scan(); addekid(ep2, ep1); - addekid(ep2, getE4()); + addekid(ep2, getE3()); #ifdef RCONST if (ep1->type == NUM && ep1->sibling->type == NUM) ep2 = rconst(ep2); #endif - ep1 = ep2; + return(ep2); } return(ep1); }