+struct psi_num_exp *psi_num_exp_init(token_t t, void *num);
+struct psi_num_exp *psi_num_exp_copy(struct psi_num_exp *exp);
+void psi_num_exp_free(struct psi_num_exp **exp_ptr);
+void psi_num_exp_dump(int fd, struct psi_num_exp *exp);
+
+bool psi_num_exp_validate(struct psi_data *data, struct psi_num_exp *exp,
+ struct psi_impl *impl, struct psi_decl *cb_decl,
+ struct psi_let_exp *current_let, struct psi_set_exp *current_set,
+ struct psi_decl_enum *current_enum);
+
+token_t psi_num_exp_exec(struct psi_num_exp *exp, impl_val *res, struct psi_call_frame *frame);
+
+#include <assert.h>
+
+static inline zend_long psi_long_num_exp(struct psi_num_exp *exp, struct psi_call_frame *frame) {
+ impl_val val = {0};