original_string: public function repair_expression( $exp )
  	{
  		$commands = explode( ' ', $exp );		
  
  		// filter empty ones
  		$commands = array_filter( $commands, function( $value ) 
  		{
  			return !is_null( $value );
  		});
  
  		// bracket starting command
  		if ( in_array( $commands[0], $this->bracket_starting_commands ) )
  		{
  			// each = foreach
  			if ( $commands[0] == 'each' )
  			{
  				$commands[0] = 'foreach';
  			}
  			// loop special
  			elseif ( $commands[0] == 'loop' )
  			{
  				$commands[0] = 'for';
  				$commands[1] = '$i=0;$i<'.$commands[1].';$i++';
  			}
  
  			// remove the opening duble point
  			end($commands); $key = key($commands);
  			if ( substr( $commands[$key], -1 ) == ':' )
  			{
  				$commands[$key] = substr( $commands[$key], 0, -1 );
  
  				// is it now empty?
  				if ( $commands[$key] == ' ' || empty( $commands[$key] ) )
  				{
  					unset( $commands[$key] );
  				}
  			}
  
  			// do we have brackets?
  			if ( substr( $commands[1], 0, 1 ) != '(' )
  			{
  				// add starting bracket
  				$commands[1] = '( '.$commands[1];
  
  				// add ending bracket
  				end($commands); $key = key($commands);
  				$commands[$key] .= ' )';
  			}
  
  			$commands[] = ':';
  		}
  		// bracket ending command
  		elseif ( count( $commands == 1 ) && in_array( $commands[0], $this->bracket_ending_commands ) )
  		{
  			// each = foreach
  			if ( $commands[0] == 'endeach' )
  			{
  				$commands[0] = 'endforeach';
  			}
  			// loop special
  			elseif ( $commands[0] == 'endloop' )
  			{
  				$commands[0] = 'endfor';
  			}
  
  			// check for semicolon
  			if ( substr( $commands[0], 0, 1 ) != ';' )
  			{
  				$commands[0] .= ';';
  			}
  		}
  		// bracket continue command
  		elseif ( count( $commands == 1 ) && in_array( $commands[0], $this->bracket_continue_commands ) )
  		{		
  			// remove the opening duble point
  			end($commands); $key = key($commands);
  			if ( substr( $commands[$key], -1 ) == ':' )
  			{
  				$commands[$key] = substr( $commands[$key], 0, -1 );
  
  				// is it now empty?
  				if ( $commands[$key] == ' ' || empty( $commands[$key] ) )
  				{
  					unset( $commands[$key] );
  				}
  			}
  
  			// add the double point
  			$commands[] = ':';
  		}
  
  		return implode( ' ', $commands );
  	}
code: public function repair_expression( $exp )
  	{
  		$commands = explode( ' ', $exp );		
  
  		// filter empty ones
  		$commands = array_filter( $commands, function( $value ) 
  		{
  			return !is_null( $value );
  		});
  
  		// bracket starting command
  		if ( in_array( $commands[0], $this->bracket_starting_commands ) )
  		{
  			// each = foreach
  			if ( $commands[0] == 'each' )
  			{
  				$commands[0] = 'foreach';
  			}
  			// loop special
  			elseif ( $commands[0] == 'loop' )
  			{
  				$commands[0] = 'for';
  				$commands[1] = '$i=0;$i<'.$commands[1].';$i++';
  			}
  
  			// remove the opening duble point
  			end($commands); $key = key($commands);
  			if ( substr( $commands[$key], -1 ) == ':' )
  			{
  				$commands[$key] = substr( $commands[$key], 0, -1 );
  
  				// is it now empty?
  				if ( $commands[$key] == ' ' || empty( $commands[$key] ) )
  				{
  					unset( $commands[$key] );
  				}
  			}
  
  			// do we have brackets?
  			if ( substr( $commands[1], 0, 1 ) != '(' )
  			{
  				// add starting bracket
  				$commands[1] = '( '.$commands[1];
  
  				// add ending bracket
  				end($commands); $key = key($commands);
  				$commands[$key] .= ' )';
  			}
  
  			$commands[] = ':';
  		}
  		// bracket ending command
  		elseif ( count( $commands == 1 ) && in_array( $commands[0], $this->bracket_ending_commands ) )
  		{
  			// each = foreach
  			if ( $commands[0] == 'endeach' )
  			{
  				$commands[0] = 'endforeach';
  			}
  			// loop special
  			elseif ( $commands[0] == 'endloop' )
  			{
  				$commands[0] = 'endfor';
  			}
  
  			// check for semicolon
  			if ( substr( $commands[0], 0, 1 ) != ';' )
  			{
  				$commands[0] .= ';';
  			}
  		}
  		// bracket continue command
  		elseif ( count( $commands == 1 ) && in_array( $commands[0], $this->bracket_continue_commands ) )
  		{		
  			// remove the opening duble point
  			end($commands); $key = key($commands);
  			if ( substr( $commands[$key], -1 ) == ':' )
  			{
  				$commands[$key] = substr( $commands[$key], 0, -1 );
  
  				// is it now empty?
  				if ( $commands[$key] == ' ' || empty( $commands[$key] ) )
  				{
  					unset( $commands[$key] );
  				}
  			}
  
  			// add the double point
  			$commands[] = ':';
  		}
  
  		return implode( ' ', $commands );
  	}
