| 569 | |
| 570 | |
| 571 | static te_expr *list(state *s) { |
| 572 | /* <list> = <expr> {"," <expr>} */ |
| 573 | te_expr *ret = expr(s); |
| 574 | CHECK_NULL(ret); |
| 575 | |
| 576 | while (s->type == TOK_SEP) { |
| 577 | next_token(s); |
| 578 | te_expr *e = expr(s); |
| 579 | CHECK_NULL(e, te_free(ret)); |
| 580 | |
| 581 | te_expr *prev = ret; |
| 582 | ret = NEW_EXPR(TE_FUNCTION2 | TE_FLAG_PURE, ret, e); |
| 583 | CHECK_NULL(ret, te_free(e), te_free(prev)); |
| 584 | |
| 585 | ret->function = comma; |
| 586 | } |
| 587 | |
| 588 | return ret; |
| 589 | } |
| 590 | |
| 591 | |
| 592 | #define TE_FUN(...) ((double(*)(__VA_ARGS__))n->function) |
no test coverage detected