- Timestamp:
- Jun 27, 2018, 3:20:35 PM (8 years ago)
- Location:
- branches/czw_branch/20170908/Ohana
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
src/opihi/lib.shell/evaluate_stack.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/20170908/Ohana
- Property svn:mergeinfo changed
-
branches/czw_branch/20170908/Ohana/src/opihi/lib.shell/evaluate_stack.c
r40207 r40477 89 89 } 90 90 if (tmp_stack.type == ST_SCALAR_INT) { 91 gprint (GP_ERR, "---> %d", tmp_stack.IntValue);91 gprint (GP_ERR, "---> "OPIHI_INT_FMT" ", tmp_stack.IntValue); 92 92 } 93 93 if (tmp_stack.type == ST_SCALAR_FLT) { … … 110 110 111 111 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); 113 113 push_error (line); 114 114 clear_stack (&tmp_stack); … … 124 124 125 125 /* 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); 127 127 push_error (line); 128 128 clear_stack (&tmp_stack); … … 131 131 got_three_op: 132 132 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); 134 134 push_error (line); 135 135 clear_stack (&tmp_stack); … … 186 186 got_two_op: 187 187 if (!status) { 188 snprintf (line, 512, "syntax error: invalid operand for binary operation: %s or %s\n", stack[i-1].name, stack[i-2].name); 188 // we are guaranteed to have stack[i-1] and stack[i-2] since i >= 2 (above) 189 char tmpvector[] = "Temporary Vector"; 190 char tmpmatrix[] = "Temporary Matrix"; 191 192 char *name1 = NULL; 193 if (stack[i-1].name) { 194 name1 = stack[i-1].name; 195 } else { 196 if (stack[i-1].type == ST_VECTOR_TMP) name1 = tmpvector; 197 if (stack[i-1].type == ST_MATRIX_TMP) name1 = tmpmatrix; 198 } 199 char *name2 = NULL; 200 if (stack[i-2].name) { 201 name2 = stack[i-2].name; 202 } else { 203 if (stack[i-2].type == ST_VECTOR_TMP) name2 = tmpvector; 204 if (stack[i-2].type == ST_MATRIX_TMP) name2 = tmpmatrix; 205 } 206 207 snprintf (line, 512, "syntax error: invalid operand for binary operation: %s or %s\n", name1, name2); 189 208 push_error (line); 209 190 210 int isTrinary = TRUE; 191 211 isTrinary = isTrinary && (i >= 2); … … 199 219 push_error (line); 200 220 } 221 201 222 clear_stack (&tmp_stack); 202 223 return (FALSE);
Note:
See TracChangeset
for help on using the changeset viewer.
