| 595 | |
| 596 | |
| 597 | static te_expr *list(state *s) { |
| 598 | /* <list> = <expr> {"," <expr>} */ |
| 599 | te_expr *ret = expr(s); |
| 600 | CHECK_NULL(ret); |
| 601 | |
| 602 | while (s->type == TOK_SEP) { |
| 603 | next_token(s); |
| 604 | te_expr *e = expr(s); |
| 605 | CHECK_NULL(e, te_free(ret)); |
| 606 | |
| 607 | te_expr *prev = ret; |
| 608 | ret = NEW_EXPR(TE_FUNCTION2 | TE_FLAG_PURE, ret, e); |
| 609 | CHECK_NULL(ret, te_free(e), te_free(prev)); |
| 610 | |
| 611 | ret->function = comma; |
| 612 | } |
| 613 | |
| 614 | return ret; |
| 615 | } |
| 616 | |
| 617 | |
| 618 | #define TE_FUN(...) ((double(*)(__VA_ARGS__))n->function) |
no test coverage detected