title: Solidity ParseError: Expected primary expression
body: <p><a href="https://i.stack.imgur.com/yQ4qb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/yQ4qb.png" alt="When I compile with truffle I get this error" /></a></p>
  <p>When I am compiling with truffle it is giving me this error
  I got this error after adding payable
  prior to that it was</p>
  <pre><code>winners[j].transfer(betwa*(10000+(LoserBet*10000/WinnerBet))/10000);
  </code></pre>
  <p>I had to add it because I was getting another error
  Which was</p>
  <pre><code>TypeError: &quot;send&quot; and &quot;transfer&quot; are only available for objects of type &quot;address payable&quot;, not &quot;address&quot;.
  </code></pre>
  <p>My Complete Contract :</p>
  <pre><code>pragma solidity ^0.5.16;
  
  
  contract Betting {
     address public owner;
     uint256 public minimumBet;
     uint256 public totalBetsOne;
     uint256 public totalBetsTwo;
     address[] public players;
     struct Player {
        uint256 amountBet;
        uint16 teamSelected;
      }
  // The address of the player and =&gt; the user info
     mapping(address =&gt; Player) public playerInfo;
     function() external payable {}
   constructor() public {
        owner = msg.sender;
        minimumBet = 100000000000000;
      }
  function kill() public {
        if(msg.sender == owner) selfdestruct(msg.sender);
      }
  function checkPlayerExists(address player) public view returns(bool){
        for(uint256 i = 0; i &lt; players.length; i++){
           if(players[i] == player) return true;
        }
        return false;
      }
  
  
      function bet(uint8 _teamSelected) public payable {
        //The first require is used to check if the player already exist
        require(!checkPlayerExists(msg.sender));
        //The second one is used to see if the value sended by the player is
        //Higher than the minimum value
        require(msg.value &gt;= minimumBet);
  
        //We set the player informations : amount of the bet and selected team
        playerInfo[msg.sender].amountBet = msg.value;
        playerInfo[msg.sender].teamSelected = _teamSelected;
  
        //then we add the address of the player to the players array
        players.push(msg.sender);
  
        //at the end, we increment the stakes of the team selected with the player bet
        if ( _teamSelected == 1){
            totalBetsOne += msg.value;
        }
        else{
            totalBetsTwo += msg.value;
        }
      }
      // Generates a number between 1 and 10 that will be the winner
      function distributePrizes(uint16 teamWinner) public {
        address[1000] memory winners;
        //We have to create a temporary in memory array with fixed size
        //Let's choose 1000
        uint256 count = 0; // This is the count for the array of winners
        uint256 LoserBet = 0; //This will take the value of all losers bet
        uint256 WinnerBet = 0; //This will take the value of all winners bet
          address  playerAddress;
        //We loop through the player array to check who selected the winner team
        for(uint256 i = 0; i &lt; players.length; i++){
             playerAddress = players[i];
  
           //If the player selected the winner team
           //We add his address to the winners array
           if(playerInfo[playerAddress].teamSelected == teamWinner){
              winners[count] = playerAddress;
              count++;
           }
        }
  
        //We define which bet sum is the Loser one and which one is the winner
        if ( teamWinner == 1){
           LoserBet = totalBetsTwo;
           WinnerBet = totalBetsOne;
        }
        else{
            LoserBet = totalBetsOne;
            WinnerBet = totalBetsTwo;
        }
  
  
        //We loop through the array of winners, to give ethers to the winners
        for(uint256 j = 0; j &lt; count; j++){
            // Check that the address in this fixed array is not empty
           if(winners[j] != address(0)){
              address add = winners[j];
              uint256 betwa = playerInfo[add].amountBet;
              //Transfer the money to the user
              payable(winners[j]).transfer( (betwa*(10000+(LoserBet*10000/WinnerBet)))/10000 );
              }
        }
        delete playerInfo[playerAddress]; // Delete all the players
        players.length = 0; // Delete all the players array
        LoserBet = 0; //reinitialize the bets
        WinnerBet = 0;
        totalBetsOne = 0;
        totalBetsTwo = 0;
      }
  
      function AmountOne() public view returns(uint256){
         return totalBetsOne;
      }
  
      function AmountTwo() public view returns(uint256){
         return totalBetsTwo;
      }
  }
  </code></pre>
  <p><em>What I have tried is making the address payable in this function but It is not working I have tried to replace memory with payable but still it isn't working</em>
  My versions
  Truffle v5.4.18 (core: 5.4.18)
  Solidity v0.5.16 (solc-js)
  Node v14.15.1
  Web3.js v1.5.3</p>