Changeset ae35b67 in git
- Timestamp:
- Jul 24, 1998, 6:41:14 PM (25 years ago)
- Branches:
- (u'spielwiese', 'df6a8e29030ff93c6ad53051028727af7d339fa0')
- Children:
- 28500c27ec6b0c23d7724b5e89704758cd004106
- Parents:
- a8575b6ce6d56b755805426e91fb43845420eed8
- Location:
- Singular
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/Makefile.in
ra8575b rae35b67 137 137 .y.cc: 138 138 @if test "x${BISON}" = x; then \ 139 echo Error: no lex given, could not rebuilt scanner.cc;\139 echo Error: no bison given, could not rebuilt grammar.cc;\ 140 140 exit 1; \ 141 141 fi -
Singular/grammar.y
ra8575b rae35b67 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: grammar.y,v 1.4 1 1998-07-23 09:06:59Singular Exp $ */4 /* $Id: grammar.y,v 1.42 1998-07-24 16:41:13 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: SINGULAR shell grammatik … … 273 273 /*%nonassoc '=' PLUSEQUAL DOTDOT*/ 274 274 %nonassoc '=' DOTDOT COLONCOLON 275 %left ',' 275 276 %left '|' '&' 276 277 %left EQUAL_EQUAL NOTEQUAL … … 282 283 %left '[' ']' 283 284 %left '(' ')' 284 %left PLUSPLUS 285 %left MINUSMINUS 285 %left PLUSPLUS MINUSMINUS 286 286 287 287 %% … … 343 343 currentVoice->ifsw=0; 344 344 if (inerror) 345 346 345 { 346 if ((inerror!=3) && ($1.i<UMINUS) && ($1.i>' ')) 347 347 { 348 348 // 1: yyerror called … … 351 351 inerror=3; 352 352 Print(" error at token `%s`\n",iiTwoOps($1.i)); 353 } 353 } 354 354 } 355 355 if (!errorreported) WerrorS("...parse error"); … … 360 360 feBufferTypes t=currentVoice->Typ(); 361 361 //PrintS("leaving yyparse\n"); 362 362 exitBuffer(BT_proc); 363 363 if (t==BT_example) 364 364 YYACCEPT; … … 535 535 $$ = $1; 536 536 } 537 | '(' expr ',' exprlist ')'538 {539 leftv v = &$2;540 while (v->next!=NULL)541 {542 v=v->next;543 }544 v->next = (leftv)Alloc(sizeof(sleftv));545 memcpy(v->next,&($4),sizeof(sleftv));546 $$ = $2;547 }548 537 ; 549 538 … … 554 543 } 555 544 | elemexpr { $$ = $1; } 556 | '(' expr ')' { $$ = $2; }545 | '(' exprlist ')' { $$ = $2; } 557 546 | expr '[' expr ',' expr ']' 558 547 { … … 1332 1321 $1.Print(&sLastPrinted); 1333 1322 $1.CleanUp(); 1334 1323 if (errorreported) YYERROR; 1335 1324 } 1336 1325 ; -
Singular/iparith.cc
ra8575b rae35b67 523 523 return FALSE; 524 524 } 525 static BOOLEAN jjOP_REST(leftv res, leftv u, leftv v) 526 { 527 if (u->Next()!=NULL) 528 { 529 u=u->next; 530 res->next = (leftv)Alloc(sizeof(sleftv)); 531 return iiExprArith2(res->next,u,iiOp,v); 532 } 533 else if (v->Next()!=NULL) 534 { 535 v=v->next; 536 res->next = (leftv)Alloc(sizeof(sleftv)); 537 return iiExprArith2(res->next,u,iiOp,v); 538 } 539 return FALSE; 540 } 525 541 static BOOLEAN jjPOWER_I(leftv res, leftv u, leftv v) 526 542 { … … 544 560 Warn("int overflow(^), result may be wrong"); 545 561 res->data = (char *)rc; 562 if (u!=NULL) return jjOP_REST(res,u,v); 546 563 return FALSE; 547 564 } … … 565 582 nPower(n,e,(number*)&res->data); 566 583 nDelete(&n); 584 if (u!=NULL) return jjOP_REST(res,u,v); 567 585 return FALSE; 568 586 } … … 570 588 { 571 589 res->data = (char *)pPower((poly)u->CopyD(POLY_CMD),(int)v->Data()); 590 if (u!=NULL) return jjOP_REST(res,u,v); 572 591 return FALSE; 573 592 } … … 575 594 { 576 595 res->data = (char *)idPower((ideal)(u->Data()),(int)(v->Data())); 596 if (u!=NULL) return jjOP_REST(res,u,v); 577 597 return FALSE; 578 598 } … … 585 605 if (v==NULL) return FALSE; /* u==NULL, v==NULL */ 586 606 if (iiOp=='-') /* u==NULL, v<>NULL, iiOp=='-'*/ 607 { 608 if (res->next==NULL) 609 res->next = (leftv)Alloc(sizeof(sleftv)); 587 610 return iiExprArith1(res->next,v,'-'); 611 } 588 612 loop /* u==NULL, v<>NULL, iiOp=='+' */ 589 613 { … … 733 757 Warn("int overflow(*), result may be wrong"); 734 758 res->data = (char *)c; 735 if (u->Next()!=NULL) 736 { 737 u=u->next; 738 res->next = (leftv)Alloc(sizeof(sleftv)); 739 return iiExprArith2(res->next,u,iiOp,v); 740 } 741 else if (v->Next()!=NULL) 742 { 743 v=v->next; 744 res->next = (leftv)Alloc(sizeof(sleftv)); 745 return iiExprArith2(res->next,u,iiOp,v); 746 } 759 if ((u->Next()!=NULL) || (v->Next()!=NULL)) 760 return jjOP_REST(res,u,v); 747 761 return FALSE; 748 762 } 749 763 static BOOLEAN jjTIMES_N(leftv res, leftv u, leftv v) 750 764 { 751 number a; 752 number b; 753 754 if (v->next==NULL) 755 { 756 a=(number)u->Data(); 757 if (u->next==NULL) 758 { 759 res->data = (char *)(nMult( a, (number)v->Data())); 760 return FALSE; 761 } 762 // u->next exists: copy v 763 b=(number)v->Data(); 764 res->data = (char *)(nMult( a, b)); 765 res->next = (leftv)Alloc(sizeof(sleftv)); 766 res=res->next; 767 return iiExprArith2(res,u->next,iiOp,v); 768 } 769 // v->next exists: copy u 770 a=nCopy((number)u->Data()); 771 b=(number)v->CopyD(); 772 res->data = (char *)(nMult( a, b)); 773 res->next = (leftv)Alloc(sizeof(sleftv)); 774 return iiExprArith2(res->next,u,iiOp,v->next); 765 res->data = (char *)(nMult( (number)u->Data(), (number)v->Data())); 766 if ((v->next!=NULL) || (u->next!=NULL)) 767 return jjOP_REST(res,u,v); 768 return FALSE; 775 769 } 776 770 static BOOLEAN jjTIMES_P(leftv res, leftv u, leftv v) … … 791 785 b=pCopy((poly)v->Data()); 792 786 res->data = (char *)(pMult( a, b)); 793 res->next = (leftv)Alloc(sizeof(sleftv)); 794 res=res->next; 795 return iiExprArith2(res,u->next,iiOp,v); 787 return jjOP_REST(res,u,v); 796 788 } 797 789 // v->next exists: copy u … … 799 791 b=(poly)v->CopyD(); 800 792 res->data = (char *)(pMult( a, b)); 801 res->next = (leftv)Alloc(sizeof(sleftv)); 802 return iiExprArith2(res->next,u,iiOp,v->next); 793 return jjOP_REST(res,u,v); 803 794 } 804 795 static BOOLEAN jjTIMES_ID(leftv res, leftv u, leftv v) 805 796 { 806 797 res->data = (char *)idMult((ideal)u->Data(),(ideal)v->Data()); 798 if ((v->next!=NULL) || (u->next!=NULL)) 799 return jjOP_REST(res,u,v); 807 800 return FALSE; 808 801 } … … 815 808 return TRUE; 816 809 } 810 if ((v->next!=NULL) || (u->next!=NULL)) 811 return jjOP_REST(res,u,v); 817 812 return FALSE; 818 813 } … … 859 854 return TRUE; 860 855 } 856 if ((v->next!=NULL) || (u->next!=NULL)) 857 return jjOP_REST(res,u,v); 861 858 return FALSE; 862 859 }
Note: See TracChangeset
for help on using the changeset viewer.