16 using exp_t = std::shared_ptr<const exp>;
19 template <
typename ExpSet>
22 template <
typename ExpSet>
27 template <
typename ExpSet>
30 template <
typename ExpSet>
89 #define DEFINE(Node) \
90 template <typename Context> \
106 template <type_t Type,
typename Context>
109 template <
typename Context>
112 template <
typename Context>
119 template <type_t Type,
typename Context>
122 template <
typename Context>
125 template <
typename Context>
128 template <
typename Context>
135 template <type_t Type,
typename Context>
138 template <
typename Context>
141 template <
typename Context>
144 template <
typename Context>
147 template <
typename Context>
150 template <
typename Context>
153 template <
typename Context>
156 template <
typename Context>
166 template <
typename Context,
167 bool Enable = Context::is_lat>
175 template <type_t Type,
typename Context>
178 template <
typename Context>
181 template <
typename Context>
186 template <
typename Context>
191 template <
typename ExpSet>
195 template <
typename Context>
199 template <
typename ExpSet>
200 size_t size(
const ExpSet&
rs,
const typename ExpSet::value_t&
r);
204 template <
typename Context>
207 template <
typename ExpSet>
type_t
The possible types of expressions.
constexpr bool is_unary(type_t t)
Whether star, complement.
std::ostream & operator<<(std::ostream &o, type_t t)
Print a expression type.
std::shared_ptr< const node< Context >> expression
size_t size(const ExpSet &rs, const typename ExpSet::value_t &r)
auto out(const Aut &aut, state_t_of< Aut > s)
Indexes of visible transitions leaving state s.
An inner node implementing a weight.
info< ExpSet > make_info(const typename ExpSet::value_t &r)
constexpr bool is_variadic(type_t t)
Whether one of the variadic types.
Gather information of the number of the different node types.
constexpr bool is_constant(type_t t)
Whether is a constant (\z or \e).
Pretty-printer for rational expressions.
Implementation of nodes of tuple of rational expressions.
An inner node with multiple children.
Provide a variadic mul on top of a binary mul(), and one().
std::shared_ptr< const exp > exp_t
printer< ExpSet > make_printer(const ExpSet &rs, std::ostream &out)