Changeset 0153c87 in mainline for uspace/app/bithenge/script.c
- Timestamp:
- 2012-08-10T20:09:36Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6be4142
- Parents:
- c9797067
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bithenge/script.c
rc9797067 r0153c87 56 56 TOKEN_ERROR, 57 57 TOKEN_EOF, 58 TOKEN_GREATER_THAN_OR_EQUAL, 58 59 TOKEN_IDENTIFIER, 59 60 TOKEN_INTEGER, 61 TOKEN_INTEGER_DIVIDE, 60 62 TOKEN_LEFT_ARROW, 63 TOKEN_LESS_THAN_OR_EQUAL, 64 TOKEN_NOT_EQUAL, 61 65 62 66 /* Keywords */ … … 272 276 state->buffer_pos++; 273 277 state->token = TOKEN_LEFT_ARROW; 278 } else if (state->buffer[state->buffer_pos] == '=') { 279 state->buffer_pos++; 280 state->token = TOKEN_LESS_THAN_OR_EQUAL; 281 } 282 } else if (ch == '>') { 283 state->token = ch; 284 state->buffer_pos++; 285 if (state->buffer[state->buffer_pos] == '=') { 286 state->buffer_pos++; 287 state->token = TOKEN_GREATER_THAN_OR_EQUAL; 274 288 } 275 289 } else if (ch == '=') { … … 280 294 state->buffer_pos++; 281 295 } 296 } else if (ch == '/') { 297 state->token = ch; 298 state->buffer_pos++; 299 if (state->buffer[state->buffer_pos] == '/') { 300 state->token = TOKEN_INTEGER_DIVIDE; 301 state->buffer_pos++; 302 } 303 } else if (ch == '!') { 304 state->token = ch; 305 state->buffer_pos++; 306 if (state->buffer[state->buffer_pos] == '=') { 307 state->token = TOKEN_NOT_EQUAL; 308 state->buffer_pos++; 309 } 282 310 } else { 283 311 state->token = ch; … … 388 416 PRECEDENCE_NONE, 389 417 PRECEDENCE_EQUALS, 418 PRECEDENCE_COMPARE, 390 419 PRECEDENCE_ADD, 391 420 PRECEDENCE_MULTIPLY, … … 401 430 case '*': 402 431 return BITHENGE_EXPRESSION_MULTIPLY; 432 case TOKEN_INTEGER_DIVIDE: 433 return BITHENGE_EXPRESSION_INTEGER_DIVIDE; 434 case '%': 435 return BITHENGE_EXPRESSION_MODULO; 436 case '<': 437 return BITHENGE_EXPRESSION_LESS_THAN; 438 case TOKEN_LESS_THAN_OR_EQUAL: 439 return BITHENGE_EXPRESSION_LESS_THAN_OR_EQUAL; 440 case '>': 441 return BITHENGE_EXPRESSION_GREATER_THAN; 442 case TOKEN_GREATER_THAN_OR_EQUAL: 443 return BITHENGE_EXPRESSION_GREATER_THAN_OR_EQUAL; 403 444 case TOKEN_EQUALS: 404 445 return BITHENGE_EXPRESSION_EQUALS; 446 case TOKEN_NOT_EQUAL: 447 return BITHENGE_EXPRESSION_NOT_EQUALS; 405 448 default: 406 449 return BITHENGE_EXPRESSION_INVALID_BINARY_OP; … … 414 457 case BITHENGE_EXPRESSION_SUBTRACT: 415 458 return PRECEDENCE_ADD; 416 case BITHENGE_EXPRESSION_MULTIPLY: 459 case BITHENGE_EXPRESSION_MULTIPLY: /* fallthrough */ 460 case BITHENGE_EXPRESSION_INTEGER_DIVIDE: /* fallthrough */ 461 case BITHENGE_EXPRESSION_MODULO: 417 462 return PRECEDENCE_MULTIPLY; 418 case BITHENGE_EXPRESSION_EQUALS: 463 case BITHENGE_EXPRESSION_LESS_THAN: /* fallthrough */ 464 case BITHENGE_EXPRESSION_LESS_THAN_OR_EQUAL: /* fallthrough */ 465 case BITHENGE_EXPRESSION_GREATER_THAN: /* fallthrough */ 466 case BITHENGE_EXPRESSION_GREATER_THAN_OR_EQUAL: 467 return PRECEDENCE_COMPARE; 468 case BITHENGE_EXPRESSION_EQUALS: /* fallthrough */ 469 case BITHENGE_EXPRESSION_NOT_EQUALS: 419 470 return PRECEDENCE_EQUALS; 420 471 default: … … 614 665 next_token(state); 615 666 616 bithenge_expression_t *expr2 = parse_postfix_expression(state); 667 bithenge_expression_t *expr2 = 668 parse_expression_precedence(state, precedence); 617 669 if (state->error != EOK) { 618 670 bithenge_expression_dec_ref(expr2);
Note:
See TracChangeset
for help on using the changeset viewer.