diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2020-03-01 12:21:50 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2020-03-01 12:21:50 -0500 |
commit | 88e7c92e76ce771e7a1efd4824060e3905194070 (patch) | |
tree | 04b36c981e662cb2c4a4db364dc36b3e8dd7164a /parse.c | |
parent | da748748c0239c21b9d62c77b51e269ad1d7de9f (diff) |
casting to #C types
Diffstat (limited to 'parse.c')
-rw-r--r-- | parse.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -1714,8 +1714,15 @@ static Status parse_expr(Parser *p, Expression *e, Token *end) { if (!parse_expr(p, casted, lowest_precedence_op)) return false; t->token = lowest_precedence_op + 1; - if (!parse_type(p, &e->cast.type)) - return false; + if (token_is_direct(t->token, DIRECT_C)) { + /* cast to #C type */ + CType unused; + if (!parse_c_type(p, &unused, &e->cast.type)) + return false; + } else { + if (!parse_type(p, &e->cast.type)) + return false; + } if (t->token != end) { tokr_err(t, "Cast expression continues after type"); return false; @@ -1940,7 +1947,8 @@ static Status parse_expr(Parser *p, Expression *e, Token *end) { if (single_arg) { ++t->token; if (!token_is_kw(t->token, KW_LPAREN)) { - tokr_err(t, "Expected ( to follow #%s.", directives[t->token->direct]); + printf("%d\n",t->token->direct); + tokr_err(t, "Expected ( to follow #%s.", directives[t->token[-1].direct]); return false; } ++t->token; |