IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 40236


Ignore:
Timestamp:
Dec 3, 2017, 5:56:57 AM (9 years ago)
Author:
eugene
Message:

unary operators should always be pushed straight on the op-stack

Location:
branches/eam_branches/ohana.20170822/src/opihi/lib.shell
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20170822/src/opihi/lib.shell/convert_to_RPN.c

    r39558 r40236  
    120120        Nop_stack ++;
    121121        break;
    122       case ST_UNARY:
    123122      case ST_BINARY:
    124123      case ST_TRINARY:
     
    139138        Nop_stack ++;
    140139        break;
     140      case ST_UNARY:
    141141      case ST_LEFT: 
    142142        /* push operator on OP stack */
  • branches/eam_branches/ohana.20170822/src/opihi/lib.shell/dvomath.c

    r40168 r40236  
    2929  unsigned int Ncstack;
    3030  cstack = isolate_elements (argc, argv, &Ncstack);
     31
     32  // for (i = 0; i < Ncstack; i++) {
     33  //   fprintf (stderr, "%d : %s\n", i, cstack[i]);
     34  // }
    3135
    3236  /* generate RPN stack from cstack arguments */
  • branches/eam_branches/ohana.20170822/src/opihi/lib.shell/evaluate_stack.c

    r40212 r40236  
    110110
    111111        if (i < 3) {  /* need two variables to operate on */
    112           snprintf (line, 512, "syntax error: trinary operator without three operands: %s\n", stack[i].name);
     112          snprintf (line, 512, "syntax error: trinary operator without three operands: %s\n(Note that the : in a trinary operation must be protected by spaces", stack[i].name);
    113113          push_error (line);
    114114          clear_stack (&tmp_stack);
     
    124124
    125125        /* there are no valid unary string operators */
    126         snprintf (line, 512, "invalid operands for trinary operator %s (mismatch types?)", stack[i].name);
     126        snprintf (line, 512, "invalid operands for trinary operator %s (mismatch types?)\n(Note that the : in a trinary operation must be protected by spaces)", stack[i].name);
    127127        push_error (line);
    128128        clear_stack (&tmp_stack);
     
    131131      got_three_op:
    132132        if (!status) {
    133           snprintf (line, 512, "syntax error: invalid operand for trinary operation: %s or %s or %s\n", stack[i-1].name, stack[i-2].name, stack[i-3].name);
     133          snprintf (line, 512, "syntax error: invalid operand for trinary operation: %s or %s or %s\n(Note that the : in a trinary operation must be protected by spaces)", stack[i-1].name, stack[i-2].name, stack[i-3].name);
    134134          push_error (line);
    135135          clear_stack (&tmp_stack);
Note: See TracChangeset for help on using the changeset viewer.