26 return "distributive";
42 static const auto map = std::map<std::string, identities::ids_t>
56 while (is && isalnum(is.peek()))
59 ids =
getargs(
"identities", map, buf);
73 return std::max(i1, i2);
Strictly obey to the syntax.
std::istream & operator>>(std::istream &is, identities &i)
Read from string form.
C::mapped_type getargs(const std::string &kind, const C &map, const std::string &key)
Find a correspondance in a map.
std::istringstream is
The input stream: the specification to translate.
std::string to_string(identities i)
Wrapper around operator<<.
std::ostream & operator<<(std::ostream &o, type_t t)
Traditional plus distribution. Used for series identities.
Associative plus commutativity, and "idempotence" for sum.
static identities ids(const driver &d)
Get the identities of the driver.
std::ostringstream os
The output stream: the corresponding C++ snippet to compile.
An expressionset can implement several different sets of identities on expressions.
identities meet(identities i1, identities i2)
#define BUILTIN_UNREACHABLE()
Trivial, plus associativity of sum and product.