![]() |
Vcsn
2.8
Be Rational
|
Classes | |
class | atom |
struct | braced_expression |
An expression that "remembers" whether it was in parentheses. More... | |
class | compare |
A functor for three-way comparison between two expressions. More... | |
class | const_visitor |
class | constant |
class | constant_term_visitor |
A functor to compute the constant term of an expression. More... | |
class | copy_impl |
Functor to copy/convert a rational expression. More... | |
class | derivation_visitor |
Functor to compute the derivation of an expression. More... | |
class | dot_printer |
Pretty-printer for rational expressions. More... | |
class | driver |
State and public interface for rational expression parsing. More... | |
class | exp |
The abstract, non-parameterized, root for all rational expression node types. More... | |
struct | expansionset |
class | expressionset_impl |
A typed expression set. More... | |
class | hash |
class | identities |
An expressionset can implement several different sets of identities on expressions. More... | |
class | inductive_visitor |
Build an automaton by induction from an expression. More... | |
class | info |
Gather information of the number of the different node types. More... | |
class | inner |
An inner node. More... | |
class | leaf |
The root from which to derive the final node types. More... | |
class | location |
Abstract a location. More... | |
class | name |
An inner node to name the subexpression. More... | |
class | node |
The abstract parameterized, root for all rational expression types. More... | |
class | parser |
A Bison parser. More... | |
class | position |
Abstract a position. More... | |
class | printer |
Pretty-printer for rational expressions. More... | |
class | project_impl |
Functor to project a rational expression. More... | |
class | sizer |
Functor to compute the size of a rational expression. More... | |
class | slice |
Present a slice of the top of a stack. More... | |
class | split_visitor |
Break a rational expression into a polynomial. More... | |
class | stack |
class | standard_visitor |
Build a standard automaton from an expression. More... | |
class | star_normal_form_visitor |
class | thompson_visitor |
Build a Thompson automaton from an expression. More... | |
class | to_expansion_visitor |
Functor to compute the expansion of an expression. More... | |
class | tuple |
Implementation of nodes of tuple of rational expressions. More... | |
class | tuple< Context, false > |
class | unary |
class | variadic |
An inner node with multiple children. More... | |
struct | variant |
A char[S] buffer to store and retrieve objects. More... | |
class | weight_node |
An inner node implementing a weight. More... | |
class | zpc_visitor |
Build a ZPC automaton from an expression. More... | |
Typedefs | |
template<typename ExpSet > | |
using | expression_polynomialset_t = polynomialset< context< ExpSet, weightset_t_of< ExpSet > >> |
Type of PolynomialSet of expressions from the ExpSet type. More... | |
template<typename ExpSet > | |
using | expression_polynomial_t = typename expression_polynomialset_t< ExpSet >::value_t |
Type of polynomials of expressions from the ExpSet type. More... | |
using | exp_t = std::shared_ptr< const exp > |
template<typename Context > | |
using | zero = constant< type_t::zero, Context > |
template<typename Context > | |
using | one = constant< type_t::one, Context > |
template<typename Context > | |
using | complement = unary< type_t::complement, Context > |
template<typename Context > | |
using | star = unary< type_t::star, Context > |
template<typename Context > | |
using | transposition = unary< type_t::transposition, Context > |
template<typename Context > | |
using | compose = variadic< type_t::compose, Context > |
template<typename Context > | |
using | conjunction = variadic< type_t::conjunction, Context > |
template<typename Context > | |
using | infiltrate = variadic< type_t::infiltrate, Context > |
template<typename Context > | |
using | ldivide = variadic< type_t::ldivide, Context > |
template<typename Context > | |
using | mul = variadic< type_t::mul, Context > |
template<typename Context > | |
using | shuffle = variadic< type_t::shuffle, Context > |
template<typename Context > | |
using | add = variadic< type_t::add, Context > |
template<typename Context > | |
using | lweight = weight_node< type_t::lweight, Context > |
template<typename Context > | |
using | rweight = weight_node< type_t::rweight, Context > |
template<typename Context > | |
using | expression = std::shared_ptr< const node< Context > > |
using | class_t = std::set< std::pair< std::string, std::string > > |
A set of label ranges. More... | |
using | irange_type = std::tuple< int, int > |
An integer range, for quantifiers/exponents. More... | |
Enumerations | |
enum | type_t { type_t::zero, type_t::one, type_t::atom, type_t::add, type_t::mul, type_t::ldivide, type_t::conjunction, type_t::shuffle, type_t::infiltrate, type_t::star, type_t::transposition, type_t::lweight, type_t::rweight, type_t::complement, type_t::tuple, type_t::compose, type_t::name } |
The possible types of expressions. More... | |
enum | precedence_t { precedence_t::add, precedence_t::compose, precedence_t::tuple, precedence_t::products, precedence_t::shuffle = products, precedence_t::conjunction = products, precedence_t::infiltrate = products, precedence_t::ldivide, precedence_t::mul, precedence_t::word = mul, precedence_t::lweight, precedence_t::rweight, precedence_t::unary, precedence_t::star = unary, precedence_t::complement = unary, precedence_t::transposition = unary, precedence_t::exponent = unary, precedence_t::zero, precedence_t::one, precedence_t::atom, precedence_t::name } |
The possible node precedence levels, increasing. More... | |
Functions | |
template<typename ExpSet > | |
expression_polynomialset_t< ExpSet > | make_expression_polynomialset (const ExpSet &rs) |
From a ExpSet to its polynomialset. More... | |
template<typename InExpSet , typename OutExpSet > | |
std::enable_if_t< std::is_same< InExpSet, OutExpSet >{}, typename OutExpSet::value_t > | copy (const InExpSet &in_rs, const OutExpSet &out_rs, const typename InExpSet::value_t &v) |
Copy/convert a rational expression. More... | |
template<typename InExpSet , typename OutExpSet > | |
std::enable_if_t<!std::is_same< InExpSet, OutExpSet >{}, typename OutExpSet::value_t > | copy (const InExpSet &in_rs, const OutExpSet &out_rs, const typename InExpSet::value_t &v) |
template<typename ExpSet > | |
dot_printer< ExpSet > | make_dot_printer (const ExpSet &rs, std::ostream &out, bool physical=false) |
template<typename ExpSet > | |
info< ExpSet > | make_info (const typename ExpSet::value_t &r) |
template<typename ExpSet > | |
printer< ExpSet > | make_printer (const ExpSet &rs, std::ostream &out) |
constexpr bool | is_constant (type_t t) |
Whether is a constant (\\z or \\e ). More... | |
constexpr bool | is_unary (type_t t) |
Whether star, complement. More... | |
constexpr bool | is_variadic (type_t t) |
Whether one of the variadic types. More... | |
std::ostream & | operator<< (std::ostream &o, type_t t) |
Print a expression type. More... | |
template<typename ExpSet > | |
size_t | size (const ExpSet &rs, const typename ExpSet::value_t &r) |
std::string | to_string (identities i) |
Wrapper around operator<<. More... | |
std::istream & | operator>> (std::istream &is, identities &i) |
Read from string form. More... | |
std::ostream & | operator<< (std::ostream &os, identities i) |
Output in string form. More... | |
identities | meet (identities i1, identities i2) |
More restricted of these identities (min). More... | |
template<size_t Tape, typename InExpSet , typename OutExpSet > | |
auto | project (const InExpSet &in_rs, const OutExpSet &out_rs, const typename InExpSet::value_t &v) -> typename OutExpSet::value_t |
Project a rational expression. More... | |
template<size_t Tape, typename InExpSet > | |
auto | project (const InExpSet &in_rs, const typename InExpSet::value_t &v) -> typename InExpSet::template project_t< Tape >::value_t |
Project a rational expression. More... | |
template<typename ExpSet > | |
size_t | size (const typename ExpSet::value_t &r) |
location & | operator+= (location &res, const location &end) |
Join two locations, in place. More... | |
location | operator+ (location res, const location &end) |
Join two locations. More... | |
location & | operator+= (location &res, int width) |
Add width columns to the end position, in place. More... | |
location | operator+ (location res, int width) |
Add width columns to the end position. More... | |
location & | operator-= (location &res, int width) |
Subtract width columns to the end position, in place. More... | |
location | operator- (location res, int width) |
Subtract width columns to the end position. More... | |
bool | operator== (const location &loc1, const location &loc2) |
Compare two location objects. More... | |
bool | operator!= (const location &loc1, const location &loc2) |
Compare two location objects. More... | |
template<typename YYChar > | |
std::basic_ostream< YYChar > & | operator<< (std::basic_ostream< YYChar > &ostr, const location &loc) |
Intercept output stream redirection. More... | |
position & | operator+= (position &res, int width) |
Add width columns, in place. More... | |
position | operator+ (position res, int width) |
Add width columns. More... | |
position & | operator-= (position &res, int width) |
Subtract width columns, in place. More... | |
position | operator- (position res, int width) |
Subtract width columns. More... | |
bool | operator== (const position &pos1, const position &pos2) |
Compare two position objects. More... | |
bool | operator!= (const position &pos1, const position &pos2) |
Compare two position objects. More... | |
template<typename YYChar > | |
std::basic_ostream< YYChar > & | operator<< (std::basic_ostream< YYChar > &ostr, const position &pos) |
Intercept output stream redirection. More... | |
static dyn::expression | prefer (const dyn::expression &e, const dyn::expression &f) |
Generate an expression for "e <+ f = e % f + f". More... | |
static dyn::context | ctx (const driver &d) |
Get the context of the driver. More... | |
static identities | ids (const driver &d) |
Get the identities of the driver. More... | |
static parser::symbol_type | yylex (driver &d) |
Use our local scanner object. More... | |
dyn::expression | read (const dyn::context &ctx, rat::identities ids, std::istream &is, const location &l=location{}) |
The expression in stream is. More... | |
Variables | |
static constexpr const char *const | superscripts [] |
Exponents in UTF-8. More... | |
using vcsn::rat::add = typedef variadic<type_t::add, Context> |
using vcsn::rat::class_t = typedef std::set<std::pair<std::string, std::string> > |
using vcsn::rat::complement = typedef unary<type_t::complement, Context> |
using vcsn::rat::compose = typedef variadic<type_t::compose, Context> |
using vcsn::rat::conjunction = typedef variadic<type_t::conjunction, Context> |
using vcsn::rat::exp_t = typedef std::shared_ptr<const exp> |
using vcsn::rat::expression = typedef std::shared_ptr<const node<Context> > |
using vcsn::rat::expression_polynomial_t = typedef typename expression_polynomialset_t<ExpSet>::value_t |
using vcsn::rat::expression_polynomialset_t = typedef polynomialset<context<ExpSet, weightset_t_of<ExpSet> >> |
using vcsn::rat::infiltrate = typedef variadic<type_t::infiltrate, Context> |
using vcsn::rat::irange_type = typedef std::tuple<int, int> |
using vcsn::rat::ldivide = typedef variadic<type_t::ldivide, Context> |
using vcsn::rat::lweight = typedef weight_node<type_t::lweight, Context> |
using vcsn::rat::mul = typedef variadic<type_t::mul, Context> |
using vcsn::rat::one = typedef constant<type_t::one, Context> |
using vcsn::rat::rweight = typedef weight_node<type_t::rweight, Context> |
using vcsn::rat::shuffle = typedef variadic<type_t::shuffle, Context> |
using vcsn::rat::star = typedef unary<type_t::star, Context> |
using vcsn::rat::transposition = typedef unary<type_t::transposition, Context> |
using vcsn::rat::zero = typedef constant<type_t::zero, Context> |
|
strong |
The possible node precedence levels, increasing.
When printing a word (i.e., a label with several letters), beware that it may require parens. Think of star(atom(ab)): if we print it as 'ab*', it actually means 'a(b*)'. So give words a lower precedence than star. This is the role of 'word' below.
Was part of printer<ExpSet>, but it resulted in different incompatible types between, for instance, printer<lat<lal_char, lal_char>> and printer<lal_char>, which is a problem when the former calls print_child of the latter, passing an argument of type precedence_t.
Enumerator | |
---|---|
add | |
compose | |
tuple | |
products | |
shuffle | |
conjunction | |
infiltrate | |
ldivide | |
mul | |
word | |
lweight | |
rweight | |
unary | |
star | |
complement | |
transposition | |
exponent | |
zero | |
one | |
atom | |
name |
Definition at line 34 of file printer.hh.
|
strong |
The possible types of expressions.
They also code the order in which they are sorted by less, so that, for instance, polynomials always display \\e + a
, and never a + \\e
.
Enumerator | |
---|---|
zero | |
one | |
atom | |
add | |
mul | |
ldivide | |
conjunction | |
shuffle | |
infiltrate | |
star | |
transposition | |
lweight | |
rweight | |
complement | |
tuple | |
compose | |
name | Naming an expression. |
std::enable_if_t< std::is_same< InExpSet, OutExpSet >{}, typename OutExpSet::value_t > vcsn::rat::copy | ( | const InExpSet & | in_rs, |
const OutExpSet & | out_rs, | ||
const typename InExpSet::value_t & | v | ||
) |
Copy/convert a rational expression.
InExpSet | the input expressionset type. |
OutExpSet | the output expressionset type. |
Definition at line 189 of file copy.hh.
References vcsn::str_quote(), and to_string().
Referenced by vcsn::rat::expressionset_impl< Context >::conv(), copy(), vcsn::rat::parser::parse(), and vcsn::rat::copy_impl< InExpSet, OutExpSet >::visit_tuple< typename >::work_().
std::enable_if_t<!std::is_same< InExpSet, OutExpSet >{}, typename OutExpSet::value_t > vcsn::rat::copy | ( | const InExpSet & | in_rs, |
const OutExpSet & | out_rs, | ||
const typename InExpSet::value_t & | v | ||
) |
Definition at line 214 of file copy.hh.
References copy(), vcsn::str_quote(), and to_string().
Referenced by vcsn::dyn::copy(), and vcsn::dyn::detail::copy_expression().
|
inlinestatic |
Get the context of the driver.
Definition at line 84 of file parse.cc.
References vcsn::rat::driver::context().
Referenced by vcsn::rat::driver::context(), vcsn::rat::expressionset_impl< Context >::make(), vcsn::make_expressionset(), vcsn::rat::parser::parse(), read(), vcsn::thompson(), vcsn::dyn::detail::thompson(), vcsn::zpc(), and vcsn::dyn::detail::zpc().
|
inlinestatic |
Get the identities of the driver.
Definition at line 91 of file parse.cc.
References vcsn::rat::driver::identities().
Referenced by vcsn::ast::context_parser::expressionset_(), vcsn::lift(), vcsn::dyn::detail::lift_automaton(), vcsn::detail::lift_expressionset(), vcsn::rat::expressionset_impl< Context >::make(), vcsn::make_expressionset(), vcsn::rat::parser::parse(), vcsn::dyn::read_expression(), vcsn::to_expression(), and vcsn::tuple_expressionset().
|
inline |
Whether is a constant (\\z
or \\e
).
Definition at line 67 of file fwd.hh.
Referenced by vcsn::rat::exp::is_leaf().
|
inline |
Whether star, complement.
Definition at line 74 of file fwd.hh.
References complement, star, and transposition.
Referenced by vcsn::rat::exp::is_unary().
|
inline |
Whether one of the variadic types.
Definition at line 82 of file fwd.hh.
References add, compose, conjunction, infiltrate, ldivide, mul, operator<<(), and shuffle.
dot_printer<ExpSet> vcsn::rat::make_dot_printer | ( | const ExpSet & | rs, |
std::ostream & | out, | ||
bool | physical = false |
||
) |
Definition at line 434 of file dot.hh.
References vcsn::detail::out().
Referenced by vcsn::print().
expression_polynomialset_t<ExpSet> vcsn::rat::make_expression_polynomialset | ( | const ExpSet & | rs | ) |
From a ExpSet to its polynomialset.
Definition at line 31 of file split.hh.
References vcsn::context< LabelSet, WeightSet >::weightset().
Referenced by vcsn::derivation(), vcsn::dyn::detail::derivation(), vcsn::dyn::detail::split(), and vcsn::split().
info< ExpSet > vcsn::rat::make_info | ( | const typename ExpSet::value_t & | r | ) |
printer< ExpSet > vcsn::rat::make_printer | ( | const ExpSet & | rs, |
std::ostream & | out | ||
) |
Definition at line 379 of file printer.hh.
Referenced by vcsn::rat::expressionset_impl< Context >::print(), and vcsn::rat::printer< ExpSet >::visit_tuple< Dummy >::print_().
identities vcsn::rat::meet | ( | identities | i1, |
identities | i2 | ||
) |
More restricted of these identities (min).
Definition at line 72 of file identities.cc.
Referenced by vcsn::meet().
Compare two position objects.
Definition at line 159 of file position.hh.
Compare two location objects.
Definition at line 161 of file location.hh.
Referenced by vcsn::rat::position::add_(), and vcsn::rat::location::lines().
Join two locations.
Definition at line 122 of file location.hh.
References vcsn::rat::location::end.
Referenced by vcsn::rat::position::add_(), and vcsn::rat::location::lines().
Add width columns.
Definition at line 127 of file position.hh.
Add width columns to the end position.
Definition at line 135 of file location.hh.
Join two locations, in place.
Definition at line 115 of file location.hh.
References vcsn::res.
Referenced by vcsn::rat::position::add_(), and vcsn::rat::location::lines().
Add width columns to the end position, in place.
Definition at line 128 of file location.hh.
References vcsn::res.
Subtract width columns.
Definition at line 141 of file position.hh.
Subtract width columns to the end position.
Definition at line 147 of file location.hh.
Referenced by vcsn::rat::position::add_(), and vcsn::rat::location::lines().
Subtract width columns, in place.
Definition at line 134 of file position.hh.
Subtract width columns to the end position, in place.
Definition at line 141 of file location.hh.
Referenced by vcsn::rat::position::add_(), and vcsn::rat::location::lines().
|
inline |
Print a expression type.
Definition at line 13 of file printer.hxx.
References CASE.
Referenced by is_variadic().
std::ostream & vcsn::rat::operator<< | ( | std::ostream & | os, |
identities | i | ||
) |
Output in string form.
Definition at line 58 of file identities.cc.
References to_string().
|
inline |
Intercept output stream redirection.
ostr | the destination output stream |
pos | a reference to the position to redirect |
Definition at line 170 of file position.hh.
References vcsn::rat::position::filename.
|
inline |
Intercept output stream redirection.
ostr | the destination output stream |
loc | a reference to the location to redirect |
Avoid duplicate information.
Definition at line 174 of file location.hh.
References vcsn::rat::position::column, vcsn::rat::location::end, and vcsn::if().
Compare two position objects.
Definition at line 148 of file position.hh.
Compare two location objects.
Definition at line 154 of file location.hh.
Referenced by vcsn::rat::position::add_(), and vcsn::rat::location::lines().
std::istream & vcsn::rat::operator>> | ( | std::istream & | is, |
identities & | i | ||
) |
Read from string form.
Definition at line 63 of file identities.cc.
|
inlinestatic |
Generate an expression for "e <+ f = e % f + f".
Definition at line 1513 of file parse.cc.
References add, complement, and conjunction.
Referenced by vcsn::rat::parser::parse().
auto vcsn::rat::project | ( | const InExpSet & | in_rs, |
const OutExpSet & | out_rs, | ||
const typename InExpSet::value_t & | v | ||
) | -> typename OutExpSet::value_t |
Project a rational expression.
Tape | the selected tape |
InExpSet | the input expressionset type |
OutExpSet | the output expressionset type |
Definition at line 159 of file project.hh.
References vcsn::v.
auto vcsn::rat::project | ( | const InExpSet & | in_rs, |
const typename InExpSet::value_t & | v | ||
) | -> typename InExpSet::template project_t<Tape>::value_t |
Project a rational expression.
Tape | the selected tape |
InExpSet | the expressionset type |
Definition at line 173 of file project.hh.
References vcsn::v.
dyn::expression vcsn::rat::read | ( | const dyn::context & | ctx, |
rat::identities | ids, | ||
std::istream & | is, | ||
const location & | l | ||
) |
The expression in stream is.
Definition at line 11 of file read.cc.
References ctx().
Referenced by vcsn::dyn::read_expression().
size_t vcsn::rat::size | ( | const typename ExpSet::value_t & | r | ) |
size_t vcsn::rat::size | ( | const ExpSet & | rs, |
const typename ExpSet::value_t & | r | ||
) |
Referenced by vcsn::detail::bellman_ford_impl(), vcsn::rat::expressionset_impl< Context >::compose(), vcsn::rat::expansionset< expressionset_t >::compose(), vcsn::compose_labelset(), vcsn::detail::word_synchronizer< Aut >::dest_state(), vcsn::detail::state_eliminator< Aut, Profiler >::eliminate_state_(), vcsn::detail::are_isomorphic_impl< Aut1, Aut2 >::get_full_response_sequential(), vcsn::detail::synchronizer< Aut >::get_min_length_(), vcsn::detail::bounded_lag_checker< Aut >::get_size_tape(), vcsn::is_deterministic(), vcsn::is_synchronized_by(), vcsn::detail::tupleset_impl< ValueSets >::less(), vcsn::levenshtein(), vcsn::detail::compose_automaton_impl< Lazy, Lhs, Rhs >::make_labelset_(), vcsn::minimize(), vcsn::detail::dijkstra_impl< Aut, ValueSet, Mul >::operator()(), vcsn::detail::a_star_impl< Aut >::operator()(), vcsn::nullableset< LabelSet >::size(), vcsn::detail::tupleset_impl< ValueSets >::size_(), vcsn::sparse_set< T >::sparse_set(), vcsn::rat::variadic< Type, Context >::type(), vcsn::detail::epsilon_remover< Aut, has_one >::update_profile_(), vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT(), yyFlexLexer::yy_create_buffer(), and FlexLexer::YYLeng().
std::string vcsn::rat::to_string | ( | identities | i | ) |
Wrapper around operator<<.
Definition at line 38 of file identities.cc.
References vcsn::rat::identities::agressive, vcsn::rat::identities::associative, BUILTIN_UNREACHABLE, vcsn::rat::identities::distributive, vcsn::rat::identities::ids(), vcsn::rat::identities::linear, vcsn::rat::identities::none, and vcsn::rat::identities::trivial.
Referenced by vcsn::rat::expansionset< expressionset_t >::complement_(), copy(), vcsn::rat::expansionset< ExpSet >::tuple_impl< Expansions >::denormalize_tape(), vcsn::rat::expressionset_impl< Context >::letter_class_(), vcsn::dyn::lift(), vcsn::detail::random_expression_impl< ExpressionSet, RandomGenerator >::make_param_(), vcsn::snamer< std::integral_constant< T, Value > >::name(), vcsn::rat::constant_term_visitor< ExpSet >::operator()(), vcsn::rat::thompson_visitor< Aut, ExpSet >::operator()(), vcsn::rat::zpc_visitor< Aut, ExpSet >::operator()(), vcsn::rat::derivation_visitor< ExpSet >::operator()(), vcsn::rat::inductive_visitor< Aut, ExpSet, Tag >::operator()(), vcsn::rat::to_expansion_visitor< expressionset_t >::operator()(), operator<<(), vcsn::rat::parser::parse(), vcsn::rat::inductive_visitor< Aut, ExpSet, Tag >::recurse(), vcsn::detail::focus_automaton_impl< Tape, Aut >::sname(), vcsn::dyn::to_integral_constant(), and vcsn::rat::expansionset< expressionset_t >::transpose().
|
inlinestatic |
Use our local scanner object.
Definition at line 98 of file parse.cc.
References vcsn::rat::driver::scanner_.
Referenced by vcsn::rat::parser::parse().
|
static |
Exponents in UTF-8.
Definition at line 60 of file printer.hh.