code_tokens: public function repair_expression ( $ exp ) { $ commands = explode ( ' ' , $ exp ) ; // filter empty ones $ commands = array_filter ( $ commands , function ( $ value ) { return ! is_null ( $ value ) ; } ) ; // bracket starting command if ( in_array ( $ commands [ 0 ] , $ this -> bracket_starting_commands ) ) { // each = foreach if ( $ commands [ 0 ] == 'each' ) { $ commands [ 0 ] = 'foreach' ; } // loop special elseif ( $ commands [ 0 ] == 'loop' ) { $ commands [ 0 ] = 'for' ; $ commands [ 1 ] = '$i=0;$i<' . $ commands [ 1 ] . ';$i++' ; } // remove the opening duble point end ( $ commands ) ; $ key = key ( $ commands ) ; if ( substr ( $ commands [ $ key ] , - 1 ) == ':' ) { $ commands [ $ key ] = substr ( $ commands [ $ key ] , 0 , - 1 ) ; // is it now empty? if ( $ commands [ $ key ] == ' ' || empty ( $ commands [ $ key ] ) ) { unset ( $ commands [ $ key ] ) ; } } // do we have brackets? if ( substr ( $ commands [ 1 ] , 0 , 1 ) != '(' ) { // add starting bracket $ commands [ 1 ] = '( ' . $ commands [ 1 ] ; // add ending bracket end ( $ commands ) ; $ key = key ( $ commands ) ; $ commands [ $ key ] .= ' )' ; } $ commands [ ] = ':' ; } // bracket ending command elseif ( count ( $ commands == 1 ) && in_array ( $ commands [ 0 ] , $ this -> bracket_ending_commands ) ) { // each = foreach if ( $ commands [ 0 ] == 'endeach' ) { $ commands [ 0 ] = 'endforeach' ; } // loop special elseif ( $ commands [ 0 ] == 'endloop' ) { $ commands [ 0 ] = 'endfor' ; } // check for semicolon if ( substr ( $ commands [ 0 ] , 0 , 1 ) != ';' ) { $ commands [ 0 ] .= ';' ; } } // bracket continue command elseif ( count ( $ commands == 1 ) && in_array ( $ commands [ 0 ] , $ this -> bracket_continue_commands ) ) { // remove the opening duble point end ( $ commands ) ; $ key = key ( $ commands ) ; if ( substr ( $ commands [ $ key ] , - 1 ) == ':' ) { $ commands [ $ key ] = substr ( $ commands [ $ key ] , 0 , - 1 ) ; // is it now empty? if ( $ commands [ $ key ] == ' ' || empty ( $ commands [ $ key ] ) ) { unset ( $ commands [ $ key ] ) ; } } // add the double point $ commands [ ] = ':' ; } return implode ( ' ' , $ commands ) ; }
docstring: Repair an expression
docstring_tokens: Repair an expression