1 #ifndef VCSN_CORE_RAT_FWD_HH
2 # define VCSN_CORE_RAT_FWD_HH
16 using exp_t = std::shared_ptr<const exp>;
19 template <
typename Context>
23 template <
typename Context>
76 # define DEFINE(Node) \
77 template <typename Context> \
93 template <type_t Type,
typename Context>
96 template <
typename Context>
99 template <
typename Context>
106 template <type_t Type,
typename Context>
109 template <
typename Context>
112 template <
typename Context>
115 template <
typename Context>
122 template <type_t Type,
typename Context>
125 template <
typename Context>
128 template <
typename Context>
131 template <
typename Context>
134 template <
typename Context>
137 template <
typename Context>
144 template <type_t Type,
typename Context>
147 template <
typename Context>
150 template <
typename Context>
155 template <
typename Context>
156 using ratexp = std::shared_ptr<const node<Context>>;
160 template <
typename Context>
165 template <
typename Context>
170 #endif // !VCSN_CORE_RAT_FWD_HH
constexpr bool is_variadic(type_t t)
Whether one of the variadic types.
An inner node with multiple children.
The abstract parameterized, root for all rational expression types.
std::ostream & operator<<(std::ostream &o, type_t t)
std::shared_ptr< const node< Context >> ratexp
constexpr bool is_unary(type_t t)
Whether star, complement.
type_t
The possible types of ratexps.
Provide a variadic mul on top of a binary mul(), and one().
std::shared_ptr< const exp > exp_t
An inner node implementing a weight.
The root from which to derive the final node types.
constexpr bool is_constant(type_t t)
Whether is a constant (\z or \e).