107 return (d == NULL) ? 1 : d->
n_states;
119 return (d == NULL) ? 0 : d->
n_trans;
143 return ((d != NULL) && (d->
n_trans > 0)) ?
150 return ((d != NULL) && (d->
n_trans > 0)) ?
165 c_trans = &o->
trans[0];
168 c_trans = e_trans = NULL;
176 int mask = (1<<o->
n_log)-1;
183 c_trans = e_trans = NULL;
189 return c_trans < e_trans;
199 return c_trans->i_state;
204 return c_trans->symbol;
209 return c_trans->o_state;
221 c_trans = &o->
trans[0];
224 c_trans = e_trans = NULL;
230 return c_trans < e_trans;
235 int s = c_trans->symbol;
238 }
while ((c_trans < e_trans) && (s == c_trans->symbol));
243 return c_trans->symbol;
247 template<
class Char,
class Traits>
248 std::basic_ostream<Char,Traits>&
249 operator <<(std::basic_ostream<Char,Traits>& os,
const DFA&
d) {
250 std::basic_ostringstream<Char,Traits> st;
251 st.copyfmt(os); st.
width(0);
252 st <<
"Start state: 0" << std::endl
253 <<
"States: 0..." <<
d.n_states()-1 << std::endl
255 for (
int s = 0; s < static_cast<int>(
d.n_states()); s++) {
261 st << std::endl <<
"\t";
262 st <<
"[" << t.
i_state() <<
"]"
263 <<
"- " << t.
symbol() <<
" >"
270 st << std::endl <<
"Final states: "
272 <<
"\t[" <<
d.final_fst() <<
"] ... ["
273 <<
d.final_lst()-1 <<
"]"
275 return os << st.str();