parser: consolidate tokens
[m6w6/ext-psi] / src / types / num_exp.h
index 6e122bb867d665aacdc1f507a7fae7148e15aa3b..7ec62e1c02cffe5679853e05c457a2cac6704546 100644 (file)
@@ -46,17 +46,31 @@ struct psi_num_exp {
                        struct psi_num_exp *lhs;
                        struct psi_num_exp *rhs;
                } b;
+               struct {
+                       struct psi_decl_type *typ;
+                       struct psi_num_exp *num;
+               } c;
+               struct {
+                       struct psi_num_exp *cond;
+                       struct psi_num_exp *truthy;
+                       struct psi_num_exp *falsy;
+               } t;
                struct psi_num_exp *u;
                struct psi_number *n;
        } data;
        token_t (*calc)(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res);
 };
 
+struct psi_num_exp *psi_num_exp_init_ternary(token_t op,
+               struct psi_num_exp *cond, struct psi_num_exp *truthy,
+               struct psi_num_exp *falsy);
 struct psi_num_exp *psi_num_exp_init_binary(token_t op,
                struct psi_num_exp *lhs, struct psi_num_exp *rhs);
 struct psi_num_exp *psi_num_exp_init_unary(token_t op,
                struct psi_num_exp *u);
 struct psi_num_exp *psi_num_exp_init_num(struct psi_number *n);
+struct psi_num_exp *psi_num_exp_init_cast(struct psi_decl_type *typ,
+               struct psi_num_exp *num);
 void psi_num_exp_free(struct psi_num_exp **c_ptr);
 
 struct psi_num_exp *psi_num_exp_copy(struct psi_num_exp *exp);