diff --git a/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp b/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp index 7512a2c52f677b222784e4a6daeb112c1a827d46..ae572db176d242a77c0ecdbd5a40259213013538 100644 --- a/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp +++ b/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp @@ -61,7 +61,7 @@ LeftRegularGrammar FAtoLRGConverter::convert( void ) for( const auto & rule : m_grammar.getRules( ) ) { - const Symbol & leftSide = * rule.getLeftSide( ).begin( ); + const Symbol & leftSide = rule.getLeftSide( ).front( ); if( isInSet( State( leftSide.getSymbol( ) ), m_fsm.getFinalStates( ) ) ) { diff --git a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp index 3190b40932bdab36e12979ab8d41b4d6ad81372e..28b1db614752ab0cba3bb37be58a63d785de688e 100644 --- a/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp +++ b/aconversions/src/fa2rg/fa2rrg/FAtoRRGConverter.cpp @@ -43,7 +43,7 @@ RightRegularGrammar FAtoRRGConverter::convert( void ) /* * Rule might already in - consider case: - * \delta(A,a) = F and \delta(B,a) = G, where both F and G are final states + * \delta(A,a) = { F, G }, where both F and G are final states */ if( ! isInSet( Rule( leftSide, rightSide), m_grammar.getRules( ) ) ) m_grammar.addRule( Rule( leftSide, rightSide ) ); @@ -54,7 +54,7 @@ RightRegularGrammar FAtoRRGConverter::convert( void ) m_grammar.setStartSymbol( symbolMap.getNonTerminal( * m_fsm.getInitialStates( ).begin( ) ) ); // step 4 - if( isInSet( State( m_grammar.getStartSymbol( ).getSymbol( ) ), m_fsm.getFinalStates( ) ) ) + if( isInSet( * m_fsm.getInitialStates( ).begin( ), m_fsm.getFinalStates( ) ) ) { // 4a if( ! m_grammar.isNonTerminalOnRightSideOfAnyRule( m_grammar.getStartSymbol( ) ) ) @@ -69,7 +69,7 @@ RightRegularGrammar FAtoRRGConverter::convert( void ) for( const auto & rule : m_grammar.getRules( ) ) { - if( *( rule.getLeftSide( ).begin( ) ) == m_grammar.getStartSymbol( ) ) + if( rule.getLeftSide( ).front( ) == m_grammar.getStartSymbol( ) ) { list<Symbol> leftSide, rightSide( rule.getRightSide( ) ); leftSide.push_back( newStart ); diff --git a/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp b/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp index 53d0c68b11dac2e3fc70d8f54623392629bc407d..81650e2418fe4e4ee92e4f14bd3aed947173fa17 100644 --- a/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp +++ b/aconversions/src/rg2fa/lrg2fa/LRGtoFAConverter.cpp @@ -33,20 +33,19 @@ FSM LRGtoFAConverter::convert( void ) if( m_grammar.isEpsilonRule( rule ) ) continue; - State current( rule.getLeftSide( ).begin( )->getSymbol( ) ); + State current( rule.getLeftSide( ).front( ).getSymbol( ) ); // if B->a => \delta(StartState,a)=B if( rule.getRightSide( ).size( ) == 1 ) { - const Symbol & input( rule.getRightSide( ).begin( )->getSymbol( ) ); + const Symbol & input( rule.getRightSide( ).front( ).getSymbol( ) ); m_automaton.addTransition( startState, input, current ); } // if B->Ca => \delta(C,a)=B else if( rule.getRightSide( ).size( ) == 2 ) { - auto rightSideIter = rule.getRightSide( ).begin( ); - State next( rightSideIter ++ ->getSymbol( ) ); - const Symbol & input = * rightSideIter; + State next( rule.getRightSide( ).front( ).getSymbol( ) ); + const Symbol & input = rule.getRightSide( ).back( ); m_automaton.addTransition( next, input, current ); } diff --git a/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp b/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp index 9788b5f3e7fc47189c31e6f84dcd60319113c9e7..30e6ee74edb6bb9d595840d145f85646754a1806 100644 --- a/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp +++ b/aconversions/src/rg2fa/rrg2fa/RRGtoFAConverter.cpp @@ -33,18 +33,17 @@ FSM RRGtoFAConverter::convert( void ) if( m_grammar.isEpsilonRule( rule ) ) continue; - State current( rule.getLeftSide( ).begin( )->getSymbol( ) ); + State current( rule.getLeftSide( ).front( ).getSymbol( ) ); if( rule.getRightSide( ).size( ) == 1 ) // if B->a => \delta(B,a)=AState { - const Symbol & input( rule.getRightSide( ).begin( )->getSymbol( ) ); + const Symbol & input( rule.getRightSide( ).front( ).getSymbol( ) ); m_automaton.addTransition( current, input, AState ); } else if( rule.getRightSide( ).size( ) == 2 ) // if B->aC => \delta(B,a)=C { - auto rightSideIter = rule.getRightSide( ).begin( ); - const Symbol & input = * rightSideIter ++; - State next( rightSideIter->getSymbol( ) ); + const Symbol & input = rule.getRightSide( ).front( ); + State next( rule.getRightSide( ).back( ).getSymbol( ) ); m_automaton.addTransition( current, input, next ); } diff --git a/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp b/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp index deb33731f0cf1fcdc59ab89e85bba7951562c887..d7036f06c30423de8de25085f6ebd533dda45d1b 100644 --- a/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp +++ b/aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp @@ -31,20 +31,20 @@ RegExp LRGAlgebraic::convert( void ) for( const auto & rule : m_grammar.getRules( ) ) { - const Symbol & leftSide = * rule.getLeftSide( ).begin( ); + const Symbol & leftSide = rule.getLeftSide( ).front( ); if( rule.getRightSide( ).size( ) == 0 ) { m_solver.addEquation( leftSide, new RegExpEpsilon( ) ); } else if( rule.getRightSide( ).size( ) == 1 ) { - const Symbol & input = * rule.getRightSide( ).begin( ); + const Symbol & input = rule.getRightSide( ).front( ); m_solver.addEquation( leftSide, new RegExpSymbol( input.getSymbol( ) ) ); } else { - const Symbol nt = * rule.getRightSide( ).begin( ); - const Symbol input = * ( std::next( rule.getRightSide( ).begin( ) ) ); + const Symbol nt = rule.getRightSide( ).front( ); + const Symbol input = rule.getRightSide( ).back( ); m_solver.addEquation( leftSide, nt, new RegExpSymbol( input.getSymbol( ) ) ); } } diff --git a/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp b/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp index 87a2b7a2d543853b9b4b37353ddba0e208abf7cf..71c92816fea4335e0ac2e13bc94f9e3142cc396e 100644 --- a/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp +++ b/aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp @@ -31,20 +31,20 @@ RegExp RRGAlgebraic::convert( void ) for( const auto & rule : m_grammar.getRules( ) ) { - const Symbol & leftSide = * rule.getLeftSide( ).begin( ); + const Symbol & leftSide = rule.getLeftSide( ).front( ); if( rule.getRightSide( ).size( ) == 0 ) { m_solver.addEquation( leftSide, new RegExpEpsilon( ) ); } else if( rule.getRightSide( ).size( ) == 1 ) { - const Symbol & input = * rule.getRightSide( ).begin( ); + const Symbol & input = rule.getRightSide( ).front( ); m_solver.addEquation( leftSide, new RegExpSymbol( input.getSymbol( ) ) ); } else { - const Symbol input = * rule.getRightSide( ).begin( ); - const Symbol nt = * ( std::next( rule.getRightSide( ).begin( ) ) ); + const Symbol input = rule.getRightSide( ).front( ); + const Symbol nt = rule.getRightSide( ).back( ); m_solver.addEquation( leftSide, nt, new RegExpSymbol( input.getSymbol( ) ) ); } } diff --git a/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp b/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp index cb576b7d89915ab004b88067310afed264375f94..80d5559eb2ca331b1feeb5e30b1b955957d1ab61 100644 --- a/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp +++ b/aconversions/src/rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp @@ -41,27 +41,27 @@ RightRegularGrammar LeftToRightRegularGrammar::convert( void ) { if( rule.getRightSide( ).size( ) == 2 ) { - list<Symbol> leftSide = { * rule.getRightSide( ).begin( ) }; - list<Symbol> rightSide = { * std::next( rule.getRightSide( ).begin( ) ), * rule.getLeftSide( ).begin( ) }; + list<Symbol> leftSide = { rule.getRightSide( ).front( ) }; + list<Symbol> rightSide = { rule.getRightSide( ).back( ), rule.getLeftSide( ).front( ) }; m_rrg.addRule( Rule( leftSide, rightSide ) ); - if( * rule.getLeftSide( ).begin( ) == m_lrg.getStartSymbol( ) ) + if( rule.getLeftSide( ).front( ) == m_lrg.getStartSymbol( ) ) { - list<Symbol> leftSide = { * rule.getRightSide( ).begin( ) }; - list<Symbol> rightSide = { * std::next( rule.getRightSide( ).begin( ) ) }; + list<Symbol> leftSide = { rule.getRightSide( ).front( ) }; + list<Symbol> rightSide = { rule.getRightSide( ).back( ) }; m_rrg.addRule( Rule( leftSide, rightSide ) ); } } else if( rule.getRightSide( ).size( ) == 1 ) { list<Symbol> leftSide = { m_rrg.getStartSymbol( ) }; - list<Symbol> rightSide = { * rule.getRightSide( ).begin( ), *rule.getLeftSide( ).begin( ) }; + list<Symbol> rightSide = { rule.getRightSide( ).front( ), rule.getLeftSide( ).front( ) }; m_rrg.addRule( Rule( leftSide, rightSide ) ); - if( * rule.getLeftSide( ).begin( ) == m_lrg.getStartSymbol( ) ) + if( rule.getLeftSide( ).front( ) == m_lrg.getStartSymbol( ) ) { list<Symbol> leftSide = { m_rrg.getStartSymbol( ) }; - list<Symbol> rightSide = { * rule.getRightSide( ).begin( ) }; + list<Symbol> rightSide = { rule.getRightSide( ).front( ) }; m_rrg.addRule( Rule( leftSide, rightSide ) ); } } diff --git a/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp b/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp index 75a62e6708a56cdfaee457d43d28b2fc80b82fad..35490051646cb43bad0ee5c55e624c7586cf1680 100644 --- a/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp +++ b/aconversions/src/rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp @@ -41,27 +41,27 @@ LeftRegularGrammar RightToLeftRegularGrammar::convert( void ) { if( rule.getRightSide( ).size( ) == 2 ) { - list<Symbol> leftSide = { * std::next( rule.getRightSide( ).begin( ) ) }; - list<Symbol> rightSide = { * rule.getLeftSide( ).begin( ), * rule.getRightSide( ).begin( ) }; + list<Symbol> leftSide = { rule.getRightSide( ).back( ) }; + list<Symbol> rightSide = { rule.getLeftSide( ).front( ), rule.getRightSide( ).front( ) }; m_lrg.addRule( Rule( leftSide, rightSide ) ); - if( * rule.getLeftSide( ).begin( ) == m_rrg.getStartSymbol( ) ) + if( rule.getLeftSide( ).front( ) == m_rrg.getStartSymbol( ) ) { - list<Symbol> leftSide = { * std::next( rule.getRightSide( ).begin( ) ) }; - list<Symbol> rightSide = { * rule.getRightSide( ).begin( ) }; + list<Symbol> leftSide = { rule.getRightSide( ).back( ) }; + list<Symbol> rightSide = { rule.getRightSide( ).front( ) }; m_lrg.addRule( Rule( leftSide, rightSide ) ); } } else if( rule.getRightSide( ).size( ) == 1 ) { list<Symbol> leftSide = { m_lrg.getStartSymbol( ) }; - list<Symbol> rightSide = { * rule.getLeftSide( ).begin( ), *rule.getRightSide( ).begin( ) }; + list<Symbol> rightSide = { rule.getLeftSide( ).front( ), rule.getRightSide( ).front( ) }; m_lrg.addRule( Rule( leftSide, rightSide ) ); - if( * rule.getLeftSide( ).begin( ) == m_rrg.getStartSymbol( ) ) + if( rule.getLeftSide( ).front( ) == m_rrg.getStartSymbol( ) ) { list<Symbol> leftSide = { m_lrg.getStartSymbol( ) }; - list<Symbol> rightSide = { * rule.getRightSide( ).begin( ) }; + list<Symbol> rightSide = { rule.getRightSide( ).front( ) }; m_lrg.addRule( Rule( leftSide, rightSide ) ); } }