17 #ifndef AWALI_STTC_WAUTOMATON_HH
18 #define AWALI_STTC_WAUTOMATON_HH
44 mutable_automaton<context<ctx::lal_char,T>>
47 return make_shared_ptr<mutable_automaton<context<ctx::lal_char,T>>>
55 mutable_automaton<context<ctx::lal_char,b>>
58 return make_automaton<b>(letters);
71 mutable_automaton<context<ctx::lan_char,T>>
74 return make_shared_ptr<mutable_automaton<context<ctx::lan_char,T>>>
82 mutable_automaton<context<ctx::lan_char,b>>
85 return make_automaton_with_epsilon<b>(letters);
89 mutable_automaton<context<ctx::lat<ctx::lan_char,ctx::lan_char>,T>>
92 return make_shared_ptr<mutable_automaton<context<ctx::lat<ctx::lan_char,ctx::lan_char>,T>>>
96 mutable_automaton<context<ctx::lat<ctx::lan_char,ctx::lan_char>,b>>
97 make_transducer(
const std::set<char>& letterA,
const std::set<char>& letterB)
99 return make_transducer<b>(letterA, letterB);
103 mutable_automaton<context<ctx::lal_char,T>>
107 throw std::runtime_error(
"json: Automaton");
111 throw std::runtime_error(
"Not a letter automaton");
113 throw std::runtime_error(
"Epsilon transitions not supported by this function");
115 for(
auto jv : *jl->
at(
"alphabet")->
array())
124 mutable_automaton<context<ctx::lal_char,b>>
126 return load_automaton<b>(is);
130 ratexpset_of<context<ctx::lal_char, T>>
138 ratexpset_of<context<ctx::lal_char, b>>
140 return make_ratexpset<b>();
144 ratexpset_of<context<ctx::lat<ctx::lan_char,ctx::lan_char>, T>>
152 ratexpset_of<context<ctx::lat<ctx::lan_char,ctx::lan_char>, b>>
154 return make_tdc_ratexpset<b>();
158 template<
typename RATEXPSET>
160 make_ratexp(RATEXPSET& ratset,
const std::string& exp) ->
typename RATEXPSET::ratexp_t
162 return parse_exp(ratset, exp,
true,
false);
165 template<
typename AUTOMATON>
170 return ratset_t(
get_rat_context(aut->context()),ratset_t::identities_t::trivial);
virtual std::string to_string() const
Coerces this node_t to an std::string.
Definition: node.hh:329
virtual object_t const * object() const
Casts this node to object_t.
Definition: node.hh:201
virtual array_t const * array() const
Casts this node to array_t.
Definition: node.hh:205
virtual bool has_child(std::string const &key) const override
Definition: node.hh:378
virtual node_t * at(std::string const &key) override
carries the algebraic settings of automata
Definition: context.hh:40
Implementation of labels are letters.
Definition: letterset.hh:43
GenSet genset_t
Definition: letterset.hh:45
Implementation of labels are nullables (letter or empty).
Definition: nullableset.hh:189
A ValueSet which is a Cartesian product of ValueSets.
Definition: tupleset.hh:80
node_t * parse(std::istream &)
auto make_ratexp(RATEXPSET &ratset, const std::string &exp) -> typename RATEXPSET::ratexp_t
Definition: automaton.hh:160
auto get_rat_context(const Context &ctx) -> context< typename labelset_trait< typename Context::labelset_t >::ratlabelset_t, typename Context::weightset_t >
Definition: traits.hh:238
RatExpSet::ratexp_t parse_exp(const RatExpSet &ratexpset, const std::string &s, bool check_complete=true, bool strict_alphabet=true)
parser of rational expressions
Definition: exp_parser.hh:425
mutable_automaton< context< ctx::lan_char, T > > make_automaton_with_epsilon(const std::set< char > &letters)
Build an awali weighted automaton labeled by letters with epsilon transitions.
Definition: automaton.hh:72
mutable_automaton< context< ctx::lal_char, T > > make_automaton(const std::set< char > &letters)
Build an awali weighted automaton labeled by letters.
Definition: automaton.hh:45
mutable_automaton< context< ctx::lal_char, T > > load_automaton(std::istream &is)
Definition: automaton.hh:104
auto get_ratexpset(AUTOMATON &aut) -> ratexpset_of< context_t_of< AUTOMATON >>
Definition: automaton.hh:167
mutable_automaton< context< ctx::lat< ctx::lan_char, ctx::lan_char >, T > > make_transducer(const std::set< char > &letterA, const std::set< char > &letterB)
Definition: automaton.hh:90
mutable_automaton< Context > js_parse_aut_content(const Context &context, json::object_t const *p)
Definition: js_parser.hh:104
void js_add_metadata(Aut &aut, json::object_t *p)
Definition: js_parser.hh:165
ratexpset_of< context< ctx::lat< ctx::lan_char, ctx::lan_char >, T > > make_tdc_ratexpset()
Definition: automaton.hh:145
ratexpset_of< context< ctx::lal_char, T > > make_ratexpset()
Definition: automaton.hh:131
Main namespace of Awali.
Definition: ato.hh:22
Provide a variadic mul on top of a binary mul(), and one().
Definition: weightset.hh:38