![]() |
Vcsn
2.4
Be Rational
|
Classes | |
singleton | atom |
struct | braced_expression |
An expression that "remembers" whether it was in parentheses. More... | |
class | const_visitor |
singleton | 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 |
singleton | 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... | |
singleton | inner |
An inner node. More... | |
singleton | leaf |
The root from which to derive the final node types. More... | |
class | less |
A functor to check whether one rational expression is (strictly) less than another one. More... | |
class | location |
Abstract a location. More... | |
singleton | node |
The abstract parameterized, root for all rational expression types. More... | |
class | parser |
A Bison parser. More... | |
class | partial_identity_impl |
Functor to partial_identity/convert a rational expression. 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... | |
singleton | tuple |
Implementation of nodes of tuple of rational expressions. More... | |
class | tuple< Context, false > |
singleton | unary |
singleton | variadic |
An inner node with multiple children. More... | |
struct | variant |
A char[S] buffer to store and retrieve objects. More... | |
singleton | 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 } |
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 } |
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 = InExpSet> | |
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 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) |
template<typename InExpSet , typename OutExpSet = InExpSet> | |
OutExpSet::value_t | partial_identity (const InExpSet &in_rs, const OutExpSet &out_rs, const typename InExpSet::value_t &v) |
Partial identity of a rational expression. 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) |
static int | debug_level_ () |
The nesting limit for parser traces, as specified per $YYDEBUG. More... | |
location | operator+ (location res, const location &end) |
Join two location objects to create a location. More... | |
location & | operator+= (location &res, int width) |
Change end position in place. More... | |
location | operator+ (location res, int width) |
Change end position. More... | |
location & | operator-= (location &res, int width) |
Change end position in place. More... | |
location | operator- (const location &begin, int width) |
Change 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... | |
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... | |
position & | operator+= (position &res, int width) |
Add and assign a position. More... | |
position | operator+ (position res, int width) |
Add two position objects. More... | |
position & | operator-= (position &res, int width) |
Add and assign a position. More... | |
position | operator- (position res, int width) |
Add two position objects. 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... | |
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 |
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 |
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 175 of file copy.hh.
Referenced by vcsn::rat::expressionset_impl< Context >::conv(), vcsn::dyn::detail::copy(), vcsn::dyn::detail::copy_expression(), and vcsn::rat::copy_impl< InExpSet, OutExpSet >::visit_tuple< typename >::work_().
|
inlinestatic |
Get the context of the driver.
Definition at line 82 of file parse.cc.
References vcsn::rat::driver::context().
Referenced by vcsn::rat::driver::context(), vcsn::rat::expressionset_impl< Context >::make(), vcsn::rat::parser::parse(), and read().
|
static |
The nesting limit for parser traces, as specified per $YYDEBUG.
Definition at line 89 of file driver.cc.
References vcsn::res.
Referenced by vcsn::rat::driver::parse().
|
inlinestatic |
Get the identities of the driver.
Definition at line 89 of file parse.cc.
References vcsn::rat::driver::identities().
Referenced by vcsn::ast::context_parser::expressionset_(), vcsn::dyn::detail::lift_automaton(), vcsn::rat::expressionset_impl< Context >::make(), 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 60 of file fwd.hh.
Referenced by vcsn::rat::exp::is_leaf().
|
inline |
Whether star, complement.
Definition at line 67 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 75 of file fwd.hh.
References add, compose, conjunction, infiltrate, ldivide, mul, and shuffle.
dot_printer<ExpSet> vcsn::rat::make_dot_printer | ( | const ExpSet & | rs, |
std::ostream & | out, | ||
bool | physical = false |
||
) |
Definition at line 421 of file dot.hh.
References vcsn::detail::out(), and vcsn::detail::rs.
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::detail::rs.
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 373 of file printer.hh.
References vcsn::detail::rs.
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 | ||
) |
Definition at line 76 of file identities.cc.
Referenced by vcsn::meet().
|
inline |
Compare two location objects.
Definition at line 155 of file location.hh.
|
inline |
Compare two position objects.
Definition at line 159 of file position.hh.
|
inline |
Join two location objects to create a location.
Definition at line 115 of file location.hh.
References vcsn::res.
|
inline |
Add two position objects.
Definition at line 127 of file position.hh.
|
inline |
Change end position.
Definition at line 129 of file location.hh.
|
inline |
|
inline |
|
inline |
Add two position objects.
Definition at line 141 of file position.hh.
|
inline |
Change end position.
Definition at line 141 of file location.hh.
|
inline |
Add and assign a position.
Definition at line 134 of file position.hh.
|
inline |
Change end position in place.
Definition at line 135 of file location.hh.
|
inline |
std::ostream & vcsn::rat::operator<< | ( | std::ostream & | os, |
identities | i | ||
) |
Output in string form.
Definition at line 62 of file identities.cc.
References to_string().
|
inline |
Intercept output stream redirection.
ostr | the destination output stream |
loc | a reference to the location to redirect |
Avoid duplicate information.
Definition at line 168 of file location.hh.
References vcsn::rat::position::column, vcsn::rat::location::end, and vcsn::if().
|
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 |
Compare two location objects.
Definition at line 148 of file location.hh.
|
inline |
Compare two position objects.
Definition at line 148 of file position.hh.
std::istream & vcsn::rat::operator>> | ( | std::istream & | is, |
identities & | i | ||
) |
Read from string form.
Definition at line 67 of file identities.cc.
OutExpSet::value_t vcsn::rat::partial_identity | ( | const InExpSet & | in_rs, |
const OutExpSet & | out_rs, | ||
const typename InExpSet::value_t & | v | ||
) |
Partial identity of a rational expression.
InExpSet | the input expressionset type. |
OutExpSet | the output expressionset type. |
InExpSet | the input expressionset type |
OutExpSet | the output expressionset type |
Definition at line 186 of file partial-identity.hh.
Referenced by vcsn::dyn::detail::partial_identity(), and vcsn::rat::partial_identity_impl< InExpSet, OutExpSet >::visit_tuple< typename >::work_().
|
inlinestatic |
Generate an expression for "e <+ f = e % f + f".
Definition at line 1476 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 154 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 168 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(), and vcsn::res.
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::detail::word_synchronizer< Aut >::dest_state(), vcsn::detail::state_eliminator< Aut, Profiler >::eliminate_state_(), vcsn::is_deterministic(), vcsn::is_synchronized_by(), vcsn::detail::tupleset_impl< ValueSets >::less(), vcsn::levenshtein(), vcsn::minimize(), vcsn::num_tapes(), 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::detail::epsilon_remover< Aut, has_one >::update_profile_(), vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT(), and yyFlexLexer::yy_create_buffer().
std::string vcsn::rat::to_string | ( | identities | i | ) |
Wrapper around operator<<.
Definition at line 42 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_(), vcsn::rat::expansionset< ExpSet >::tuple_impl< Expansions >::denormalize_tape(), vcsn::rat::expressionset_impl< Context >::letter_class_(), vcsn::dyn::lift(), vcsn::snamer< std::integral_constant< T, Value > >::name(), vcsn::rat::constant_term_visitor< ExpSet >::operator()(), vcsn::rat::derivation_visitor< ExpSet >::operator()(), vcsn::rat::inductive_visitor< Aut, ExpSet, Tag >::operator()(), vcsn::rat::to_expansion_visitor< expressionset_t >::operator()(), vcsn::rat::standard_visitor< Aut, ExpSet >::operator()(), operator<<(), vcsn::rat::parser::parse(), vcsn::dyn::to_integral_constant(), and vcsn::rat::expansionset< expressionset_t >::transpose().
|
inlinestatic |
Use our local scanner object.
Definition at line 96 of file parse.cc.
References vcsn::rat::driver::scanner_.
Referenced by vcsn::rat::parser::parse().
|
static |
Exponents in UTF-8.
Definition at line 59 of file printer.hh.