version 1.90, 2005/11/02 05:39:23 |
version 1.91, 2005/11/02 06:32:44 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.89 2005/11/02 05:18:41 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.90 2005/11/02 05:39:23 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
Line 1314 FNODE strip_paren(FNODE); |
|
Line 1314 FNODE strip_paren(FNODE); |
|
|
|
void fnodetotex_tb(FNODE f,TB tb) |
void fnodetotex_tb(FNODE f,TB tb) |
{ |
{ |
NODE n,t,t0; |
NODE n,t,t0,args; |
char vname[BUFSIZ],prefix[BUFSIZ]; |
char vname[BUFSIZ],prefix[BUFSIZ]; |
char *opname,*vname_conv,*prefix_conv; |
char *opname,*vname_conv,*prefix_conv; |
Obj obj; |
Obj obj; |
int i,len,allzero,elen,elen2,si; |
int i,len,allzero,elen,elen2,si; |
C cplx; |
C cplx; |
char *r; |
char *r; |
FNODE fi,f2; |
FNODE fi,f2,f1; |
|
|
write_tb(" ",tb); |
write_tb(" ",tb); |
if ( !f ) { |
if ( !f ) { |
Line 1402 void fnodetotex_tb(FNODE f,TB tb) |
|
Line 1402 void fnodetotex_tb(FNODE f,TB tb) |
|
break; |
break; |
} |
} |
break; |
break; |
|
case I_NARYOP: |
|
args = (NODE)FA1(f); |
|
write_tb("(",tb); |
|
switch ( OPNAME(f) ) { |
|
case '+': |
|
fnodetotex_tb((FNODE)BDY(args),tb); |
|
for ( args = NEXT(args); args; args = NEXT(args) ) { |
|
write_tb("+",tb); |
|
fnodetotex_tb((FNODE)BDY(args),tb); |
|
} |
|
break; |
|
case '*': |
|
f1 = (FNODE)BDY(args); |
|
if ( f1->id == I_FORMULA && MUNIQ(FA0(f1)) ) |
|
write_tb("-",tb); |
|
else |
|
fnodetotex_tb(f1,tb); |
|
write_tb(" ",tb); |
|
for ( args = NEXT(args); args; args = NEXT(args) ) { |
|
/* XXX special care for DP */ |
|
f2 = (FNODE)BDY(args); |
|
if ( f2->id == I_EV ) { |
|
n = (NODE)FA0(f2); |
|
for ( i = 0; n; n = NEXT(n), i++ ) { |
|
fi = (FNODE)BDY(n); |
|
if ( fi->id != I_FORMULA || FA0(fi) ) |
|
break; |
|
} |
|
if ( n ) |
|
fnodetotex_tb(f2,tb); |
|
} else |
|
fnodetotex_tb(f2,tb); |
|
} |
|
break; |
|
default: |
|
error("invalid nary op"); |
|
break; |
|
} |
|
write_tb(")",tb); |
|
break; |
|
|
case I_COP: |
case I_COP: |
switch( (cid)FA0(f) ) { |
switch( (cid)FA0(f) ) { |
Line 1794 int top_is_minus(FNODE f) |
|
Line 1834 int top_is_minus(FNODE f) |
|
return opname[0]=='-'; |
return opname[0]=='-'; |
} |
} |
} |
} |
|
case I_NARYOP: |
|
return top_is_minus((FNODE)BDY((NODE)FA1(f))); |
|
|
default: |
default: |
return 0; |
return 0; |
} |
} |