22 {
"binary",
"trivial"},
27 {
"series",
"distributive"},
49 return "distributive";
66 while (is && isalnum(is.peek()))
74 return std::max(i1, i2);
identities(ids_t id=deflt)
Strictly obey to the syntax.
A mapping from strings to Values.
std::ostringstream os
The output stream: the corresponding C++ snippet to compile.
identities meet(identities i1, identities i2)
More restricted of these identities (min).
Trivial, plus associativity of add and product.
An expressionset can implement several different sets of identities on expressions.
Associative plus commutativity, and "idempotence" for add.
Linear plus distribution. Used for series identities.
Distributive plus optimizations.
std::istream & operator>>(std::istream &is, identities &i)
Read from string form.
#define BUILTIN_UNREACHABLE()
std::string to_string(identities i)
Wrapper around operator<<.
std::ostream & operator<<(std::ostream &o, type_t t)
Print a expression type.