From a4396576c84ae0563fc7494f477cef91f40dd977 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 17 Jun 2024 16:55:24 -0400 Subject: [PATCH] xo-pyexpression: + if-expressions --- src/pyexpression/pyexpression.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/pyexpression/pyexpression.cpp b/src/pyexpression/pyexpression.cpp index ff808c0c..a74c7076 100644 --- a/src/pyexpression/pyexpression.cpp +++ b/src/pyexpression/pyexpression.cpp @@ -10,6 +10,7 @@ #include "xo/expression/Constant.hpp" #include "xo/expression/Variable.hpp" #include "xo/expression/Lambda.hpp" +#include "xo/expression/IfExpr.hpp" #include "xo/pyutil/pyutil.hpp" #include #include @@ -29,6 +30,8 @@ namespace xo { using xo::ast::make_var; using xo::ast::Lambda; using xo::ast::make_lambda; + using xo::ast::IfExpr; + using xo::ast::make_ifexpr; using xo::reflect::TaggedPtr; using xo::ref::rp; namespace py = pybind11; @@ -46,6 +49,7 @@ namespace xo { .value("apply", exprtype::apply) .value("lambda", exprtype::lambda) .value("variable", exprtype::variable) + .value("ifexpr", exprtype::ifexpr) ; py::class_>(m, "IfExpr") + .def_property_readonly("test", &IfExpr::test, py::doc("test expression")) + .def_property_readonly("when_true", &IfExpr::when_true, py::doc("execute this expression when (and only when) test succeeds")) + .def_property_readonly("when_false", &IfExpr::when_false, py::doc("execute this expression when (and only when) test fails")) + ; + + m.def("make_ifexpr", &make_ifexpr); } /*pyexpresion*/ } /*namespace ast*/ } /*namespace xo*/