From 38b9e1004cdb0568151e88d214dab1c49c95615a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Pecka?= <peckato1@fit.cvut.cz> Date: Mon, 31 Mar 2014 16:15:13 +0200 Subject: [PATCH] aconversion: Use list::front() and back() instead of iterators --- .../src/fa2rg/fa2lrg/FAtoLRGConverter.cpp | 2 +- .../src/fa2rg/fa2rrg/FAtoRRGConverter.cpp | 6 +++--- .../src/rg2fa/lrg2fa/LRGtoFAConverter.cpp | 9 ++++----- .../src/rg2fa/rrg2fa/RRGtoFAConverter.cpp | 9 ++++----- aconversions/src/rg2re/lrg2re/LRGAlgebraic.cpp | 8 ++++---- aconversions/src/rg2re/rrg2re/RRGAlgebraic.cpp | 8 ++++---- .../rg2rg/lrg2rrg/LeftToRightRegularGrammar.cpp | 16 ++++++++-------- .../rg2rg/rrg2lrg/RightToLeftRegularGrammar.cpp | 16 ++++++++-------- 8 files changed, 36 insertions(+), 38 deletions(-) diff --git a/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp b/aconversions/src/fa2rg/fa2lrg/FAtoLRGConverter.cpp index 7512a2c52f..ae572db176 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 3190b40932..28b1db6147 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 53d0c68b11..81650e2418 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 9788b5f3e7..30e6ee74ed 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 deb33731f0..d7036f06c3 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 87a2b7a2d5..71c92816fe 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 cb576b7d89..80d5559eb2 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 75a62e6708..3549005164 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 ) ); } } -- GitLab