115 |
|
ep2 = ep1->v.kid->sibling; |
116 |
|
if (ep2->type == NUM) { |
117 |
|
ep2->v.num = val; |
118 |
– |
ep2->sibling->v.tick = -1; |
118 |
|
return; |
119 |
|
} |
120 |
|
} |
129 |
|
ep2->type = NUM; |
130 |
|
ep2->v.num = val; |
131 |
|
addekid(ep1, ep2); |
133 |
– |
ep2 = newnode(); |
134 |
– |
ep2->type = TICK; |
135 |
– |
ep2->v.tick = -1; |
136 |
– |
addekid(ep1, ep2); |
137 |
– |
ep2 = newnode(); |
138 |
– |
ep2->type = NUM; |
139 |
– |
addekid(ep1, ep2); |
132 |
|
dclear(vname); |
133 |
|
dpush(ep1); |
134 |
|
} |
493 |
|
quit(1); |
494 |
|
} |
495 |
|
ep1 = d->v.kid->sibling; /* get expression */ |
496 |
+ |
if (ep1->type == NUM) |
497 |
+ |
return(ep1->v.num); /* return if number */ |
498 |
|
ep2 = ep1->sibling; /* check time */ |
499 |
|
if (ep2->v.tick < 0 || ep2->v.tick < eclock) { |
500 |
|
ep2->v.tick = eclock; |
501 |
|
ep2 = ep2->sibling; |
502 |
< |
ep2->v.num = evalue(ep1); /* compute new value */ |
502 |
> |
ep2->v.num = evalue(ep1); /* needs new value */ |
503 |
|
} else |
504 |
< |
ep2 = ep2->sibling; /* reuse old value */ |
504 |
> |
ep2 = ep2->sibling; /* else reuse old value */ |
505 |
|
|
506 |
|
return(ep2->v.num); |
507 |
|
} |