Changeset 0b60d2d in mainline for uspace/app/bithenge/script.c
- Timestamp:
- 2012-08-09T04:46:44Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3c70376
- Parents:
- d8bd2ec
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bithenge/script.c
rd8bd2ec r0b60d2d 530 530 } 531 531 532 static bithenge_expression_t *parse_postfix_expression(state_t *state) 533 { 534 bithenge_expression_t *expr = parse_term(state); 535 while (state->error == EOK) { 536 if (state->token == '[') { 537 next_token(state); 538 bithenge_expression_t *start = parse_expression(state); 539 bool absolute_limit; 540 if (state->token == ',') { 541 absolute_limit = false; 542 next_token(state); 543 } else if (state->token == ':') { 544 absolute_limit = true; 545 next_token(state); 546 } else { 547 syntax_error(state, "expected ',' or ':'"); 548 } 549 bithenge_expression_t *limit = NULL; 550 if (!(state->token == ']' && absolute_limit)) 551 limit = parse_expression(state); 552 expect(state, ']'); 553 554 if (state->error != EOK) { 555 bithenge_expression_dec_ref(expr); 556 bithenge_expression_dec_ref(start); 557 bithenge_expression_dec_ref(limit); 558 return NULL; 559 } 560 int rc = bithenge_subblob_expression(&expr, expr, 561 start, limit, absolute_limit); 562 if (rc != EOK) { 563 error_errno(state, rc); 564 return NULL; 565 } 566 } else { 567 break; 568 } 569 } 570 return expr; 571 } 572 532 573 static bithenge_expression_t *parse_expression_precedence(state_t *state, 533 574 precedence_t prev_precedence) 534 575 { 535 bithenge_expression_t *expr = parse_ term(state);576 bithenge_expression_t *expr = parse_postfix_expression(state); 536 577 while (state->error == EOK) { 537 578 bithenge_binary_op_t op = … … 544 585 next_token(state); 545 586 546 bithenge_expression_t *expr2 = parse_ term(state);587 bithenge_expression_t *expr2 = parse_postfix_expression(state); 547 588 if (state->error != EOK) { 548 589 bithenge_expression_dec_ref(expr2);
Note:
See TracChangeset
for help on using the changeset viewer.