//
// RE.html
//

template<class BASE> class RE;

template<class BASE> class re_;

template<class BASE> class re_LABEL;

template<class BASE> class re_AND;

template<class BASE> class re_OR;

template<class BASE> class re_STAR;

template<class BASE> class re_PLUS;

template<class BASE> class re_QUESTION;



template<class BASE>
class RE


public:

RE(const BASE *str);

RE(const BASE *&str, BASE terminator);

RE(re_<BASE> *re);

~RE();


boolean Null() const;

const usize States() const;


void FA(state s, state f, ordinal<state> &N, transitions<BASE> &T, transitions<BASE> &E) const;