ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/calexpr.c
(Generate patch)

Comparing ray/src/common/calexpr.c (file contents):
Revision 1.1 by greg, Thu Feb 2 10:34:27 1989 UTC vs.
Revision 1.5 by greg, Tue Jun 26 09:15:11 1990 UTC

# Line 39 | Line 39 | extern double  atof(), pow();
39   extern char  *fgets(), *savestr();
40   extern char  *emalloc(), *ecalloc();
41   extern EPNODE  *curfunc;
42 < extern double  efunc(), evariable(), enumber(), euminus(), echannel();
43 < extern double  eargument(), eadd(), esubtr(), emult(), edivi(), epow();
44 < extern double  ebotch();
42 > extern double  efunc(), evariable();
43 > static double  euminus(), echannel(), eargument(), enumber();
44 > static double  eadd(), esubtr(), emult(), edivi(), epow();
45 > static double  ebotch();
46   extern int  errno;
47  
48   int  nextc;                             /* lookahead character */
# Line 128 | Line 129 | register EPNODE  *epar;
129  
130      switch (epar->type) {
131  
132 + #if  defined(VARIABLE) || defined(FUNCTION)
133          case VAR:
134              varfree(epar->v.ln);
135              break;
136 + #endif
137              
138          case SYM:
139              freestr(epar->v.name);
# Line 347 | Line 350 | char  *err;
350      register int  i;
351  
352      eputs(linbuf);
353 <    if (linbuf[0] == '\0' || linbuf[strlen(linbuf)-1] != '\n')
353 >    if (linbuf[strlen(linbuf)-1] != '\n')
354          eputs("\n");
355      for (i = 0; i < linepos-1; i++)
356          eputs(linbuf[i] == '\t' ? "\t" : " ");
# Line 515 | Line 518 | EPNODE *
518   getE4()                         /* E4 -> ADDOP E5 */
519                                  /*       E5 */
520   {
521 <    register EPNODE  *ep1;
521 >    register EPNODE  *ep1, *ep2;
522  
523      if (nextc == '-') {
524          scan();
525 <        ep1 = newnode();
526 < #ifndef  RCONST
527 <        if (isdecimal(nextc)) {
528 <            ep1->type = NUM;
526 <            ep1->v.num = -getnum();
527 <            return(ep1);
525 >        ep2 = getE5();
526 >        if (ep2->type == NUM) {
527 >                ep2->v.num = -ep2->v.num;
528 >                return(ep2);
529          }
530 < #endif
530 >        ep1 = newnode();
531          ep1->type = UMINUS;
532 <        addekid(ep1, getE5());
532 < #ifdef  RCONST
533 <        if (ep1->v.kid->type == NUM)
534 <                ep1 = rconst(ep1);
535 < #endif
532 >        addekid(ep1, ep2);
533          return(ep1);
534      }
535      if (nextc == '+')

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines