# BerrySethiAlgo< T_auto, S, T > Struct Template Reference

This is the visitor that really computes Berry-Sethi. More...

Inherits vcsn::algorithm_patterns::MathAutomataConstructor< BerrySethiAlgo< T_auto, S, T >, T_auto, linearize_element< S, T >::letter_t >.

List of all members.

## Public Types

typedef Element< S, T > | exp_t
| Type of the argument to provide to the constructor.
typedef linearize_element< S, T >::element_t | linear_exp_t
| Types from linearize_element.
typedef linearize_element< S, T >::alphabet_t | linear_alphabet_t
| Types from linearize_element.
typedef linearize_element< S, T >::letter_t | etiq_t
| Types from linearize_element.

## Public Member Functions

| BerrySethiAlgo (const series_set_t &series, const exp_t &exp)
| Default constructor.
std::set< etiq_t > | delta (const etiq_t &e, const letter_t &l)
| This is the delta function for the constructed automaton.
bool | is_initial (const etiq_t &e) const
| Whether a state is final or initial.
bool | is_final (const etiq_t &e) const
| Whether a state is final or initial.

## Detailed Description

### template<typename T_auto, typename S, typename T>
struct vcsn::BerrySethiAlgo< T_auto, S, T >

This is the visitor that really computes Berry-Sethi.

This class should be used only in berry_sethi() and should not be instanciated from elsewhere.

It is derived from MathAutomataConstructor because we want to use the mathematical definition of the Berry-Sethi automaton.

It defines the constructor to give a correct set to MathAutomataConstructor constructor. It also defines is_initial and is_final for a labeled state, and delta function.

Bug:

  FIXME: Change the zero-letter.

  FIXME: Check efficiency.

  FIXME: Check results of derivation.

See also:
  berry_sethi()

Definition at line 126 of file berry_sethi.hxx.

## Member Typedef Documentation

typedef linearize_element<S, T>::element_t linear_exp_t

Types from linearize_element.

Definition at line 137 of file berry_sethi.hxx.

typedef linearize_element<S, T>::alphabet_t linear_alphabet_t

Types from linearize_element.

Definition at line 138 of file berry_sethi.hxx.

typedef linearize_element<S, T>::letter_t etiq_t

Types from linearize_element.

Definition at line 139 of file berry_sethi.hxx.

## Constructor & Destructor Documentation

BerrySethiAlgo | ( | const series_set_t & | series,
|  | const exp_t & | exp |
| ) |  |  | `[inline]`

Default constructor.

This is the default constructor for BerrySethiAlgo, it calls the MathAutomataConstructor constructor with the linearized alphabet enriched with an extra letter as the set of states for the resulting automaton.

See also:
  MathAutomataConstructor

Bug:
  FIXME: Is it necessary to give the series as a separate argument?

Definition at line 157 of file berry_sethi.hxx.

## Member Function Documentation

bool is_initial | ( | const etiq_t & | e | ) | const`[inline]`

Whether a state is final or initial.

Definition at line 168 of file berry_sethi.hxx.

bool is_final | ( | const etiq_t & | e | ) | const`[inline]`

Whether a state is final or initial.

Definition at line 173 of file berry_sethi.hxx.

References vcsn::linear_exp_continuation(), and SELECT.