@@ -348,6 +348,7 @@ class automaton {
348
348
//
349
349
void compress () {
350
350
SASSERT (!m_delta.empty ());
351
+ TRACE (" seq" , display (tout););
351
352
for (unsigned i = 0 ; i < m_delta.size (); ++i) {
352
353
for (unsigned j = 0 ; j < m_delta[i].size (); ++j) {
353
354
move const & mv = m_delta[i][j];
@@ -460,6 +461,7 @@ class automaton {
460
461
}
461
462
}
462
463
sinkify_dead_states ();
464
+ TRACE (" seq" , display (tout););
463
465
}
464
466
465
467
bool is_sequence (unsigned & length) const {
@@ -559,9 +561,8 @@ class automaton {
559
561
template <class D >
560
562
std::ostream& display (std::ostream& out, D& displayer = D()) const {
561
563
out << " init: " << init () << " \n " ;
562
- out << " final: " ;
563
- for (unsigned i = 0 ; i < m_final_states.size (); ++i) out << m_final_states[i] << " " ;
564
- out << " \n " ;
564
+ out << " final: " << m_final_states << " \n " ;
565
+
565
566
for (unsigned i = 0 ; i < m_delta.size (); ++i) {
566
567
moves const & mvs = m_delta[i];
567
568
for (move const & mv : mvs) {
@@ -577,6 +578,22 @@ class automaton {
577
578
}
578
579
private:
579
580
581
+ std::ostream& display (std::ostream& out) const {
582
+ out << " init: " << init () << " \n " ;
583
+ out << " final: " << m_final_states << " \n " ;
584
+
585
+ for (unsigned i = 0 ; i < m_delta.size (); ++i) {
586
+ moves const & mvs = m_delta[i];
587
+ for (move const & mv : mvs) {
588
+ out << i << " -> " << mv.dst () << " " ;
589
+ if (mv.t ()) {
590
+ out << " if *** " ;
591
+ }
592
+ out << " \n " ;
593
+ }
594
+ }
595
+ return out;
596
+ }
580
597
void sinkify_dead_states () {
581
598
uint_set dead_states;
582
599
for (unsigned i = 0 ; i < m_delta.size (); ++i) {
@@ -604,7 +621,9 @@ class automaton {
604
621
}
605
622
to_remove.reset ();
606
623
}
607
- TRACE (" seq" , tout << " remove: " << dead_states << " \n " ;);
624
+ TRACE (" seq" , tout << " remove: " << dead_states << " \n " ;
625
+ tout << " final: " << m_final_states << " \n " ;
626
+ );
608
627
for (unsigned s : dead_states) {
609
628
CTRACE (" seq" , !m_delta[s].empty (), tout << " live state " << s << " \n " ;);
610
629
m_delta[s].reset ();
0 commit comments