public MacroCallStatement(SourceFile sourceFile, int lineNo, Token[] tokens) throws SyntaxError {
        // Super-class (Statement) constructor
        super(sourceFile, lineNo, tokens);
        
        operands = new ArrayList<Token>();
        
        // First token must be a Macrocall (Macrocalls are tokenized as Words)
        if(!tokens[0].is(TokenType.WORD)) {
            throwSyntaxError(0, "Not a macro call");
        }
        
        /* Any number of tokens after (and until the EOL token) must be tokens 
         * suitable to passing to a macro - i.e. Address's, labels or Registers */
        for(int i = 1; i < tokens.length - 1; i++){
            switch(tokens[i].getType()) {
                case ADDRESS : case LABEL : case REGISTER : case CHARACTER :
                    operands.add(tokens[i]);
                    break;
                default :
                    throwSyntaxError(i, "Unexpected operand type");
            }
        }
        
        // Last token must be an EOL token
        if(!tokens[tokens.length-1].is(TokenType.EOL)) {
            throwSyntaxError(tokens.length-1, "Expected end of line");
        }
    }